曲面建模篇:如何构建一条高质量的曲线
之前文章已经简单介绍了Alias Golden Rules(Alias 黄金法则),里面包含了10项法则,归纳起来主要分3大项:构线、构面、构面技巧。
本文先介绍第一部分:如何构建一条高质量的曲线。我们知道,最终的曲面模型是由一块一块曲面组成,曲面是由曲线构建,所以,要取得高质量的曲面模型,首先得从构建高质量的曲线开始。
好的曲线首先是尽可能逼近ID意图的,否则,所构建的曲线再顺畅也是无意义的,当然,这里所说的逼近并不是一定完全贴合ID图上的曲线,应在保证所构建的曲线在顺畅的基础上(或是在可接受范围内)逼近ID的意图,如冲突较大,应及时与ID沟通。
那么,怎样的曲线才称得为顺畅的曲线呢?一般从曲率的角度去做判断。
1. 对于单曲线段曲线,其曲率要顺畅,不能有连续的起伏波动。
2. 对于多线段曲线,除了单线段要顺畅外,曲线段与曲线段之间的连接处的曲率变化同样影响整条曲线的质量,连接处的曲率变化通常分为以下4种情况:
所以说,不管是单曲线段曲线还是多曲线段曲线,曲线的曲率线走势很重要,这是影响曲线质量的重要因素。
那么,怎么绘制出高质量的曲线呢?
我们知道,线是由无数个点组成,一条曲线可以看作是一个质点的运动轨迹,这是实际中曲线的表述,比如我们用一只笔在纸上画一条曲线,笔头可以看似一个质点,笔头在纸上经过的轨迹就会生成一条曲线,甚至一些复杂的图形,如果通过手绘,这是很容易实现的,但是如果是按照这种方法通过鼠标来绘制,就变得困难得多。
在计算机图形学中,曲线的生成原理有以下两种:
2. 拟合法:已知若干控制点组成的一多折线轮廓,软件会生成一曲线,此曲线逼近这些折线段,但不会通过每一个控制点,贝塞尔曲线就是通过这种方法生成。
贝塞尔曲线由起始点,终止点和控制点组成,起始点,终止点和控制点通过直线段连起来形成一个特征多边形,曲线的形状依附于多边形的形状,也就是通过调整控制点,可以调整曲线的形状。只有起始点和终止点在曲线上,多边形的第一条边和最后一条边分别表示起始点和终止点的切线方向。
在实际设计中,对于一些简单的曲线形状,可以通过一条低价的贝塞尔曲线(通常采用3阶,Creo中的曲线是最少为3阶,其实2阶也有,圆锥曲线就是2阶的,但是圆锥曲线在Creo中不能升阶,灵活性低,只能适应一些特定的曲线)去描绘,如果还不能满足,可以通过升阶,这样就得到更多的控制点,曲线调整的灵活性就会增加。
对于使用高阶贝塞尔曲线描绘的曲线图形就更加难以调整,就是无法做到只修改曲线的某一部分,因为只要动一个控制点,整个曲线都会跟着发生变化,正所谓牵一发而动全身。
为了改善贝塞尔曲线的局部特征修改性,引入了这种曲线:使用多条低阶的贝塞尔曲线通过拼接来替代高阶的贝塞尔曲线,B样条曲线就是基于此原理生成的,在绘制B样条曲线时,我们只需要给出确切的节点,软件自动会生成完整的B样条曲线,实际上,节点与节点之间是一条贝塞尔曲线,只不过软件会自动把每条贝塞尔曲线连接起来(连接处曲率连续),生成一条完整的曲线。
这样的B样条曲线的优点:修改某一控制点只引起与该控制点相邻的曲线形状发生变化,远处的曲线形状不受影响。举个例子,基于这个优点,我们可以只用一根样条曲线就可以绘制带有直线段的矩形圆角,圆角处的形状变化对远处的直线基本没影响,如下图。
但是,无论是贝塞尔曲线还是上述的B样条曲线,都不能精确地描绘除抛物线外的圆锥曲线,比如圆、弧形、椭圆。为了解决这一问题,引入了“控制点权值”的概念,使得曲线上的各个控制点能不均等地影响曲线,这里把曲线上控制点的权值都一样的定义为非有理B样条曲线,反之为有理B样条曲线。
3. 其他B样条曲线只能近似地表示圆、弧形、椭圆等形状,而NURBS可以精确地表示。
4. 由于引入了控制点权值,NURBS具有更多的形状控制自由度,可以适应复杂的形状曲线。
实际上贝塞尔曲线可认为是均匀有理B样条曲线,虽然难以对曲线的局部形状进行修整,但这一缺点在另一角度上也是它的优点,就是曲线天然具有顺滑性,即调整某一控制点时,曲线上其他位置也跟着调整,这样整条曲线时刻保持着很好的曲率连续性,即使是在多阶的情况下。
但是阶数越高,控制点就越多了,这样调整的过程也会相当繁琐,因为控制点多了,相当于变量就越多,你很难把这些点调整到准确的位置上。这里需要所说的阶数=曲线控制点数-曲线内部节点分隔的段数。
所以,如果贝塞尔曲线能满足图形的描绘,尽量选用低阶的贝塞尔曲线,这样即容易取得高质量的曲线,调整过程也不算繁琐;通常以“控制点最少”为原则,即最开始应先绘制只有起始点和终止点的曲线,然后移动控制点调整曲线的形状,如必要可根据情况再添加控制点直到满足图形的绘制(这个过程应该时刻打开曲率以便观察曲线调整的情况)。
要实现这一点,通常有以下三种方法: