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

news2024/11/24 6:45:06

     江湖好汉,休走,废了半天力气把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.coloradmin.cn/o/1690038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis主从、哨兵、cluster集群的部署和细节

目录 1. 主从模式 为什么需要主从? 搭建主从架构 2. Sentinel(哨兵)模式 为什么需要哨兵模式? 搭建哨兵集群 哨兵集群 Go语言编程redis哨兵模式 有了哨兵,客户端连接谁? test1:redis节点主从切换 test2&am…

linux内核memory model

一、背景   操作系统的一个重要功能就是管理计算机中的各种硬件资源,比如说CPU、内存、显存、串口等,其中内存是这些资源中很珍贵的部分,所以为了能把内存管理好做了很多工作。硬件内存架构是不停地发展变化的,内核中管理内存的…

Python 实现Word (DOC或DOCX)与TXT文本格式互转

目录 引言 安装Python库 使用Python将Word转换为TXT文本格式 使用Python将TXT文本格式转换为Word 引言 Word文档和TXT文本文件是日常工作和生活中两种常见的文件格式,各有其特点和优势。Word文档能够保留丰富的格式设置,如字体、段落、表格、图片等…

Flink 生态对 Confluent / Kafka Schema Registry 支持情况的研究报告

文章目录 1. Flink CDC 对 Confluent Schema Registry 的支持情况2. Confluent Avro Format 对 Confluent Schema Registry 的支持情况3. 关键性结论 这几年,在流式链路上引入一个 Schema Registry 变得越来越流行,也越来越有必要, Schema Re…

HX6203是一个完整的电池充电器控制器的两个(8.4V)电池锂离子电池芯片IC

一般描述 该HX6203是一个完整的电池充电器控制器的两个(8.4V)电池锂离子电池。HX6203为快速充电锂离子电池提供了一种小巧、简单、高效的解决方案。一个外部检测电阻以高精度设置充电电流。 内部电阻分压器和精密参考设置的最终浮动电压为8.4V时,输入…

宁盾与深信服发布联合方案,解决云桌面及微软AD完整替代

自 Citrix 退出中国市场后,不少中大型企业关心国产云桌面脱离微软 AD 域是否还能正常工作。在2024年3月初,宁盾身份目录与深信服桌面云完成兼容互认证,对于企业的疑问给出了官方回应。 5月10日,在深信服《Citrix离场背景下&#…

草图大师2024怎么保存低版本呢?插件怎么写?

草图大师是一款流行的绘图和设计软件,为了向后兼容,保存低版本文件时,可以采取以下步骤: su模型库 1.另存为旧版本格式: 在保存文件时,草图大师通常会提供一个选项,让你选择要保存的文件格式和…

plsql 学习

过程化编程语言 赋值:: ||:连接符号 dbms_output.put_line() :输出的语句 var_name ACCOUNTLIBRARY.USERNAME%type; 变量名;某个表的数据类型;赋值给变量名 用下面的方法更好用 异常exception 循…

Mixiy(米思齐)安装

Mixiy(米思齐)安装 官网地址:爱上米思齐 打开官网,选择下图的软件进行下载 复制提取码,点击链接跳转到网盘进行下载,选择(RC4完整版) 下载完成后,解压到合适的位置,进入文件夹,双击Mixly.exe即…

小程序的深层了解

一:wxss的全局样式和局部样式 写在文件上,第一个路径会执行全局和局部自带的wxss给wxml,会执行wxml,会执行json和js. 无论那个文件都会执行文件夹内的和外部的app.wxss,但是如果有一样的属性,则看属性的权重,权重一样,则设置局部样式. 二:全局配置 wx:key"写的是data内…

实操专区-第13周-课堂练习专区-折线图和阶梯图

实操专区-第13周-课堂练习专区-折线图和阶梯图 下载安装ECharts,完成如下样式图形。 代码和截图上传 基本要求:下图2选1,完成代码和截图 完成 3.1.3.12 折线图和阶梯图中的任务点 基本要求:2个选一个完成,多做1个加2分…

Linux网络——TCP协议详细讲解

目录 前言 一、TCP报头格式 1.首部长度 2.窗口大小 3.序号与确认序号 4.标志位 4.1 PSH 4.2 RST 5.紧急指针 6.TCP检验和 二、超时重传 三、连接管理机制 四、滑动窗口 五、拥塞控制 六、延迟应答 七、为什么TCP这么复杂? 前言 前面我们学习了TCP协议套接字的…

DFS:解决二叉树问题

文章目录 了解DFS1.计算布尔二叉树的值思路代码展示 2.求根节点到叶节点数字之和思路代码展示 3.二叉树剪枝思路代码展示 4.验证二叉搜索树思路分析代码展示 5.二叉搜索树中第k小元素思路:代码展示 6.二叉树的所有路径思路分析代码展示 总结 了解DFS 所谓DFS就是就…

编译qt5.15.2(mac/windows)的mysql驱动(附带编译好的文件)

文章目录 0 背景1 编译过程2 福利 0 背景 因为需要连接到mysql数据库,所以需要连mysql驱动。 1 编译过程 1,打开文件/Users/mac/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/sqldrivers.pro,注释掉QMAKE_USE mysql; 如…

宝藏网站推荐-封面图片生成器

封面图片生成器:封面图生成器 | 太空编程 (spacexcode.com)[https://spacexcode.com/coverview] 由来 最近爱上了写文案,在网上冲浪的时候发现一个宝藏网站。Spacecode,一个大神维护的个人网站,含有前端知识库、个人博客及他做…

【设计模式】JAVA Design Patterns——Commander(指挥官模式)

🔍目的 用于处理执行分布式事务时可能遇到的所有问题。 🔍解释 处理分布式事务很棘手,但如果我们不仔细处理,可能会带来不想要的后果。假设我们有一个电子商务网站,它有一个支付微服务和一个运输微服务。如果当前运输…

基于jeecgboot-vue3的Flowable增加表单功能(三)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 接上一节 10、新建表单,打开VForm3编辑页面 /*** 新增事件*/function handleAdd() {designer.open true;nextTick(() > {reset();vfDesignerRef.value.clearDesigner();}…

R实验 基础(四)

实验目的: 掌握R对数据文件的读、写操作;了解R基础包中的数据集及相关的操作。 实验内容: 读取纯文本文件。在R语言基础包中,有两个函数可以使用: read.table()函数(包括read.csv()函数) 只…

【html】网页布局模板01---简谱风

模板效果: 这是一种最简单,最干净的一种网页布局。 模板介绍: 模板概述: 这个模板是一个基础的网页布局模板,包括一个头部区域(header),其中包含网站标题(logo)和导航菜单(nav),以及一个页脚区域(copy),用于显示版权信息。整体布局简洁明了,适合作为各种类…

TypeScript-搭建编译环境

搭建编译环境 TypeScript 编写的代码是无法直接在js引擎( 浏览器 / Nodejs )中运行的,最终还需要经过编译成js代码才可以正常运行 搭建手动编译环境 1️⃣ 全局安装 typescript 包(编译引擎) -> 注册 tsc 命令 npm i -g typescript 2…