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.mzph.cn/diannao/14921.shtml

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

相关文章

#P0564. 数组元素查找升级版

问题描述 给你 n 个数,再给你一个数 k,查找 k 在这 n 个数中第一次出现的位置(从 0 开始计数),不存在输出 No。 输入 多组测试数据,对于每组测试数据: 第一行输入一个整数 n (1 ≤ n ≤ 100…

深入理解Vue 3中的v-if和v-for指令

Vue.js是一款流行的JavaScript框架,其简洁的语法和强大的功能使得前端开发变得更加高效和愉快。在Vue 3中,我们看到了许多新的特性和改进,其中包括了两个最常用的指令之一:v-if和v-for。 1. v-if指令 v-if指令是Vue中最常用的条件…

eclipse配置JDK和Tomcat

eclipse配置JDK jdk配置 配置JDK: 首先,确保JDK已经安装并配置了环境变量。这包括设置JAVA_HOME环境变量,指向JDK的安装目录,以及更新CLASSPATH和PATH环境变量以包含JDK的bin目录。 在Eclipse中,通过Window > Pre…

【Verilog编程题】

20240514 20240515 20240516 题目时序有问题,valid_b在第六位数据的同时拉高,而不是在下一个时钟 20240517 module valid_ready( input clk , input rst_n , input [7:0] data_in , input valid_a , input ready_b , output ready_a , output re…

使用 PyTorch 和 Pandas 进行 Kaggle 房价预测

文章目录 1、环境设置2、数据下载3、数据预处理4、模型构建5、训练和验证6、训练模型并生成预测结果7、完整代码 在本篇博文中,我们将探索如何使用 PyTorch 和 Pandas 库,构建一个用于 Kaggle 房价预测的模型。我们将详细讨论数据加载、预处理、模型构建…

vue注册自定义指令

在 Vue 中,可以通过全局或局部注册自定义指令。下面是一个简单的示例,演示如何在 Vue 中注册一个自定义指令。 首先,我们需要定义一个自定义指令。在 Vue 中,自定义指令可以通过全局或局部注册,并在元素上绑定特定的行…

LaTeX 2022软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! LaTeX 2022是基于ΤΕΧ的一种排版系统,特别适用于生成科技和数学文档的高质量打印。它可用于各种文档类型,从简单信函到完整…

Java进阶学习笔记2——static

static: 叫静态,可以修饰成员变量、成员方法。 成员变量按照有无static修饰,分为两种: 类变量:有static修饰,属于类,在计算机中只有一份,会被类的全部对象共享。静态成员变量。 实…

即时通讯ICQ将于2024年6月26日起关闭

即时通讯鼻祖ICQ 将于2024年6月26日起停止服务。 背景 ICQ则是由以色列的Mirabilis公司开发,ICQ发布后不久,腾讯发布了中国版QQ,当时界面和概念上非常类似ICQ,同时期还有微软MSN。 那个时候很多人都认为QQ肯定竞争不过ICQ和MSN&…

慢性乙型肝炎肝脏剪切波弹性成像的深度学习放射学显著改善了肝纤维化的诊断性能 | 文献速递-深度学习结合影像组学

慢性乙型肝炎肝脏剪切波弹性成像的深度学习放射学显著改善了肝纤维化的诊断性能 | 文献速递-深度学习结合影像组学 麦田医学 美好事物中转站 2024-05-21 11:03 Title 题目 Deep learning Radiomics of shear wave elastography significantly improved diagnostic performa…

面试准备-项目【面试准备】

面试准备-项目【面试准备】 面试准备自我介绍:项目介绍: 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别为什…

《我的阿勒泰》观后感(二、返璞归真也是一种美)

看了李娟的小说《我的阿勒泰》逐渐悟到一个道理,返璞归真也是一种美,没必要每个人的人生三十年的年华,都去追求房子,车子等逐渐贬值的东西。人究竟应该追求怎样的一种活法? 什么是城市化?这是我听到的最好…

UniApp 2.0可视化开发工具:引领前端开发新纪元

一、引言 在移动互联网迅猛发展的今天,移动应用开发已经成为前端开发的重要方向之一。为了简化移动应用开发流程,提高开发效率,各大开发平台不断推出新的工具和框架。UniApp作为一款跨平台的移动应用开发框架,自诞生以来就备受开…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十八)- JUC(4)

线程安全分析 成员变量和静态变量是否线程安全? 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全如果有读写操作,则这段代码是临界区…

Java之设计模式

概述 设计模式就是经过我们开发人员通过长时间的开发实践得出的一种开发模式,目的就是在开发过程中降低代码耦合度,提高代码可复用性/扩展/维护。目前主要有23种设计模式,分为创建型模式、行为型模式、结构型模式。本文列举了实际项目中使用到的设计模式,包括单例模式、策略模…

分布式和集群区别

分布式 分布式的主要工作是分解任务,将职能拆解,多个人在一起做不同的事 集群 集群主要是将同一个业务,部署在多个服务器上 ,多个人在一起做同样的事

GPT-3:自然语言处理的预训练模型

自然语言处理(NLP)领域近年来取得了显著的进步,特别是预训练模型的引入,彻底改变了我们与计算机交互和处理自然语言的方式。在这些模型中,GPT-3(Generative Pre-trained Transformer 3)无疑是最…

Spring常见注解

Spring常见注解 1. 概述2. DI(依赖注⼊)相关注解2.1 Autowired2.2 Bean2.3 Qualifier2.4 Required (很少使用)2.5 Value2.6 Lazy2.7 Profile 1. 概述 我们都知道Spring最核心的特性就是IOC(控制反转) AOP&…

PySODEvalToolkit 使用笔记

1. 克隆仓库 首先,克隆PySODEvalToolkit仓库到你的本地机器: git clone https://github.com/lartpang/PySODEvalToolkit.git2. 创建虚拟环境 cd PySODEvalToolkit conda create -n pysodeval python3.73. 安装依赖 pip install -r requirements.txt4…