首页 文章

VTK - 计算渲染场景的点 Cloud

提问于
浏览
1

我使用VTK渲染器渲染三角网格(polydata) . 我想获得渲染场景的3D点 Cloud (相对于相机) .

我找到了一个类似的片段,PCL library中的类似内容使用VTK作为其可视化工具 .

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

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

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

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

2 回答

  • 0

    渲染器将转换显示< - >世界坐标 . 查看类 vtkViewport 的方法: SetDisplayPoint()DisplayToWorld()GetWorldPoint() . 此API使用齐次坐标 . 查看任何vtk小部件的来源 - 在交互期间,显示坐标将转换为世界坐标 .

    但是如果你想要获得一个点在表面上的坐标,你真的想要一个 vtkPointPickervtkCellPicker . 查看这些类的示例和测试 .

  • 0

    我一直在研究同样的问题 . 我正在使用vtk的python绑定,但我认为你会对this question that I recently posted.中的方法 RequestData() 感兴趣 . 我的问题是关于管道执行而不是关于投射点 .

    mirni的答案肯定有效,但是如果你为每个像素做这个,那么你将为每个像素做额外的两个矩阵创建,矩阵乘法和矩阵乘法 .

    按照我在方法中的方式进行操作,在300x300窗口上保存了大约16秒 .

相关问题