c++ - VTK - 计算渲染场景的点云

标签 c++ 3d vtk

我使用 VTK 渲染器渲染三角网格(多数据)。我想获得渲染场景的 3D 点云(相对于相机)。

我在 PCL library 中找到了一个类似的片段,其中做类似的事情它使用 VTK 作为其可视化工具。

我在我的代码中实现了 PCL 功能,我设法获得了相同的结果(3D 点云)。 然而,我发现了一个我不知道从哪里开始解决的问题:

  • 对于在 z 缓冲区中应该具有有效深度值的点,返回 1(我相信它是默认设置值意味着不是有效点)。

我尝试使用裁剪平面(也称为 nearz/farz),但没有任何改进。

更新: 问题解决了,这是因为我忘记了 VTK 定义的图像坐标与传统坐标不同。在 VTK 中,原点是左下角而不是左上角。

最佳答案

渲染器将转换显示 <--> 世界坐标。查看类 vtkViewport 的方法:SetDisplayPoint()DisplayToWorld()GetWorldPoint()。 该 API 使用齐次坐标。查看任何 vtk 小部件的源代码——在交互过程中,显示​​坐标会转换为世界坐标。

但是如果您试图获取位于表面上的点的坐标,您确实需要 vtkPointPickervtkCellPicker。查看这些类的示例和测试。

关于c++ - VTK - 计算渲染场景的点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591189/

相关文章:

c++ - 如何将 C++ 代码中的枚举转换为 C

c++ - 如何实例化 const typedef 指针?

c++ - 启动第二个 Linux 程序并从 C/C++ 退出当前程序?

c# - 沿 3d 向量查找点

python - 同时显示多个vtk渲染窗口

c++ - Visual Studio 预处理器仅在设置了/P 时才有效

3d - 在工程应用程序中进行实时 3D 渲染的最佳方法是什么?

javascript - 在没有轨迹球控件或其他相机控制库的情况下在 threeJS 中缩放相机

c++ - 如何将paraview源码编译成Qt工程(.pro)?