|
0.前言 " C0 p" v3 h- j1 j% _. v6 N
# [; v ]( h+ a7 J& |# b' ARhino是由美国Mcneel公司出品的一款可应用于工业造型等多种领域的三维造型软件,虽然它的名气没有3DSMAX等软件那么大,但是它建模快捷,上手容易,软件规模较小,而且输出的模型可以用于其它造型软件,它的使用方法与著名软件AUTOCAD相似,它的界面采用四个视窗及菜单、工具条的方式,它的操作采取命令驱动方式进行,这些都使人感到它是吸取了多种软件好的地方,所以已经越来越受到广大设计人员的喜爱。1 q: [- l5 Y _* f, Y1 z
" V {& C, [' K* ]$ S" Q
Rhino建模是基于NURBS曲线曲面的。NURBS的中文名称是非均匀有理B样条曲线(Non-Uniform Rational B-Splines),它是计算机图形学中一种描述曲线和曲面的数学方式。NURBS曲线和曲面相对于其它的图形表达数学模型有它优秀的地方,即它的局部控制性。当我们对曲线或曲面上的某个控制点进行局部调节时,不会影响到其它的部分,因此目前不少的三维造型软件都支持或采用这种建模方式,如3DSMAX、MAYA等。
$ v$ q' U4 G( s0 X6 v! e! a
( C, g+ S' b/ G# R3 e* ^# T$ MRhino建模虽然有其方便快捷的优点,但是在使用过程中也会发生一些意想不到的失败,比如倒圆角就是其中一个令人头痛的问题。本文旨在对建模中倒圆角常发生失败的情况作一个总结,并提出解决的方法,希望对设计人员能有所帮助。
4 }: U: V1 Y0 X5 M& g0 r- Y( r1 k% z) y% S0 ` w6 s
9 Q' Y' ?& W8 }1.由于构造曲面的截面线不适当而造成的倒圆角失败$ p D1 Z$ o4 V; F( [* g
: _0 R; E% a/ ?: |3 O" F, u# l" M0 c* I7 Q/ ?1 F
在构造曲面时我们一般是通过先在一个视窗内绘制出一条平面曲线,然后通过Extrude拉伸而形成曲面。在构造这条曲线时,有时并不是一条线一次绘制完成的,而是绘制多次,因而由若干条曲线来组成的。如图1所示图形,它就是由三段曲线组成的。此时,在利用该曲线构造曲面时又分为以下几种情况:1 `7 p" Z* k; q# Q2 Z2 a
. \5 i5 P. @1 f* ]5 d
1)直接将所有曲线同时选中进行拉伸形成曲面,
8 {# p: W; Z6 c这时形成的曲面是多段的,为了演示倒圆角,可在其上部加一盖子,然后用FilletSrf对它们进行倒圆角,这时会发现,周围的面不能同时都选中,只能选中其中一段,这时倒出的圆角只是其中一段曲面与顶面的倒圆角,如图2所示,如果再继续对周边其它面进行倒圆角,会发现倒角接头处无法光滑连接。
" v( n6 K; R0 }
% m6 j3 D9 |$ w3 G) E
& o7 t+ p5 s" c3 |& F+ g0 U2)若是在拉伸前先将所有曲线通过Join命令连接到一起,然后再象上面那样进行倒圆角,也不能解决问题,最后的结果也同上。2 o D; L( { S. L! |0 h# ~$ X
. s0 R5 m% r ]- I q3)若是在拉伸前,先将各段曲线进行Match,并在Continuity中勾选Tangency,同时也勾选Average Curves、Preserve other end、Join,然后再经过拉伸形成曲面,这时整个曲面已经成为一个曲面了,可是进行倒圆角后却发生如图3所示的倒角错误。
4 S% {6 m# i9 P, A7 ^+ f即便是在Match时,选中Curvature和Merge,最后也会发生同样的错误。2 P) q* c5 x3 S% O% x
$ y6 |% a( [0 J5 T4 W解决方法:第一种情况在建模时应该尽可能的避免,除非有特殊需要。
* C1 r1 I3 X" I2 x6 D8 `第二、三种情况主要是因为生成的曲线控制点数目对倒圆角有影响,此时有二个解决方法,一个是所有的面都填加起来,组成一个封闭的多段面,在Rhino中又称为实体,然后用实体倒圆角的命令FilletEdge选择棱进行倒圆角,如果要制作的对象本身就是封闭的,那这种方法更为方便 $ G0 D8 ~9 c# ~
4 I# {/ l4 h4 @7 G) c% `$ t;第二个方法,则是对Match后的曲线,应用Rebuild命令进行重建,为了使得重建后的曲线与原曲线相同,控制点数应尽量多设置一些,如本例设控制点数为20,阶数为3,重建后的曲线控制点数不但增加了,而且显得也均匀了。这时再进行倒圆角的操作,就可以得到满意的结果。
" o: z! c$ w0 K( g; k& b3 q+ a5 |6 U4 B% n2 V0 S
$ h. ~$ Z+ \) p
2.倒圆角时倒角面发生自相交而造成的失败 U" j A" h8 N$ i. c
( i3 r5 M, J7 a
- [- }& W. `$ v1 H' ?! T7 _% `如图4所示对象,箭头所指处有三条棱交汇,目的是要对三条棱都倒圆角,现在先倒好了一条棱,然后要再倒另外两条棱,可在倒的时候却发生用原来的半径值无法进行倒圆角的情况,除非将倒圆角半径设置小到一定的程度。0 U' }" }( U# L0 w2 j# ?
3 a. q. h& \& \8 l2 ?! X+ h
这种现象发生的原因是因为在倒圆角时,系统实际上是在两个面之间以倒圆角半径绘制一个与两个面都相切的圆柱面,如图5所示,然后再将多余的部分剪切掉。
# L6 G& I$ R; e H& X' G) J' E这个圆柱面在转折处不能发生自交,否则就会失败。因此倒圆角能否成功与倒圆角的半径和两面相交的棱的曲率有关。前述例子由于先进行了一次倒角,二次倒角时在箭头所指处以前面的倒角半径来倒角时圆柱面会发生自交,所以倒圆角失败。% g- M5 a( R/ e9 d& a) Y* G( K
3 t' N/ K! H% L; }' }5 Q5 W
解决的方法是:如果一定要使三条棱倒圆角的半径都相同,应该在倒圆角之前使其所有的面完全封闭或最初在制作该模型时就将其当作立体来做,然后使用立体中的倒圆角命令FilletEdge,将三条棱同时选中,进行倒角,效果如图6所示。3 Y+ E% Y7 b" h
4 T) ]/ W1 r: ] A) J7 T( {/ R( i1 r5 L) h: P0 E# I. Q
3.倒角面的高度发生了变化而造成不能以同一半径倒圆角 7 ?5 m3 l6 Y. P y s# a
+ C* Z! g! G/ }如图7所示有这样一个模型,要在圆柱与立板间倒一个半径为8的圆角。如果直接用FilletEdge倒圆角,则将会失败,如图8所示。, ~+ z% B, V$ K
. c, E5 N! k4 E1 n* e1 I0 R
解决的方法:
: [1 n& {0 H" O) W1,将立体炸开为单个面,Copy圆柱面与立板面相交的交线;
8 h3 [0 }7 K$ b/ q2,用Point命令在该线的最下端加一个点对象,然后用该点将该曲线分离为两部分,如图9所示;5 j' l6 M* M4 T; ` @0 f
3,分别以两段弧线应用Pipe命令,两端的半径分别为8和0,然后将两个立体炸开,删除封闭它们的圆面,如图10所示;
+ j; q4 V, B# d% `, Y5 ]) g4,利用这两个曲面作为剪切边将圆柱面与立面被曲面包围的部分都剪切掉,剪切时为了操作方便,可以先通过Intersect命令求出它们的交线,然后再利用交线作为剪切边来进行修剪,求出交线后要注意看其是否符合要求,若不符合可将控制点打开进行编辑;
+ ?8 g7 U$ W- H& g5,利用BlendSrf命令在两个缺口间制作出倒圆角面,最后的效果如图11所示。
( o0 j7 U- y, A
/ y/ Q9 ~% \- f( ~* X( @$ m, e. k- J: ~
% V8 N/ o9 _6 N3 e$ e3 r, C% S5 ]
4.并交差运算后带来的曲面分块造成倒圆角失败
6 [% F2 S% ~8 S0 Z0 E' o( g) _4 [, ^; V) r$ X/ G
如图12所示立体,是由两个立方体并运算而成的。在对三条汇聚的棱倒圆角时,发生如图13所示的撕裂现象。' Y2 {1 _5 X1 j+ o* Q0 ?6 h
1 U: s9 t; z/ a解决方法:
* y; S/ T4 p5 l+ \; Y4 g7 f该现象出现的原因是立板的侧面与水平板的侧面实际上是两个面,在用FilletEdge倒圆角时,两个面分别要与其它面进行倒圆角,所以在此处撕扯开了。在这种情况下只能通过修补的办法来创建完美的圆角面,修补的步骤如下:
; e( Y# f( `" {6 i- V $ p; L" ?* W( P: a% G0 `$ V
1,首先将立体炸开,绘制如图14 所示的一个圆;
9 |! I' M) @, w2,然后以此圆作为剪切边将这个角上的面剪切掉;7 Y+ `: @9 a G6 X( t! U
3,利用Patch命令,选择缺口处的四条边,调整Stiffness为0.1,这时就可以得到满意的结果了。
S7 J* o9 P7 q, |6 }2 A3 j! q; W9 R! x& {
如图15所示。- b2 D' }% K9 O5 U
2 O" M1 V0 b" P! \- i8 T$ C
& ~& H8 ]( @5 K* j6 Y实际上在制作这个立体时,还可考虑采取另外一种作法:先绘制出一个L形的平面图形,然后将此图形进行拉伸形成这个立体,这时再对其进行倒圆角就不会发生错误了。 X" B2 |2 G8 N6 ~, @
% ~5 g/ C0 j) U* i2 K5 G综上所述,本文虽然是通过一些简单的模型来介绍倒圆角失败的情况及解决方法的,但对于复杂的模型,在建模时出现倒角失败主要也是这几种情况,也可以采取同样的方法加以解决。- O" {. U$ p2 n @7 G' P' [
& `! |9 \: R) ]7 g: X- I参考文献: $ V0 ]! V. F f1 d+ q- \) \ I
1, John Wilson,Digging Deeper Into Rhino Surfaces,
% ]" R9 W Y$ w, M
" }7 e$ C/ c- o' ^! U: }3 J2,Eiad Said Dahnim ,Fillet a box corner,
& S, ?# r& f0 A) X% e5 j6 Y) y) B( N
* {) [. y: s' ~2 O% ?. U3,ACE工作室,犀牛Rhino3D魔典,北京希望电子出版社7 X2 T5 F* x, y! H$ b: Z9 S
|
|
|