2017-09-04 72 views
-1

当您在OpenGL中显示带有边缘的薄部件时,缩放这些边缘变得可见。OpenGL:在薄部件后面隐藏的边缘变得可见

我们该如何避免这种情况?

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

谢谢。

enter image description here

参考文献:

+2

也许对[“OpenGL中的深度偏移”](https://stackoverflow.com/questions/45314290/depth-offset-in-opengl/45317626#45317626)的答案将有所帮助。 – Rabbid76

回答

0

当你的内,外网并不完全共享这可能发生它们相互接触的顶点。很难用文字来形容它,但我会尝试。

想象一下大写'T'字母的最简单版本 - 只有两行,横向和纵向。它们彼此接触,但不共享任何几何体,它们只是两条分开的线。

当您在3D中渲染这些线条时,所有4个端点都会经历一些变形,并在屏幕上的某些点上结束。

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

为了解决这个问题,你应该将顶线分成两半,确保所有线(现在3个而不是2个)共享顶线中心的顶点。这样你所有的线条总是会在屏幕上的相同位置结束。

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

+0

您是对的,但SolidWorks可以通过一次额外的清理来清理这些工件,我想弄明白的是他们是如何做到的。 – abenci

+0

基本上你正在寻找位于另一个三角形或多边形边上的顶点。如果你发现这种情况,那么你在这一点上分割边缘,并共享所有三角形/多边形之间的顶点。对于三角形,它应该非常简单,但对于多边形,它可能会变得非常快,因为您需要对它们进行正确的三角测量。 – kolenda

相关问题