|
CV(控制点/控制顶点)( |5 W) O" z+ F% P K
CV (控制定点)控制编辑点之间的线段如何被“拉”成曲线的。这是最基本,也是最重要的控制曲线形状的方法。连接相邻的CV之间的线段称作壳(Hull)。; }% Q9 ~0 Z, S/ i4 z' n1 L- A
/ G' \' |2 Y% `
你不能在曲线内部添加CV:每一个曲线片断都有特定数量的CV。每个曲线片断所拥有的CV数量等于曲线的度加1。举例来说,每一个3度的曲线片断一定有4个CV。
% N2 T' b8 y# y( M- m5 {' Q: h: v4 ]; W9 F: V# k
你可以用调整权重工具调整CV的权重以改变曲线的形状。这将影响到CV对曲线的“拉力”。当你使用有理几何图形的时候(书上写的是Non-rational geometry,应该不对吧),系统使用不同的权重的CV以获得更高的精度。在实践当中,改变CV的权重可能引起一些问题。参见有理图形Vs.非有理图形
, I A0 a) U2 d移动编辑点Vs.移动CVs
& W: F5 b* O3 K- d理论上,移动编辑点是控制曲线形状最好的方法,因为他们直接位于曲线上。不幸的是,这个方法行不通。因为曲线的形状和决定了编辑点的位置,而不是编辑点位置决定曲线的形状。5 ~: ?$ H9 g' s E
1 S9 r. e8 s9 G, Y/ C9 Z9 m
有些软件仍然允许你移动编辑点。当你移动编辑点的时候,软件使用逆向工程的方法尝试寻找一条通过新编辑点的曲线。因为这种计算消耗时间,并且有无限种可能,所以,软件会对可能的曲线形状加以约束。
2 O3 P+ ^* i- T1 T$ Y' c( y
& A4 d- G {( H由于这些约束的存在,你通常不能使用移动编辑点对曲线形状进行大的改变。移动编辑点适用于对曲线的形状进行一些小的放缩。
( R2 F. I) [( o% F8 U/ D$ R
; s/ i7 T3 N: p8 m5 Z3 G尽管如此,你可能仍然不能通过移动编辑点的方法得到想要的形状。唯一能够完全控制曲线形状的方法是移动CV! m; Y0 W0 E- [: f
多重结点和多重CV5 z& t, H) G3 O( V' \" D* F- A3 C
多重结点是由位置完全相同的若干个编辑点组成。多重CV则是由位置完全相同的若干个CV组成。
& L2 f6 a4 x# c' q7 T
, k* D" J9 T7 e% Y K, Z/ |通常需要一个拥有锐利拐角的曲线的时候使用多重结点。多重CV由‘多重’工具控制(注:11里面没找到这个东西,不知道被塞到哪里去了) i, z6 q/ a+ R* q: F( _! k1 ?1 A
. h# D& i$ E" I多重结点和多重CV通常不受欢迎。一些工具(比如Rail表面)将不能工作,很多CAD软件也不接受含有多重结点的模型。
1 x5 C8 Q2 w6 B" D X+ ^* \0 o: R' j2 D6 j
多重结点和多重CV产生的效果相似,但是他们的数学原理是不同的
; `7 A- `$ M3 G8 A6 s) l9 Z多重结点和连续性+ [+ ^) [) F. A o9 L
使用多重结点技术,每增加一个结点就会消去一级自动连续级别。
9 v6 O) i3 D! @$ @9 T! E' O# t/ K
举例来说,一个3度的曲线通常在结点处拥有曲率连续(G2)级别。$ \7 A" K& \1 P1 m V8 e4 U
5 Q* n- R' Y1 \% L7 q: b/ Z3 O/ }0 D" G- 如果在此结点处增加一个结点(在这个位置共有2个结点)构成多重结点的话,那么将失去自动曲率连续(automatic curvature continuity),结果是在该多重结点处得到了一个切线连续(tangent continuity)(G1)的结果。
- 如果在该结点处增加两个结点(在这个位置共有3个结点)构成多重结点的话,那将失去自动曲率连续和自动切线连续,那么在该多重结点处只能得到一个位置连续(positional continuity)(G0)的结果。
# H4 y* s6 }( N% @% E5 a
3 I* I- @) |, G1 d; } O
注:只是内在的连续性丢失了。就像用贝赛曲线,如果巧妙的布置CV的位置,那么连续性将被恢复。不过现在这些都可由Studiotools自动完成+ O( \0 N+ P$ y) l/ Z9 ]
参数化(Parameterization)
7 V" }9 f' a" v' u理想的情况,你不需要了解曲线背后的数学原理,以及曲线如何被描述的。不幸的是,作为对NURBS强大功能的回报,你必须了解一些关于曲线或者曲面如何被描述的知识。
6 K$ ^* t, R2 d1 _' N. C6 U. W
9 ^8 g8 a- H$ W0 v* N曲线上的每一个点都有一个编号(注:线是由点组成的,这点还有不知道的话请在后面签名,人多的话我就把那部分也翻译过来),叫做它的参数。这个数值表示该点在曲线U维的位置(U坐标)(参见前面的讨论,就是那个t)。利用这个数值可以精确的指定曲线上的一个点。数值越大,该点离开起点的距离越远。
3 R* M4 x$ k' h: Z: ^! S/ t+ ~% \- v4 x* A
Studio Tools可以使用两种参数化方法(其它软件不一定,如XSI中有4种方法)改变曲线的参数空间(有时也叫结点空间)。这些方法决定了曲线上点的参数值是如何被分配的。这两种方法叫做‘统一(Uniform)’和‘弦长(Chord-length)’参数化(注:有些书上把‘Uniform’翻译成均匀,感觉还是统一准确一点,因为实际上并不均匀)
+ m5 [ I2 ~ K5 s0 S% O$ P" i6 i( p
" P* s% [9 {, l# O. T0 Z不同参数化的曲线可能看起来完全一样,但是他们却有着不同的内部结构: }0 Z# }: p0 A' h7 a& x
M6 u2 h' p- N3 K统一(Uniform)1 i' u+ w4 ^; n- w( M' @
统一参数化方法将整数参数值指定到每一个结点上,并且将参数均匀的分配到相邻结点间的曲线段上。
2 K! c) S& s& Z: X3 K9 c1 E# J
" i Q" Q; Y5 X7 T7 P. V所以,第一个结点的参数值总是0.0,第二个结点的参数值总是1.0,第三个结点总是2.0,以此类推(因此,最后一个结点的参数值总是等于组成这条曲线的曲线段的数量
0 h/ ~6 r; d: N6 i9 U
5 k* c4 ~+ q' F G弦长(Chord-length)% v/ _. C2 @) v# L/ l. n
弦长参数化方法指定参数值0.0到曲线的起点,然后根据相邻结点间的弦长按比例将参数分配到曲线上的每个点(弦只得是相邻结点间的直线距离。)。因此,结点处的参数值并不一定是整数
k: i9 \" c+ g/ N D2 Q比较 I. Q. n% W5 U3 t' g) C7 W9 q% W
弦长:
% x" \5 W: s/ j优点:5 a6 x+ `1 l7 p, g1 Z9 U. R
6 n* \& [, E4 y4 `1 P3 ?6 W1 o
- 参数值能够指示一条曲线上点与点之间的位置关系
- 能过最大程度的避免纹理的挤压或拉伸
$ l8 m/ ~; E8 y1 t
缺点:
0 E7 a+ r( h9 m
& G; _0 r# Z9 ~; x+ T- 参数值不是显而易见的
- 利用弦长参数化方法曲线制作的面,可能会由于交叉结点插入的原因而变得更为复杂
^% G- J: C/ O- f
$ Q; S" Y v8 J, X$ a) m统一:
) o* a; a3 t; D2 y, n" z优点:
, G' j( W" e1 q4 y- ?( ?$ `4 j, X1 s
- 参数值显而易见(比如参数值为1.5的点总是在结点1.0和2.0中间)
# d* q* F7 M6 Q. K- G3 r5 U! j缺点: [: r+ A- w) z( M
$ j4 s- e, Y1 Y6 _, L
- 通常,结点间的插值效果都不理想(注:个人感觉,纹理压缩或拉伸得比较严重,另外在两个结点之间插入新结点的时候,这个新插入的节点并不是整数,容易造成混乱)
- 度(Degree)' r3 {$ P& z8 I. v
高度的曲线拥有更多的控制点并且可以保证曲线段之间更好的连续性。低度的曲线计算起来比较快。
& Y& h( Z3 w2 {0 x& m" G9 ^! b. S5 Z2 T2 ^8 D! ?: ]
每段
, U A8 B3 I# U9 |! ?$ n" z" g" ^: r1度曲线拥有2个控制点,在曲线段连接处只能有位置连续
$ O8 z' v+ e8 ]: I7 s0 K* W7 ]8 W2度曲线拥有3个控制点,在曲线段连接处能保证切线连续
5 f" i! j9 ~1 V% Y D8 J/ n2 c3 [3度曲线拥有4个控制点,在曲线段连接处能保证曲率连续. [* Z0 A4 T& l' l2 w
5度曲线拥有6个控制点,通常应用于汽车设计
9 x- s# g) e6 x% R3 |5 ?7度曲线拥有8个控制点,通常应用于汽车设计
. _$ f; T7 t5 g8 p: ^: }8 E4 k4 ^# Y' V& l- P" H! C1 v
默认的,并且是最长被用到的曲线是3度曲线。1度曲线只有在创造平面物体的时候才用。如果不需要曲率连续,那么可以用2度曲线。
/ f5 r+ Y C9 q o
1 h, h: L- ?; N. H5度和7度曲线通常应用于汽车设计。计算这些曲线速度很慢,但是却能得到更光滑的曲线,更好的内在连续性和更多的控制
, g" @+ j |( M8 b1 _5 {7 R( t曲率! I* w* ^% w* k
曲率是这样计算的,在曲线上需要计算曲率的位置放置一个圆,使圆的形状可以恰好拟和该位置的曲线,然后曲该圆半径的倒数。在图中,在X点,曲线的弯曲程度和半径维r的圆相同。那么这点的曲率就是1/r。. F+ x) W7 F+ i3 w; I2 T
0 [8 M" m) [) m2 n/ S1 b, h取倒数,1/r,而不直接用r是因为在直线的部分曲率将会变成无限大。曲到数就可以用0代替无限大。(注:个人认为取倒数更加合理,因为直接曲半径的话,曲率大的地方值小,取率小的地方值反而大,不符合理解的习惯)
# P9 V4 n% x7 q. j- [4 t t |
|
|
|