VTK-计算渲染场景的点云
VTK - calculate point cloud for a renderered scene
我使用VTK渲染器渲染三角网格(多数据)。我想要获得渲染场景的3D点云(相对于摄影机)。
我在PCL库中发现了一个类似的片段,该库使用VTK作为可视化工具。
我在代码中实现了PCL函数,并设法获得了相同的结果(3D点云)。然而,我发现了一个我不知道从哪里开始解决的问题:
- 对于z缓冲区中应该具有有效深度值的点,返回1(我认为这是默认设置值,意味着不是有效点)
我试着玩剪切平面(也称为nearz/farz),但没有任何改进。
更新:问题解决了,因为我忘记了VTK定义的图像坐标与传统坐标不同。在VTK中,原点是左下角,而不是左上角。
渲染器将变换显示<-->世界坐标。查看类vtkViewport
的方法:SetDisplayPoint()
、DisplayToWorld()
、GetWorldPoint()
。此API使用齐次坐标。查看任何vtk小部件的来源——在交互过程中,显示坐标会转换为世界坐标。
但是,如果你想得到一个位于曲面上的点的坐标,你真的想要一个vtkPointPicker
或vtkCellPicker
。看看这些类的例子和测试。
我一直在处理同样的问题。我使用的是vtk的python绑定,但我想您会对我最近发布的这个问题中的方法RequestData()
感兴趣。我的问题是关于管道执行,而不是关于投影点。
mirni的答案肯定有效,但如果你对每个像素都这样做,你将额外创建两个矩阵,一个矩阵相乘,每个像素一个矩阵乘法。
按照我在方法中所做的方式,在300x300的窗口上节省了大约16秒。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- Qt VTK交互风格的信号到小部件
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- VTK-计算渲染场景的点云
- 从vtk渲染计算摄影机空间坐标
- 如何使用vtk实时可视化在另一个线程中运行的计算