新聞中心

NURBS曲線知識

作者: 時(shí)間:2011-06-11 來源:網(wǎng)絡(luò) 收藏
Nurbs 概述

  Nurbs是非統(tǒng)一有理樣條曲線(Non-Uniform Rational B-Splines)的縮寫,NURBS由Versprille在其博士學(xué)位論文中提出,1991年,國際標(biāo)準(zhǔn)化組織(ISO)頒布的工業(yè)產(chǎn)品數(shù)據(jù)交換標(biāo)準(zhǔn)STEP中,把NURBS作為定義工業(yè)產(chǎn)品幾何形狀的唯一數(shù)學(xué)方法。1992年,國際標(biāo)準(zhǔn)化組織又將NURBS納入到規(guī)定獨(dú)立于設(shè)備的交互圖形編程接口的國際標(biāo)準(zhǔn)PHIGS(程序員層次交互圖形系統(tǒng))中,作為PHIGS Plus的擴(kuò)充部分。目前,Bezier、有理Bezier、均勻B樣條和非均勻B樣條都被統(tǒng)一到NURBS中。

  NURBS曲線和NURBS曲面在傳統(tǒng)的制圖領(lǐng)域是不存在的,是為使用計(jì)算機(jī)進(jìn)行3D建模而專門建立的。在3D建模的內(nèi)部空間用曲線和曲面來表現(xiàn)輪廓和外形。它們是用數(shù)學(xué)表達(dá)式構(gòu)建的,NURBS數(shù)學(xué)表達(dá)式是一種復(fù)合體。在這里,只是簡要地介紹一下NURBS的概念,來幫助了解怎樣建立NURBS和NURBS物體為什么會有這樣的表現(xiàn)。

  Nurbs的起源

  樣條曲線是一類特殊的曲線,最初在計(jì)算機(jī)建模出現(xiàn)之前由船舶工業(yè)發(fā)展需求而創(chuàng)造并發(fā)展起來的。當(dāng)時(shí)

NURBS曲線知識

  樣條的最初定義海軍的設(shè)計(jì)師需要通過幾個(gè)點(diǎn)來畫一條光滑曲線。為此他們想出了一個(gè)簡單而有效的方法,就是將金屬重物(Weights)(這在后來的數(shù)學(xué)解釋上稱之為結(jié)點(diǎn)Knots)放置在控制點(diǎn)(Control Points)上,并使用薄金屬片繞過這些控制點(diǎn)自然彎曲得到光滑變化的形狀,他們把這個(gè)形狀稱之為樣條。

  在物理上,樣條的形狀在結(jié)點(diǎn)處的影響最大并且沿著樣條遠(yuǎn)離結(jié)點(diǎn)會逐漸減小,想要獲得對樣條某一區(qū)域更多的控制,只能在相應(yīng)的區(qū)域增加更多的結(jié)點(diǎn)才行。

  這種方案在數(shù)據(jù)交換的時(shí)候遇到了麻煩,因?yàn)橐诓煌钠脚_進(jìn)行數(shù)據(jù)交換,人們必須用一種數(shù)學(xué)的方法來描述曲線的形狀,為此誕生了三次方程樣條。后來從多項(xiàng)式樣條引伸出B樣條(基礎(chǔ)樣條),B樣條是低級別的多項(xiàng)式樣條的集合,為了適應(yīng)更復(fù)雜的樣條數(shù)據(jù)交換,最后從B樣條又引申出了Nurbs樣條。

  1 NURBS的定義

  NURBS是Non-Uniform Rational B-Splines的縮寫,是非統(tǒng)一有理B樣條的意思。具體解釋是:

  .Non-Uniform(非統(tǒng)一):是指一個(gè)控制頂點(diǎn)的影響力的范圍能夠改變。當(dāng)創(chuàng)建一個(gè)不規(guī)則曲面的時(shí)候這一點(diǎn)非常有用。同樣,統(tǒng)一的曲線和曲面在透視投影下也不是無變化的,對于交互的3D建模來說這是一個(gè)嚴(yán)重的缺陷。

  .Rational(有理):是指每個(gè)NURBS物體都可以用數(shù)學(xué)表達(dá)式來定義。

  .B-Spline(B樣條):是指用路線來構(gòu)建一條曲線,在一個(gè)或更多的點(diǎn)之間以內(nèi)插值替換的。

  簡單地說,NURBS就是專門做曲面物體的一種造型方法。NURBS造型總是由曲線和曲面來定義的,所以要在NURBS表面里生成一條有棱角的邊是很困難的。就是因?yàn)檫@一特點(diǎn),我們可以用它做出各種復(fù)雜的曲面造型和表現(xiàn)特殊的效果,如人的皮膚,面貌或流線型的跑車等。

  2 度數(shù)和連續(xù)性

  所有的曲線都有Degree(度數(shù))。一條曲線的度數(shù)在表現(xiàn)所使用的等式里面是最主要的指數(shù)。一個(gè)直線的等式度數(shù)是1,一個(gè)二次的等式度數(shù)是2.NURBS曲線表現(xiàn)是立方等式,度數(shù)是3.可以把度數(shù)設(shè)得很高,但通常不必要這樣做。雖然度數(shù)越高曲線越圓滑,但計(jì)算時(shí)間也越長。一般只要記住Degree(度數(shù))值越高曲線越圓滑就可以了。

  曲線也都有Continuity(連續(xù)性)。一條連續(xù)的曲線是不間斷的。連續(xù)性有不同的級別,一條曲線有一個(gè)角度或尖端,它的連續(xù)是是C0。一條曲線如果沒有尖端但曲率有改變,連續(xù)性是C1。如果一條曲線是連續(xù)的,曲率不改變,連續(xù)性是C2,如圖所示。

  一條曲線可以有較高的連續(xù)性,但對于計(jì)算機(jī)建模來說這三個(gè)級別已經(jīng)夠了。通常眼睛不能區(qū)別C2連續(xù)性和更高的連續(xù)性之間的差別。

  連續(xù)性和度數(shù)是有關(guān)系的。一個(gè)度數(shù)為3的等式能產(chǎn)生C2連續(xù)性曲線。NURBS造型通常不需要這么高度數(shù)的曲線。

  一條不同片斷的NURBS曲線可以用不同級別的連續(xù)性。具體來說,在同樣的位置或非??拷牡胤椒胖靡恍┛煽攸c(diǎn),會降低連續(xù)性的級別。兩個(gè)重疊的可控點(diǎn)會使曲率變尖銳。三個(gè)重疊的可控點(diǎn)會在曲線里建立一個(gè)有角度的尖角。附加一個(gè)或兩個(gè)可控點(diǎn)會在曲線的附近聯(lián)合它們的影響力。

  從可控點(diǎn)中刪除一個(gè)離開它們,就增加了曲線的連續(xù)性的級別。在3DMAX里,F(xiàn)use(熔化)可控點(diǎn)會在曲線里建立一個(gè)假象的曲率或尖角。如果要恢復(fù)原狀,Unfuse(反熔化)那個(gè)點(diǎn)就可以了。

  3 Refine(精煉)曲線和曲面

  精煉一條NURBS曲線的方法是在上面加更多的可控點(diǎn)。精煉能更精細(xì)地控制曲線。當(dāng)在3DMAX里精煉一條曲線的時(shí)候,軟件會保持原始的曲率(從技術(shù)上說,它保持著統(tǒng)一的節(jié)點(diǎn)矢量)。換句話說,曲線的形狀不會改變,但是相鄰的可控點(diǎn)會從新加的可控點(diǎn)那里移開。

  NURBS曲面與NURBS曲線本質(zhì)上有一親的屬性。

  4 點(diǎn)曲線和點(diǎn)曲面的概念

  在3DMAX里可以用點(diǎn)曲線和點(diǎn)曲面來建立模型??刂七@些物體的點(diǎn)是被強(qiáng)制依附于曲線或曲面上的。它沒有黃色的虛線控制格和重量控制。這是一個(gè)比較簡單的界面,初學(xué)者可能更喜歡用。這并不是說高級用戶就用不上了,如果是那樣的話開發(fā)商就不會把它加到3DMAX中去了??梢杂没A(chǔ)點(diǎn)來構(gòu)建一條曲線,然后構(gòu)建從屬曲面。

  可以使用按鈕來把點(diǎn)曲線或點(diǎn)曲面轉(zhuǎn)換成獨(dú)立的可控曲線或可控曲面。另一方面,盡量不要把可控曲線或曲面轉(zhuǎn)換成點(diǎn)曲線或曲面,因?yàn)檫@樣會有多種點(diǎn)的解決方案,會有難以遇料的結(jié)果。

  5 Tolerance(容差)

  這里先介紹一個(gè)容差的概念,以后將要用到。容差是指在3DMAX所使用的度量單位里的一個(gè)距離。如果連接的曲線間的間距大于這個(gè)值,3DMAX實(shí)際上是先建立一條融合曲線,然后再把三個(gè)部分連接在一起形成一條完整的曲線。如果間距小于這個(gè)值,則3DMAX不建立融合曲線。

  先在兩條曲線間建立一條Blend(融合)曲線,然后把三條曲線連接在一起形成一條單個(gè)的曲線,這是一種比較好的方法,得到的結(jié)果與父曲線匹配得很好。

  當(dāng)有一個(gè)距離,但是它太小的時(shí)候會出現(xiàn)問題。在這種情況下,3DMAX要產(chǎn)生融合,但是因?yàn)槟抢餂]有足夠的空間給它,結(jié)果曲線會有一個(gè)環(huán)形在那里。要避免這個(gè)環(huán)形,把Tolerance(容差)設(shè)置得比間距大就可以了。如果設(shè)置容差為0,3DMAX會為它選擇一個(gè)值。

矢量控制相關(guān)文章:矢量控制原理


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉