Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 剔除点云中的遮挡点_C++_Opengl_3d_Point Clouds - Fatal编程技术网

C++ 剔除点云中的遮挡点

C++ 剔除点云中的遮挡点,c++,opengl,3d,point-clouds,C++,Opengl,3d,Point Clouds,我有一个3d点云图像(见下文) 我想剔除理论上在其他点后面的所有点(例如,人背部周围的点不可见,因为它被胸部和腹部周围的点阻挡) 我如何去解决这个问题 我所需要的只是从正面看不受阻碍的点,这样我就可以将其用于其他目的 编辑:它不是真正用于查看目的。我正在尝试仅隔离无障碍顶点,以便稍后计算曲面法线,以便提取深度图像特征 如何使用点的纹理渲染多边形网格?另一种方法是将多边形网格渲染到z缓冲区(您只需要深度),并使用它丢弃网格后面的点(远点将无法通过z测试)。您不能用点遮挡某些东西-它没有维度 如果您

我有一个3d点云图像(见下文)

我想剔除理论上在其他点后面的所有点(例如,人背部周围的点不可见,因为它被胸部和腹部周围的点阻挡)

我如何去解决这个问题

我所需要的只是从正面看不受阻碍的点,这样我就可以将其用于其他目的

编辑:它不是真正用于查看目的。我正在尝试仅隔离无障碍顶点,以便稍后计算曲面法线,以便提取深度图像特征


如何使用点的纹理渲染多边形网格?另一种方法是将多边形网格渲染到z缓冲区(您只需要深度),并使用它丢弃网格后面的点(远点将无法通过z测试)。

您不能用点遮挡某些东西-它没有维度

如果您有一个网格(即,您知道哪些点“连接”到哪些点),则可以隐藏该网格后面被遮挡的对象


如果您不这样做,我所知道的实现类似您要求的效果的最简单技巧是使用z相关淡入-只需在后部使点变得更模糊。

为什么需要曲面法线来提取深度?不是提取深度,而是使用曲面法线作为深度图像的特征。这更像是一个计算机视觉的东西。我正在使用一些OBJ模型来临时模拟从Kinect获得的点云数据。由于它是一个深度传感器,Kinect只能获取对象的前部。您可以将网格法线渲染为碎片颜色(R G B)深度为alpha到纹理,并从中查找随机点,或者应用CONTIAN 1和0的掩码,并在其上加上着色器输出,这样你就可以用点而不是实心的表面来获得纹理。如果你需要举例说明如何提取正常和深度,如果你考虑线条(光线),就把它放在纹理谷歌上。在您的视角和模型中的一个点之间,该线中的所有点不是都会被最接近相机模型的点“遮挡”吗?@ruimarkes,前提是它们完全在线,但一个点的大小为零,因此不能真正遮挡任何东西。当然,我猜OP是指被其他点定义的曲面遮挡的点。因为如果你想要深度图像,你只对离视点最近的曲面感兴趣。想象一个机器人避开障碍物,你希望它避开墙面,而不是隔壁房间的墙的另一端。。