贝塞尔三角形和 N-Patches

Bézier Triangles and N-Patches

我正在尝试用多边形网格制作光滑的表面。因此,为了进行所需的细分,我想使用由贝塞尔三角形组成的 N-Patches。据我了解,贝塞尔三角形可以由三角形多边形网格构成,三角形多边形网格由三角形基元构成,如她所见:

然而,这使任务复杂化。例如,如果我提供一个由三角形基元构成的多边形网格,我如何将贝塞尔三角形应用到多边形网格信息中,从而将 N-patches 应用到多边形网格信息中?对于立方贝塞尔三角形,我是否需要将所有多边形三角形绑定在一组 9 个三角形中,其中每个组代表一个更大的三角形,所以我得到 9 个边界控制点,用它我可以获得内部需要的控制点, 用于对立方贝塞尔三角形执行 de Casteljau 算法,如下所示:

这似乎不切实际,而且在许多情况下无法使用,例如多边形网格的 UV 贴图必须由这 9 个顶点三角形(一组 9 个基本三角形)构成。

对我来说,这似乎是贝塞尔三角形的唯一合乎逻辑的用法,但我认为贝塞尔三角形应该由 of/for 每个基本多边形网格三角形构成,但这没有意义。如果你用 de Casteljau 为 Bézier 三角形构造一个基本多边形网格三角形的内部控制点,那有什么 control/smooth 呢?构成多边形网格的基本三角形是完全平坦的,因为三角形的所有 3 个点都保证在同一平面上 - 因此即使使用贝塞尔三角形,三角形的表面也会是平坦的,这是正确的行为。这就是为什么我认为贝塞尔三角形需要由许多基本三角形组成。

一些快速参考:http://www.gamasutra.com/view/feature/131389/b%C3%A9zier_triangles_and_npatches.php?print=1

N-patch 是从网格的每个三角形创建一个立方体三角形贝塞尔曲面。每个三角形由 3 个顶点和 3 条法线定义。所以,构造的立方三角贝塞尔曲面一般不会是平面的(除非3条法线都相互平行)。