点云数据切片及使用threejs加载

使用Three.js实现web端显示点云 Three.js实现web端显示点云 阅读详情
AI摘要

本文围绕点云数据加载展开,测试了2.94G点云数据。介绍了多种加载方式,如Cesium通过cesiumlab切片后用3Dtiles API加载;Three.js支持pcd格式,处理时可能需抽稀;Potree加载las需用自带工具转换格式;Three.js+potree - core则先将las转为octree格式,再动态加载。

测试点云数数据大小 2.94G

cesium 加载:

数据处理:cesiumlab 点云切片->cesium 3Dtiles API 加载

threejs 加载

只支持 pcd 格式,故将 lsa 数据导入,在导出为了 pcd,在将数据直接转出 pcd 会直接闪退,不知是不是数据量的问题,还是电脑问题,然后试了下数据抽稀,在转化导出 200 多 M,然后直接加载,没有做 lod

Potree 加载 las

https://github.com/potree/potree
通过自带 Octree 优化加载性能

因为使用 Potree 加载的点云数据需要八叉树索引,而默认的 las 是没有构建有的(在软件上可视化时是会默认自动构建并可视化),所以需要对其进行转化为此库需要使用的相应的格式需要使用此库中自带的工具PotreeConverter 来转换
image.png
转换后的数据如上,原理类似于 3Dtiles 文件的组织

threejs+potree-core 切片加载

three.js 加载点云切片数据
在这里插入图片描述

实现原理是是先使用 potree 的八叉树索引构建工具将 las 数据转化为 octree 数据格式,然后使用网络 potree-core 库(potree 简化版),并实在 three 中通过八叉树索引加载点云动态加载,代码修改参考于 potree-core 的示例代码库。

<template>
  <canvas id="gl"></canvas>
</template>
<script setup>
import GUI from "lil-gui";
import {
     
     
  AmbientLight,
  AxesHelper,
  DirectionalLight,
  BoxGeometry,
  Clock,
  GridHelper,
  LoadingManager,
  SpotLight,
  SpotLightHelper,
  Mesh,
  MeshLambertMaterial,
  MeshStandardMaterial,
  PCFSoftShadowMap,
  PerspectiveCamera,
  PlaneGeometry,
  Vector3,
  MeshBasicMaterial,
  PointLight,
  PointLightHelper,
  Scene,
  WebGLRenderer
} from "three";
import {
     
     OrbitControls} from "three/examples/jsm/controls/OrbitControls";
import Stats from "three/examples/jsm/libs/stats.module";
import {
     
     PCDLoader} from "three/examples/jsm/loaders/PCDLoader.js"; // 注意是examples/jsm
import * as animations from "./utils/threeUtils/animations";
import {
     
     resizeRendererToDisplaySize} from "./utils/threeUtils/responsiveness";
import {
     
      PointCloudOctree, Potree } from 'potree-core'

import {
     
     onMounted, onUnmounted} from "vue";

const animation = {
     
     enabled: false, play: true};

let canvas;
let renderer;
let scene;
let loadingManager;
let ambientLight;
let pointLight;
let spotLight;
let directionalLight;
let cube;
let camera;
let cameraControls;
// let dragControls;
let axesHelper;
let pointLightHelper;
let spotLightHelper;
// let cameraHelper
let clock;
let stats;
let gui;
let points;
let pointClouds;
const potree = new Potree();

onMounted(() => {
     
     
  init();
  animate();
});

onUnmounted(() => {
     
     
  destroy();
  if (stats.dom && stats.dom.parentElement) {
     
     
    stats.dom.parentElement.removeChild(stats.dom);
  }
});

const init = () => {
     
     
  // renderer&&scene
  {
     
     
    canvas = document.querySelector("#gl");
    renderer = new WebGLRenderer({
     
     
      canvas, 
      antialias: true, 
      alpha: true,
      logarithmicDepthBuffer: false,//对数深度缓冲区
      precision: 'highp',//渲染精度
      premultipliedAlpha: true,
从零开始:用 three.js和vue3封装一个高效的点云渲染器 封装一个three.js 渲染点云文件组件 阅读详情

相关推荐

将点云数据添加到threeJS的场景中

将点云数据渲染到threejs的场景中

AKxiaokui的博客 1925

Three.js 加载 LAS 点云数据的完整解析与性能优化实践

Three.js 加载 LAS 点云数据的完整解析与性能优化实践

m0_51244077的博客 448

Three.js点云数据导入与展示

在本文中,我们将探讨如何使用Three.js库来导入和展示点云数据。点云是由大量离散的点构成的三维几何数据集,通常用于表示物体的形状、位置和表面信息。然后,我们解析坐标数据并创建点云几何体,最后将其添加到场景中进行渲染。至此,我们已经完成了基于Three.js的点云数据导入和展示过程。运行你的代码,并确保点云数据文件路径正确,你将能够在浏览器中查看到点云数据的可视化效果。通过使用Three.js库,我们可以轻松地导入和展示点云数据。然后,我们使用这些点的集合创建点云几何体,并设置点云的材质。

QfcaLinux的博客 1721

【CesiumJS入门】(11)加载LAS点云数据

本篇将从数据获取到加载来简易地介绍LAS点云数据的加载。

ReBeX 3389

three-loader:基于Potree核心部分的ThreeJS点云加载器

自述文件 该项目基于的核心/加载部分,转换为Typescript,可直接在基于ThreeJS的第三方应用程序中使用。 该项目仅专注于将点云加载到ThreeJS应用程序中,而不尝试提供Potree中可用的其他功能:土方控件,测量工具,高程剖面等。 如果您需要这样的辅助组件/工具,我们将绝对欢迎您的贡献,有可能作为PNext组织下另一个项目的一部分。 当然,也欢迎大家提出更好/更轻松的API或新功能以及PR的建议! 用法 import { Scene } from 'three' ; import { PointCloudOctree , Potree } from '@pnext/three-loader' ; const scene = new Scene ( ) ; // Manages the necessary state for loading/updating one or

别再死记硬背了!用LTspice和Simulink仿真,5分钟搞懂巴特沃斯、切比雪夫、贝塞尔滤波器的区别

本文通过LTspice和Simulink仿真工具,直观对比了巴特沃斯、切比雪夫和贝塞尔滤波器的特性差异。从通带波纹、过渡带陡峭度到相位线性度,详细解析了三种经典滤波器的设计哲学与应用场景,帮助工程师和学生快速掌握滤波器选型技巧,提升电路设计效率。

weixin_33910191的博客 523

Power Automate 最常用的十大场景以及解决方案

3.2 获取指定主题含有附件邮件,然后读取csv附件内容,插入数据库,调度执行存储过程,最后通过Power automate 发送paginated report 特殊格式报表给发件人。Power Automate 作为微软推出的自动化工作流工具,其适用场景非常广泛,尤其在数据库查询自动化方面能显著提升效率。2.8发送邮件,把生成csv文件当作附件,把生成html当作邮件内容在邮件boty展示。3.1 读取数据库数据,定时发送预警邮件并抄送附件和展示内容在邮件中。:已有微软产品栈,需快速实现部门级自动化。

qq_24388807的博客 3683

中国境内及周边2839个站点的日降水量逐日降水数据集(1961-2022,0.1°/0.25°/0.5°)1、数据年份:1961-2022,日数据2、数据范围:中国境内及周边2839个站点的日降

CHM_PRE数据集基于中国境内及周边1961至今共2839个站点的日降水观测,在传统的“降水背景场+ 降水比值场”的数据集构建思路上,尝试应用月值降水约束和地形特征校正,并依据中国范围内约4万个高密度站点2015–2019年的日降水量插值后数据进行精度评价。

yushibing717的博客 2784

LVDS系列23:Xilinx Ultrascale系ISERDESE3原语(一)

当FIFO_RD_CLK与CLKDIV对齐时,也就是Latency With Late FIFO Empty情况时,延迟比前一种情况长一个FIFO_RD_CLK时钟周期,也就是在FIFO_RD_CLK上升沿后一点,CLKDIV才成功驱动完FIFO_EMPTY的变化,于是读侧要得到FIFO_EMPTY为0的情况则要等到下一个FIFO_RD_CLK的上升沿采集时;IS_CLK_INVERTED、IS_CLK_B_INVERTED设置CLK和CLK_B是否反转,一般情况下设置0;

weixin_38828382的博客 899

Linux服务器 离线安装oracle

Linux服务器 离线安装oracle

xie_bro的博客 4252

使用libx265对YUV进行h265编码

使用libx265对YUV进行h265编码

Embedded engineer 3075

通讯软件002——快速使用modscan进行modbus调试

快速使用modscan进行modbus调试

zhouwl72的博客 1031

信息传输仿真:卫星通信系统仿真_(12).基于SystemVue的卫星通信仿真

SystemVue是Cadence公司开发的一款用于系统级设计和仿真的软件工具。它主要用于无线通信系统的设计和验证,特别是在卫星通信、雷达、射频和微波通信等领域。SystemVue提供了一个集成的环境,用户可以通过拖拽和连接各种预定义的模块来构建复杂的通信系统模型,从而进行性能分析和优化。

2401_87715305的博客 1369

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: Draco点云压缩测试
下一篇: React Three Fiber快速入门
seeooco
博客等级 码龄6年 188粉丝 54原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seeooco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值