Potree:大规模点云渲染

前言

Potree 是基于 WebGL 的开源大规模点云渲染器,其由维也纳工业大学计算机图形与算法研究中心(Institute of Computer Graphics and Algorithms, TU Wien)开发。官网点击这里:Potree
根据相关论文以及展示的介绍,其支持 Billion 级别点云数据的渲染,一个复杂场景渲染示例如下图所示:
CA13

点云数据中本身仅仅包含多个点数据,对于较小规模的点云数据,只需要依次使用面或者点等方式将其全部渲染出来。但是面对较大数据量的点云,就需要考虑许多随之而来的问题:

  • 内存限制:以基于 V8 引擎为例,32 位机器可使用内存约为 0.7 GB,64 位机器可使用内存约为 1.4 GB。而渲染完整的 1 Billion 无 RGB 信息的点云数据就需要超过 22 GB 的内存进行存储(对于 JavaScript
  • 21
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
可以使用VTK来显示pcl::PointCloud<pcl::PointXYZ>::Ptr类型的点云。以下是一个简单的示例代码: ```cpp #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindowInteractor.h> #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::io::loadPCDFile<pcl::PointXYZ>("your_point_cloud.pcd", *cloud); vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New(); for (size_t i = 0; i < cloud->points.size(); ++i) { points->InsertNextPoint(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z); } vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New(); polyData->SetPoints(points); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputData(polyData); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow); renderWindow->Render(); interactor->Start(); return 0; } ``` 在这个例子中,我们使用vtkSmartPointer来管理VTK对象的生命周期。首先,我们加载了一个pcl::PointCloud<pcl::PointXYZ>::Ptr类型的点云。然后,我们将点云数据复制到VTK的vtkPoints对象中。接下来,我们使用vtkPolyDataMapper和vtkActor对象将vtkPoints对象中的点云数据可视化。最后,我们创建了一个vtkRenderWindowInteractor对象,它允许用户与渲染窗口进行交互,并启动了渲染窗口的事件循环。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值