有没有办法从渲染的3D场景中提取点云(使用OPENGL)?
详细信息:
输入应该是渲染的3D场景。
输出应该是例如具有顶点(x,y,z)的三维数组。
任务可能还是不可能?
答案 0 :(得分:2)
现在,您可以使用OpenGL从传统几何体中采集点云。除了从GPU到主机的回读之外,这将非常快。
进一步说明:
答案 1 :(得分:1)
如果我理解正确,您想要解构3D场景的最终渲染(2D)。通常,OpenGL没有内置的功能来执行此操作。
然而,有许多论文描述了分析2D图像以生成3D表示的方法。这就是Microsoft Kinect在某种程度上所做的事情。查看以前版本的SIGGRAPH中提供的论文作为起点。许多实现可能利用GPU(OpenGL,DirectX,CUDA等)来实现他们的魔力,但就是这样。例如,用于识别对象的可见边缘和直方图函数的边缘检测滤波器可以在GPU上运行。根据您的应用程序域,您可能处于几乎不可能的状态,或者可能存在可用于识别形状和顶点的快捷方式。
我认为您可能对OpenGL渲染的工作方式存在误解。 应用程序生成并向OpenGL发送形成多边形和3d对象的三角形顶点。然后,OpenGL对这些对象进行光栅化(即转换为像素),以便从具有特定视野的特定视点形成3d场景的2D渲染。当你说你想要检索顶点的“点云”时,你很难理解你想要的东西,因为你首先负责产生这些顶点!
答案 2 :(得分:1)
我认为您应该获取输入数据并手动将其乘以转换和模型视图矩阵。不需要使用OpenGL,只需要一些矢量/矩阵数学。