NURBS 曲线和曲面不存在于传统绘图世界中。它们是使用计算机特别为 3D 建模而创建的。曲线和曲面表示 3D 建模空间中的轮廓或形状。它们是在数学上构造出来的。
NURBS 数学比较复杂,本节只简单介绍了一些 NURBS 概念,可以帮助您理解正在创建的内容,以及 NURBS 产生这样行为的原因。有关 NURBS 建模中数学和算法的全面描述,请参见 Les Piegl 和 Wayne Tiller 所著的 The NURBS Book(纽约:施普林格,第二版 1997)。
术语 NURBS 表示非均匀有理数 B-样条线。特别的:
图形曲线,诸如“线”工具和其他“图形”工具是 Bezier 曲线,它是 B-样条线的一种特例。
NURBS 的非均匀属性产生了重要一点。因为它们是在数学上生成的,NURBS 对象除了用以显示的 3D 几何体空间之外,还有参数空间。特别是,一个叫做结的阵列指定了曲线或曲面上每个控制顶点 (CV) 的影响范围。结在 3D 空间中是不可见的,并且不可以直接地对它们进行操纵,但有时它们的行为会影响 NURBS 对象可见的外观。本主题提到了这些情况。参数空间对曲线来说是一维的,它在拓扑上仅有一个单个的 U 维,尽管它们在几何体上存在于 3D 空间中。曲面在参数空间中有两个维度,即 U 和 V。
NURBS 曲线和曲面有个重要的属性,就是在标准几何体仿射变换或透视投影下不会发生改变。CV 可以对对象进行局部控制:移动 CV 或更改它的权重不会影响相邻 CV 之外的对象的任何部位。(使用软选择控件可以覆盖此属性。) 同样,连接包围曲面的 CV 的控制晶格也有此属性。此属性名为凸面外壳属性。
所有曲线都有度数。曲线的次数是用于表示它的方程式中最高的指数。线性方程式的次数为 1;二次方程式的次数为 2。通常,NURBS 曲线由三次方程式表示,并且次数为 3。次数可以更高,但通常没有必要。
曲线还有连续性。连续的曲线是未断裂的。连续性有不同的级别。带有尖角或尖点的曲线具有 C 0 连续性:也就是说,该曲线是连续的,但在尖点处没有导数。如果曲线没有这种尖点但曲率不断变化,则其具有 C 1 连续性。它的派生曲线也是连续的,但其次级派生曲线却并非如此。如果曲线有着不间断的恒定曲率,则其具有 C 2 连续性。它的初级和次级派生曲线都是连续的。
曲线连续性的级别:
左:C 0 ,因为角位于顶部
中:C 1 ,一个半圆与另一个半径较小的半圆在顶部相连接
右:C 2 ,差别很小,但右侧不是半圆,并且与左侧是平滑过渡连接
曲线的连续性级别还可以更高,但对于计算建模来说已经足够。肉眼一般无法区分连续性为 C 2 的曲线和连续性级别更高的曲线。
连续性和度数是相关的。一个 3 次方程可以生成一条 C 2 连续曲线。这就是为什么 NURBS 建模中通常不需要更高度数曲线的原因。更高度数的曲线在数字上也较不稳定,因此不建议使用此类曲线。
NURBS 曲线的不同分段可以有不同的连续性级别。特别是,将 CV 放置到相同的位置或使它们非常的接近,就可以降低连续性的级别。两个重合的 CV 增加了曲率。重合 CV 会在曲线中创建尖角。这个 NURBS 曲线的属性名为多样性。实际上,另外的一个或两个 CV 将它们的影响合并在了曲线的邻接处。
在左边的顶点上有三个 CV,在右边的顶点上有两个 CV。
将一个 CV 移离另外一个,就再次提高了曲线的连续性级别。在熔合 CV 时也会应用多样性。熔合的 CV 在曲线上创建了更尖锐的曲率或尖角。如果取消熔合 CV 并将一个 CV 移近另一个 CV,该效果就会消失。
度数、连续性和多样性可以应用到 NURBS 曲面,也可以应用到 NURBS 曲线。
细化 NURBS 曲线意味着添加更多的 CV。细化可以更好的控制曲线的形状。在细化 NURBS 曲线时,3ds Max 会保留原始曲率。也就是说,曲线的形状并没有改变,只不过邻近的 CV 移离了添加的 CV。这是由于多样性的关系:如果不移动邻近的 CV,增加的 CV 将会使曲线变得尖锐。要避免产生这种效果,首先要细化曲线,然后通过变换新近添加的 CV 或调整它们的权重来更改该曲线。
细化 NURBS 曲线。
NURBS 曲面实际上有着与 NURBS 曲线相同的属性,只不过从一维参数空间扩展到了二维参数空间。
在细化 NURBS 曲线或曲面时,最好对它进行重新参数化。重新参数化将会调整参数空间,以在视口中编辑曲线或曲面时,使它们有好的表现。有两种方法可以重新参数化:
弦长重新参数化可以根据每个曲线分段长度的平方根设置参数空间中结的空间。
使用统一重新参数化均匀隔开各个结。均匀结向量的优点在于,曲线或曲面只有在编辑时才能进行局部更改。
CV 曲线和曲面子对象在编辑曲线或曲面时可以选择自动重新参数化。
可以使用点曲线和点曲面,也可以使用 CV 曲线和 CV 曲面。控制这些对象的点被约束在曲线或曲面上。它没有控制晶格,也没有权重控制。这是一个可以方便使用的更简单的界面。同时,基于点的对象可以用以基于从属(约束)点来构建曲线,然后使用这些曲线来构建从属曲面。
可以将点曲线和点曲面看作 CV 曲线和 CV 曲面的界面,它们是完全定义的 NURBS 对象。曲线或曲面的基本表示仍使用 CV 来构建。
也可以将点曲线或点曲面看作依赖于它的点。可以使用“转化曲线”按钮来将点曲线或点曲面转化成 CV 形式,反之亦然。