OpenGL:隐藏边在薄零件后面可见

OpenGL:隐藏边在薄零件后面可见,opengl,unity3d,graphics,3d,directx,Opengl,Unity3d,Graphics,3d,Directx,在OpenGL中显示带有边的薄零件时,缩放这些边将变得可见 我们如何避免这种情况 最近,一些CAD系统为此添加了一个选项。在动态移动后,最后一次通过,清除这些泄漏的边缘。这表明实现这一点是可能的,我应该使用什么方法 谢谢 参考资料: SolidWorks: 草图: 当内部和外部网格彼此接触的顶点不完全相同时,可能会发生这种情况。很难用语言来描述,但我会尽力的 想象一下大写字母“T”的最简单版本——只有两行,水平和垂直。它们彼此接触,但不共享任何几何图形,它们只是两条独立的线 在3D中渲染这些

在OpenGL中显示带有边的薄零件时,缩放这些边将变得可见

我们如何避免这种情况

最近,一些CAD系统为此添加了一个选项。在动态移动后,最后一次通过,清除这些泄漏的边缘。这表明实现这一点是可能的,我应该使用什么方法

谢谢

参考资料:

  • SolidWorks:
  • 草图:

当内部和外部网格彼此接触的顶点不完全相同时,可能会发生这种情况。很难用语言来描述,但我会尽力的

想象一下大写字母“T”的最简单版本——只有两行,水平和垂直。它们彼此接触,但不共享任何几何图形,它们只是两条独立的线

在3D中渲染这些线时,所有4个端点都会经过一些变换,并在屏幕上的某些点结束

在某些相机角度下(由于舍入误差),水平线的中心可能与垂直线的顶部不完全匹配。这会导致渲染时弹出1像素宽的孔

要解决此问题,应将顶线一分为二,确保所有线(现在是3而不是2)共享顶线中心的顶点。这样,您的所有行将始终在屏幕上的同一位置结束


我希望这会有帮助,但如果你仍然有问题,我可以给你画一些图片。

也许答案会有帮助。你是对的,但是SolidWorks可以在一次额外的过程中清除这些瑕疵,我想弄清楚的是它们是如何做到的。基本上,你是在寻找位于另一个三角形或多边形边缘的顶点。如果发现这样的情况,则在此点分割边,并在所有生成的三角形/多边形之间共享顶点。对于三角形,它应该非常简单,但是对于多边形,它可能会变得非常复杂,因为您需要正确地对它们进行三角剖分。