当前位置: 首页 > news >正文

pcd点云江湖之处处碰壁:点云文件pcd加载02

     江湖好汉,休走,废了半天力气把threejs自带的代码搬迁到自己项目中了,高高兴兴给领导看。领导一句话,顿时无奈:领导曰:点云单色太丑,能不能按照分类展示?
一句话难道英雄好汉,妈呀,全部白费,去整理资料,问问gpt 去。
点云文件pcd基础介绍-CSDN博客

pcd点云江湖之初探江湖:点云文件pcd加载01-CSDN博客

通过资料梳理大概对点云分类有所了解:

1)利用three自带的,肯定不太容易实现

2)自定义着色器,要求一定的功底

3)希望之光,potree 源码分析

进行整体思考后,发现基于potree 源码,提取相关的参数,是最靠谱的路子,当然,你非得自己写,我也不拦着,好汉牛掰掰,开个玩笑,主要看自己对哪方面熟悉!!

我这里主要 讲解 potree 源码拆分 提取 。

关键技术:PointCloudMaterial,Points

我们需要定义那些内容那: 

 /*** PCD点云图层* @param {string} name  名字* @param {Object} opts 配置参数* @param {string} opts.pointColorType 点云样式 default:INTENSITY_GRADIENT,可选参数:INTENSITY_GRADIENT、HEIGHT* @param {string} opts.gradient 颜色梯度 default:GREY ,可选参数如下: RAINBOW、BLUE_GREEN_YELLOW_RED、BLUE_WHITE_RED、RED_WHITE 、* RED_YELLOW、SPECTRAL、PLASMA、YELLOW_GREEN 、VIRIDIS 、INFERNO 、GRAYSCALE 、GREY 、BLUE 、GREYS 、YELLOW 、RED 、CYAN 、GREEN;* @param {number} opts.size  默认 1* @param {number} opts.intensityGamma 默认 0.5* @param {number} opts.intensityContrast  默认 0.4* @param {number} opts.intensityBrightness  默认 0.3* @param {Array} opts.intensityRange  默认 [0,255]* @param {Array} opts.customGradient 如果gradient颜色梯度带默认值不满足条件,可以自由配置*/
  /*** 获取渐变颜色数组* @private* @param {string | [number, string][]} type - 渐变类型或自定义渐变点数组* @returns {[number, THREE.Color][]} - 渐变颜色数组*/getGradient(type) {// 使用默认的渐变类型if (!type) return Gradients.GREY;// 如果 type 是字符串且存在于 Gradients 中,直接返回if (typeof type === "string" && Gradients[type]) {return Gradients[type];}// 如果 type 是数组,则创建自定义渐变if (Array.isArray(type)) {const arr = type.map(([value, color]) => [value, new THREE.Color(color)]);// 如果只有一个渐变点,直接返回从0到1的渐变if (arr.length === 1) {return [[0, arr[0][1]],[1, arr[0][1]],];}return arr;}// 如果 type 是有效的颜色字符串,则创建简单的渐变const color = new THREE.Color(type);return [[0, color],[1, color],];}

代码内容太多,我还是主要写思路吧:

第一步:创建点云类

第二步:获取点云文件的数据

第三步:解析点云的数据,将数据转换为potree可以识别的数据

第四步:将数据组装成geometry 

第五步:利用 PointCloudMaterial 着色

第六步:  viewer.scene.scene.add(pcdLayer);

里面的核心技术,还是将数据如何解析到potree认识的数据,可以研究potree自带的加载方法 

我不是成为工具人。

这就是我,一个喜欢发问和思考的老码农!
技术交流: QQ 2945853209

web3d技术分享:产品列表icon-default.png?t=N7T8https://threelab.cn/#/

http://www.lryc.cn/news/351717.html

相关文章:

  • 【SQL国际标准】ISO/IEC 9075:2023 系列SQL的国际标准详情
  • 15.1数组练习题
  • Flink 任务调度策略:Lazy from Sources 深入解析
  • 【NumPy】关于numpy.reshape()函数,看这一篇文章就够了
  • 探寻最强性能云电脑:ToDesk云电脑、无影云、网易云游戏、易腾云横测大比拼
  • 回溯法——(2)n皇后问题(C语言讲解)(LeetCode51 N皇后思想)(4皇后棋盘画图举例)(附代码)
  • 数据库系统概论(第5版)复习笔记
  • 数仓领域,Serving 是什么概念?
  • Python筑基之旅-MySQL数据库(三)
  • (全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令
  • 软考 软件设计师 场景分析题 速成篇
  • [学习笔记](Python3)防止SQL注入、XSS攻击和文件上传漏洞
  • 西门子CPU与汇川伺服通信与控制
  • 移动硬盘无法读取怎么修复?简单八步,轻松搞定!
  • c4d云渲染是工程文件会暴露吗?
  • C语言/数据结构——每日一题(有效的括号)
  • STM32使用旋转编码开关
  • OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
  • 爬虫视图展示之 Power BI
  • 微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
  • 抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具
  • 类的组合、作用域与可见性、类的静态成员、单例模式、
  • 高速公路定向广播(声光一体) HT-600D
  • 2024离婚新规已生效,不用等30天冷静期,线上开庭
  • 从零搭建python环境:深入解析虚拟环境与Python版本管理
  • windows安装官方正版notepad++
  • netty-socketio 集群随记
  • 查看目录或文件的磁盘使用情况
  • 如何选择合适的自动化框架
  • Java面试进阶指南:高级知识点问答精粹(二)