我正在尝试用多边形网格制作光滑的曲面。因此,为了进行必要的细分,我想使用N-Patches,它由Bézier三角形组成。据我了解,Bézier三角形可以由三角形多边形网格构成,这些三角形网格由三角形基元构成,如下所示:
然而,这使任务变得复杂。例如,如果我提供由三角形基元制成的多边形网格,如何将Bézier三角形和N-patch应用于多边形网格信息?对于三次Bézier三角形,我是否需要将一组9个三角形中的所有多边形三角形绑定在一起,其中每个组代表一个更大的三角形,所以我得到了9个边界控制点,我可以用它获得内部所需的控制点,用于执行立方Bézier三角形的de Casteljau算法,如下所示:
这似乎不实用,并且在许多情况下无法使用,例如多边形网格的UV贴图必须构造这9个顶点三角形(一组9个基本三角形)。
这似乎是Bézier三角形对我的唯一合理使用,但我认为Bézier三角形应该由/为每个基本多边形网格三角形构造,但这没有意义。如果使用de Casteljau为Bézier三角形构造基本多边形网格三角形的内部控制点,那么有什么可以控制/平滑?多边形网格由其制成的基本三角形是完全平坦的,因为三角形的所有3个点都保证在同一平面上 - 因此即使在使用Bézier三角形之后三角形上的曲面也是平坦的,这是正确的行为。这就是我推理Bézier三角形需要用许多基本三角形创建的原因。
一些快速参考:http://www.gamasutra.com/view/feature/131389/b%C3%A9zier_triangles_and_npatches.php?print=1
答案 0 :(得分:1)
N补丁是从网格的每个三角形创建立方三角形Bezier曲面。每个三角形由3个顶点和3个法线定义。因此,构造的三角形Bezier曲面一般不是平面的(除非3个法线彼此平行)。