画一条曲线,画很多条曲线,让曲线连接、旋转、平移,就能建出曲面,进而搭建出模型。
本日的统统工业产品设计,需都要曲面建模完成产品的参数定义。

但在统统发生之前,我们须要先得到一条曲线。

你在 PS 里随手画的线条实质上不是曲线。
把它们放大,这条线会越来越模糊,末了变成一个个不同颜色的色块。

但只要色块足够小,在人眼中的边缘便是平滑的。
这种显示模式被称为点阵图像,也叫位图。

若安在计算机里画出一条真正的曲线若何让曲线变成三维模型

打算机不像人类一样拥有徒手画线的能力,要画真正的曲线,就须要通过数学函数打算每个点的位置,再把点连成曲线。
贝塞尔曲线便是这样一种非常直不雅观的曲线函数。

这里有 A、B、C 三个点,我们在 AB 线段上任选一个点 D,根据 AD 和 AB 的比值,在 BC 线段上找到一个点 E,让 AD:AB=BE:BC 。
再连接 DE ,在 DE 线段上找出点 F,让 DF:DE = AD:AB = BE:BC。

这个 F 点,便是我们要得到的贝塞尔曲线上的一个点。
让 D 点从 A 移动到 B,把得到的所有 F 点连起来,便是 ABC 三个点所定义曲线,称作二次贝塞尔曲线。

掌握点越多,次数就越多。
设计软件常用的画笔工具便是分段三次贝塞尔曲线,通过两个锚点和两个掌握点,定义一条曲线。

这种用数学表达式定义的图形被称为矢量图。
无论放大多少倍,都不会丢失信息,涌现位图模式下的锯齿。

贝塞尔曲线的问题是,当掌握点数量过多时,每个点对付曲线的掌握就会变弱。
且调度任意一个点都会影响整条曲线,不能只修正局部。

如果把像钢笔工具一样把贝塞尔曲线分段,曲线与曲线的拼接就不足光滑。
无法达到工业设建模哀求的 C2 连续。

于是,在贝塞尔曲线的根本上,发展出了 NURBS 曲线。
Non-Uniform Rational B-Splines,中文叫非均匀有理 B 样条。

B 样条可以被看做一系列基函数的线性组合,而这些基函数又是由低次的基函数线性组合而来,每两个节点矢量之间有不同的差值,且可以调节权重。

我知道你没有听懂,在写下上面这段话的时候,我们实在也没搞懂。
以是,我们完全的学习了清华大学的打算机图形学教材。
现在,我们终于理解了什么是非均匀有理 B 样条。

接下来的内容将非常有趣,让我们开始吧。

首先我们要知道,贝塞尔和 NURBS 等曲线并不按照传统的 y=f(x) 的函数关系表达。
而是通过定义一个新参数t,把曲线表示为一个多项式。
在三维空间,就可以表示为P(t)=[x(t),y(t),z(t)]。

比如一条直线段就可参数化表示为:

P 代表点的位置,包含 X,Y,Z 轴的坐标信息,P1 是这条直线的出发点,P2 是这条直线的终点。

那么,t 即是 0 时,P(t) 的位置就在 P1上,t 即是 1 时,P(t) 的位置就在 P2上,把 t 在 0 到 1 区间的每一个值对应的 P(t) 坐标连起来,便是 P1 和 P2 相连的直线。

参数函数可以清晰的表达各种曲线,比如四分之一圆弧就可表示为这样 :

理解了参数函数,我们就可以进一步理解贝塞尔曲线的函数。
这是求和符号,这是基函数,不用担心,我们接下来会进一步先容。

为了天生曲线,我们须要先确定 n+1 个掌握点,记作 Pi,让每个掌握点与一个基函数相乘,再把结果相加,就可以得到参数 t 对应的 P(t) 坐标,连起来便是一条逼近掌握点的曲线。

以有 P0,P1,P2,P3 四个掌握点的三次贝塞尔曲线为例,每一个点都有一条对应的基函数曲线。

可以看到,t 为 0 时,P1,P2,P3 的基函数结果都是 0,此时P(t) 的位置就在 P0 上,t 为 1 时,P0,P1,P2 的函数结果都是0,此时P(t) 的位置就在 P3上。

而 t 在 0 和 1 之间时,P(t) 的位置便是这四条函数与掌握点相乘再相加的结果。
这也意味这每个掌握点的位置发生变革,都会影响最终生成的整条曲线。

而 B 样条文通过分段函数多次递归的办法办理了贝塞尔曲线的问题。
可以看到,B 样条和贝塞尔的函数逻辑并无差异,但基函数和定义域 t 发生了变革。

这是 B 样条的基函数,i 是掌握点的编号,k 是这条曲线的次数。

让我们以有 4 个掌握点的 3 次 B 样条为例。

为了曲线可以被局部掌握,首先须要设置 t0至 t7 共 8个 (4+3+1) 节点,每个节点都有固定的数值,我们就取 0、1、2、3、4、5、6、7 为 8 个节点的数值。

从基函数公式中我们可以看到,要打算 3 次 B 样条基函数,先要打算 2 次基函数,要打算 2次,要先打算 1 次,要打算 1 次,就要先打算 0 次。

根据公式,掌握点 P0 的 0 次基函数 N0,0 只在 t0 和 t1 之间是 1, 其他区间都是 0。

以此类推,我们可以画出剩余 3 个掌握点的基函数 N1,0 到 N3,0 。
而 t4 至 t7 节点还会天生三条基函数,用于之后的打算。

在 0 次基函数的根本上,我们可以打算 1 次基函数。

基函数 N0,0 和 N1,0 会组合天生一个新节点,对应的基函数是 N0,1。
以此类推,N1,0 和 N2,0 会组合成 N1,1 ;N3,0 和 N4,0 会组合成 N3,1。

此时的 B 样条是就这四条基函数和 Pi 乘积的和,即4个掌握点连接的直线。

之后,可以再打算得出 2 次基函数,N0,2 到 N3,2 。
再打算出 3次基函数。
N0,3,N1,3,N2,3,N3,3 。
末了带入公式中,就可以算出 P(t),得出整条曲线。

在这张图中,我们可以更清晰的看到 B 样条基函数的递归逻辑。

不难创造,每个 3 次基函数都只在4个节点区间内有数值,这也意味着,这个掌握点终于实现了贝塞尔曲线做不到的局部掌握。

在刚刚的例子中,节点之间的数值是相等的,以是也被称为均匀 B 样条。
实际运用中,更常见的是节点间距不相等的非均匀 B 样条,让掌握点得到更灵巧的掌握范围。

而「有理」,意味着可以对B 样条的每个掌握点设定不同的权重,进一步掌握曲线。

这就是非均匀有理 B 样条。

你可以在这个网站中,更直不雅观的理解 NURBS 曲线。

每个掌握点有4个参数,XYZ 轴的坐标和权重,权重越高,曲线就越靠近该点,让掌握点得到对曲线更高的影响力。

而次数则意味则分段函数的打算次数。

次数为 1 时,便是各个掌握点连接的直线。
次数为 2 时,每段直线的司帐算成为多段曲线,次数为 3 时,分段曲线会进一步打算,天生更短更平滑的曲线。
次数可以不断升高,但在实际运用中,3 次已经够用了。

可以看到,10个同样位置的掌握点,3 次的 NURBS 曲线就要比 9 次的贝塞尔曲线平滑可控的多。

有了 B 样条之后,让曲线连接、旋转、平移,就能构建出曲面了。

接下来,我们的三维模型师杰苏尔将完成一次建模。

首先用 B 样条勾勒出我们想要的模型轮廓,再添加几个额外的点让直线部分更垂直。
之后,添加圆形样条,再用扫描将模型的根本形态制作出来,调度封顶形状,就基本完成了模型的身体。

再添加眼球、瞳孔,增加细分曲面,调度大小和位置,然后再复制另一个眼球,一个回形针模型就完成了。