曲面建模篇:如何构建一条高质量的曲线

之前文章已经简单介绍了Alias Golden Rules(Alias 黄金法则),里面包含了10项法则,归纳起来主要分3大项:构线、构面、构面技巧

本文先介绍第一部分:如何构建一条高质量的曲线。我们知道,最终的曲面模型是由一块一块曲面组成,曲面是由曲线构建,所以,要取得高质量的曲面模型,首先得从构建高质量的曲线开始。

好的曲线首先是尽可能逼近ID意图的,否则,所构建的曲线再顺畅也是无意义的,当然,这里所说的逼近并不是一定完全贴合ID图上的曲线,应在保证所构建的曲线在顺畅的基础上(或是在可接受范围内)逼近ID的意图,如冲突较大,应及时与ID沟通。

那么,怎样的曲线才称得为顺畅的曲线呢?一般从曲率的角度去做判断。

1. 对于单曲线段曲线,其曲率要顺畅,不能有连续的起伏波动。

2. 对于多线段曲线,除了单线段要顺畅外,曲线段与曲线段之间的连接处的曲率变化同样影响整条曲线的质量,连接处的曲率变化通常分为以下4种情况:

G0,两曲线段虽相连,但不相切,在连接处曲率不相等;
G1,两曲线段相切,在连接处的曲率不相等,曲率线不相连;
G2,两曲线段相切,在连接处的曲率相等,曲率线为G0连接;
G3,两曲线段相切,在连接处的曲率相等,曲率线为G1连接。
在Creo中,最多能做到G3的曲线连接,G3连接的曲线代表着真正的光顺,但实际应用中,有些变形空间小的区域很难用G3甚至G2去做,如果用G3或G2就会导致曲线或曲面变形严重,完全偏离ID设计意图,这个时候选择G1就会好很多,但是G1的质量也有好坏之分,比如以下两图,两图的曲线看似一样,实际上下面那个就比上面那个好很多,两曲线连接处的曲率相差不大,且曲率线的走势接近,这种情况可以看似类G3的效果,称为假G3。

所以说,不管是单曲线段曲线还是多曲线段曲线,曲线的曲率线走势很重要,这是影响曲线质量的重要因素。

那么,怎么绘制出高质量的曲线呢?

我们知道,线是由无数个点组成,一条曲线可以看作是一个质点的运动轨迹,这是实际中曲线的表述,比如我们用一只笔在纸上画一条曲线,笔头可以看似一个质点,笔头在纸上经过的轨迹就会生成一条曲线,甚至一些复杂的图形,如果通过手绘,这是很容易实现的,但是如果是按照这种方法通过鼠标来绘制,就变得困难得多。

在计算机图形学中,曲线的生成原理有以下两种:

1. 插值法:已知若干个离散的点,软件会用直线把这些点连接起来,如图:
如果点足够多,就会拟合逼近成一条曲线段。
所幸的是,软件会自动帮我们去做光顺化,我们只需要确定若干个点的位置就行,样条曲线就是这样生成的。

2. 拟合法:已知若干控制点组成的一多折线轮廓,软件会生成一曲线,此曲线逼近这些折线段,但不会通过每一个控制点,贝塞尔曲线就是通过这种方法生成。

贝塞尔曲线由起始点,终止点和控制点组成,起始点,终止点和控制点通过直线段连起来形成一个特征多边形,曲线的形状依附于多边形的形状,也就是通过调整控制点,可以调整曲线的形状。只有起始点和终止点在曲线上,多边形的第一条边和最后一条边分别表示起始点和终止点的切线方向。

在实际设计中,对于一些简单的曲线形状,可以通过一条低价的贝塞尔曲线(通常采用3阶,Creo中的曲线是最少为3阶,其实2阶也有,圆锥曲线就是2阶的,但是圆锥曲线在Creo中不能升阶,灵活性低,只能适应一些特定的曲线)去描绘,如果还不能满足,可以通过升阶,这样就得到更多的控制点,曲线调整的灵活性就会增加。

对于复杂的曲线形状,则需要更多的控制点,曲线的阶次就会变得非常高,但是,贝塞尔曲线有两个明显缺点:
1. 调整贝塞尔曲线任意一个控制点,曲线上的所有点都跟着变化。

对于使用高阶贝塞尔曲线描绘的曲线图形就更加难以调整,就是无法做到只修改曲线的某一部分,因为只要动一个控制点,整个曲线都会跟着发生变化,正所谓牵一发而动全身。

2. 不能精确地描绘除抛物线外的圆锥曲线

为了改善贝塞尔曲线的局部特征修改性,引入了这种曲线:使用多条低阶的贝塞尔曲线通过拼接来替代高阶的贝塞尔曲线,B样条曲线就是基于此原理生成的,在绘制B样条曲线时,我们只需要给出确切的节点,软件自动会生成完整的B样条曲线,实际上,节点与节点之间是一条贝塞尔曲线,只不过软件会自动把每条贝塞尔曲线连接起来(连接处曲率连续),生成一条完整的曲线。

这样的B样条曲线的优点:修改某一控制点只引起与该控制点相邻的曲线形状发生变化,远处的曲线形状不受影响。举个例子,基于这个优点,我们可以只用一根样条曲线就可以绘制带有直线段的矩形圆角,圆角处的形状变化对远处的直线基本没影响,如下图。

如果只用一根贝塞尔曲线是很难做出这种矩形圆角曲线,因为在保证圆角处形状的前提下无法保证直线段的形状,感兴趣的可以在Creo样式中试试,样式中可以绘制3阶以上的贝塞尔曲线。
B样条上的节点的间距如果是恒定的,把这种B样条曲线叫做均匀B样条曲线,反之为非均匀B样条曲线,在实际应用中,显然非均匀B样条曲线更能满足复杂的造型需求。

但是,无论是贝塞尔曲线还是上述的B样条曲线,都不能精确地描绘除抛物线外的圆锥曲线,比如圆、弧形、椭圆。为了解决这一问题,引入了“控制点权值”的概念,使得曲线上的各个控制点能不均等地影响曲线,这里把曲线上控制点的权值都一样的定义为非有理B样条曲线,反之为有理B样条曲线。

结合以上,把非均匀有理B样条曲线简称为NURBS(Non Uniform Rational B-spline),非均匀有理B样条曲线有以下4个特点:
1. B样条曲线的所有优点都在非均匀有理B样条曲线中保留。
3. 其他B样条曲线只能近似地表示圆、弧形、椭圆等形状,而NURBS可以精确地表示。
4. 由于引入了控制点权值,NURBS具有更多的形状控制自由度,可以适应复杂的形状曲线。
所以,大部分绘图软件的样条曲线基本上都是采用的是非均匀有理B样条曲线

实际上贝塞尔曲线可认为是均匀有理B样条曲线,虽然难以对曲线的局部形状进行修整,但这一缺点在另一角度上也是它的优点,就是曲线天然具有顺滑性,即调整某一控制点时,曲线上其他位置也跟着调整,这样整条曲线时刻保持着很好的曲率连续性,即使是在多阶的情况下。

上图为贝塞尔曲线、B样条曲线(样式中)、B样条曲线(草绘中)调整控制点后曲率变化的情况,可以看出,B样条曲线中内部节点越多,虽然越能逼近图形的真实轮廓,但是其曲率线的柔顺性就越难调整,这时就需要增加阶数以使曲率线变得柔顺,如下图的圆,在节点一样的情况下,阶数越高曲率线变得更柔顺,但是4阶以后,再继续升阶的话改变有限了。

但是阶数越高,控制点就越多了,这样调整的过程也会相当繁琐,因为控制点多了,相当于变量就越多,你很难把这些点调整到准确的位置上。这里需要所说的阶数=曲线控制点数-曲线内部节点分隔的段数

所以,如果贝塞尔曲线能满足图形的描绘,尽量选用低阶的贝塞尔曲线,这样即容易取得高质量的曲线,调整过程也不算繁琐;通常以“控制点最少”为原则,即最开始应先绘制只有起始点和终止点的曲线,然后移动控制点调整曲线的形状,如必要可根据情况再添加控制点直到满足图形的绘制(这个过程应该时刻打开曲率以便观察曲线调整的情况)。

如果使用B样条曲线,首先需要布置一些点,点的数量也是尽量以最少为原则,当然,如果你经验丰富的话,一般的曲线图形一看就知道需要大概多少个点进行绘制,这种情况一开始就可以把所需要的点大概确定下来(通常情况下,曲率变化大的地方需要布置点)。调整曲线的过程中,通过移动控制多边形上的控制点来调整会方便很多,同样,控制点的数量也不宜过多。
同时,控制点的排布对曲线的质量也有关系,即控制点之间的间隔以及控制点与曲线之间的距离对曲线的曲率有影响。
1. 控制点之间的间隔:一般是恒定、或递增、或递减,
2. 控制点与曲线之间的距离:一般是逐渐先增后减,
但也不是绝对的,比如以下这类S型曲线,会有个转折点,这样的曲线会存在正反曲率。
在很多实际应用中,曲线的起始点和终止点都会设置边界条件,比如相切、曲率、加速度、法向、角度等,这样对后续创建曲面的质量是很有帮助的,当然,也会存在一些自由曲线,在绘制这类自由曲线时,其起始点和终止点处的曲率也是有讲究的,原则是,延长起始点或终止点处的曲线(或曲面),其延伸部分需保持延伸前的走势。

要实现这一点,通常有以下三种方法:

1. 在绘制自由曲线时,比实际需要的曲线段在起始点和终止点处适当加长,后期通过裁切的方式裁剪到合适的曲线段。
2. 如果不想通过以上方式,那么就需要特别注意调整起始点和终止点处的曲率,使得延伸后能保持延伸前的走势,以下三种曲线看起来并无差别,但是曲率并不相同,最终曲线的质量也会不一样。
3. 做参考线,使其有设置边界的条件,通常会选用规格的图元作为参考的边界,如圆弧、圆、直线、椭圆等,因为这些图元自身有良好的曲率。
(0)

相关推荐