【问题标题】:OpenGL: Hidden edges become visible behind thin partsOpenGL:隐藏的边缘在薄部分后面变得可见
【发布时间】:2017-09-04 11:02:28
【问题描述】:

当您在 OpenGL 中显示带有边缘的薄零件时,缩小这些边缘变得可见。

我们怎样才能避免这种情况?

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

谢谢。

参考资料:

【问题讨论】:

标签: opengl unity3d graphics 3d directx


【解决方案1】:

当您的内部和外部网格不共享它们彼此接触的完全相同的顶点时,就会发生这种情况。很难用语言来形容,但我会努力的。

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

当您在 3D 中渲染这些线条时,所有 4 个端点都会经过一些变换并最终到达屏幕上的某些点。

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

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

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

【讨论】:

  • 你是对的,但是 SolidWorks 可以在一次额外的过程中清理这些工件,我想弄清楚他们是如何做到的。
  • 基本上,您正在寻找位于另一个三角形或多边形边缘的顶点。如果你发现这样,那么你在这一点分割边缘并在所有生成的三角形/多边形之间共享顶点。对于三角形,它应该非常简单,但对于多边形,它可能会很快变得复杂,因为您需要正确地对它们进行三角剖分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多