我正试图找出一种方法来确定使用投影进行预处理的3D网格遮挡。
对于凸面甚至凹面网格,一切都很好,问题在于包含孔(圆环,茶杯手柄等)的网格。问题是如何在3D网格中投影甚至确定一个洞,用于确定背后物体的可见性。
例如,如果我投影剪切立方体的所有三角形,我会得到这样的结果: Cutout Cube
然后有一个多边形,如果在立方体后面不被遮挡,即使所有点都在网格内。 Non-Occluded Overlap
如何确定多边形/三角形是否与带孔的三角形网格完全重叠?
有没有办法快速计算整个投影网格是否与另一个重叠?
我想避免使用像z-buffer这样的东西。
答案 0 :(得分:0)
通常,这是通过维持辅助低分辨率保守^光栅化来完成的。如果你绝对希望它是基于矢量的,你可以检查投影轮廓^^是否相交,如果没有,检查遮挡物的任何一点是否在遮挡物的投影内。如果他们相交,那么就没有遮挡。 也就是说,我认为没有孔的一般非凸网格也不是微不足道的,因为咬合方式C和O之间的差别很小,例如,除了C(有可能任意小)的区域,C有一个断点
^"保守"意味着如果触摸了像素的任何部分,则标记的整个像素
^^轮廓仅由前向和后向三角形之间的边缘组成。理想情况下,人们还应该剪切可能的内部轮廓,但这在分析上是非常昂贵的,并且它可能是接受错误非遮挡的更好解决方案。