如何渲染一个NURBS曲面?

时间:2014-04-09 08:37:34

标签: opengl rendering cad nurbs

我知道GPU可以有效地渲染三角形。 GPU无法直接渲染NURBS曲面。从链接NURBS in the OpenGL Graphics Pipeline,我们知道。要渲染NURBS,需要进行三角测量。我不知道三角测量操作在哪里发生。它是由CAD建模软件还是GPU执行的?我想这是由CAD建模软件完成的。那么NURBS曲面的三角剖分功能是任何CAD建模软件的核心任务之一?这项任务是非常复杂还是几乎完全由学术研究人员解决?

为什么我有这个问题?我发现NURBS曲面在CAD建模软件中是否平滑?但是,如果我首先将NURBS曲面转换为三角形网格并通过MeshLab将其打开。在MeshLab中,一些区域不平滑。我希望知道管道中的哪个部分会导致问题。

2 个答案:

答案 0 :(得分:1)

在您使用的CAD建模软件和MeshLab之间看到不同的渲染图像有几种可能的原因:

  • 当CAD软件渲染NURBS曲面时,它内部生成的三角形网格的分辨率通常取决于缩放级别。当您使用不同的软件(甚至是同一CAD软件中的命令)将NURBS曲面转换为三角形网格时,无法保证您获得相同的三角形网格。

  • 当CAD软件渲染NURBS曲面时,不仅会生成三角形网格,还会从NURBS曲面计算每个三角形顶点的曲面法线并传递给渲染引擎。当MeshLab渲染可能不包含任何顶点法线数据的三角形网格时,它必须通过自己的算法计算顶点法线数据(通常从共享相同顶点的所有三角形推断)。因此,不同的顶点法线数据将导致不同的渲染图像。

  • 您使用的CAD软件和MeshLab可以使用完全不同的着色技术。

总而言之,这些只是一些可能的原因。如果您能提供实际图像,将有助于进一步缩小真实原因。

答案 1 :(得分:0)

通常由CAD软件在CPU上完成。如果您可以发布您所看到的差异的屏幕截图,则可以更轻松地诊断问题的原因。它可能只是使用面法线或其他东西。