發(fā)布時間:2024-03-21 13:33:51 瀏覽量:105次
畫一條曲線,畫很多條曲線,讓曲線連接、旋轉(zhuǎn)、平移,就能建出曲面,進(jìn)而搭建出模型。今天的一切工業(yè)產(chǎn)品設(shè)計,需都要曲面建模完成產(chǎn)品的參數(shù)定義。
但在一切發(fā)生之前,我們需要先得到一條曲線。
你在 PS 里隨手畫的線條本質(zhì)上不是曲線。把它們放大,這條線會越來越模糊,最后變成一個個不同顏色的色塊。
但只要色塊足夠小,在人眼中的邊緣就是平滑的。這種顯示模式被稱為點陣圖像,也叫位圖。
計算機(jī)不像人類一樣擁有徒手畫線的能力,要畫真正的曲線,就需要通過數(shù)學(xué)函數(shù)計算每個點的位置,再把點連成曲線。
貝塞爾曲線就是這樣一種非常直觀的曲線函數(shù)。
這里有 A、B、C 三個點,我們在 AB 線段上任選一個點 D,根據(jù) AD 和 AB 的比值,在 BC 線段上找到一個點 E,讓 AD:AB=BE:BC 。再連接 DE ,在 DE 線段上找出點 F,讓 DF:DE = AD:AB = BE:BC。
這個 F 點,就是我們要得到的貝塞爾曲線上的一個點。讓 D 點從 A 移動到 B,把得到的所有 F 點連起來,就是 ABC 三個點所定義曲線,稱作二次貝塞爾曲線。
控制點越多,次數(shù)就越多。設(shè)計軟件常用的畫筆工具就是分段三次貝塞爾曲線,通過兩個錨點和兩個控制點,定義一條曲線。
這種用數(shù)學(xué)表達(dá)式定義的圖形被稱為矢量圖。無論放大多少倍,都不會丟失信息,出現(xiàn)位圖模式下的鋸齒。
貝塞爾曲線的問題是,當(dāng)控制點數(shù)量過多時,每個點對于曲線的控制就會變?nèi)?。且調(diào)整任意一個點都會影響整條曲線,不能只修改局部。
如果把像鋼筆工具一樣把貝塞爾曲線分段,曲線與曲線的拼接就不夠光滑。無法達(dá)到工業(yè)設(shè)建模要求的 C2 連續(xù)。
于是,在貝塞爾曲線的基礎(chǔ)上,發(fā)展出了 NURBS 曲線。Non-Uniform Rational B-Splines,中文叫非均勻有理 B 樣條。
B 樣條可以被看做一系列基函數(shù)的線性組合,而這些基函數(shù)又是由低次的基函數(shù)線性組合而來,每兩個節(jié)點矢量之間有不同的差值,且可以調(diào)節(jié)權(quán)重。
我知道你沒有聽懂,在寫下上面這段話的時候,我們其實也沒搞懂。所以,我們完整的學(xué)習(xí)了清華大學(xué)的計算機(jī)圖形學(xué)教材?,F(xiàn)在,我們終于理解了什么是非均勻有理 B 樣條。
接下來的內(nèi)容將非常有趣,讓我們開始吧。
首先我們要知道,貝塞爾和 NURBS 等曲線并不按照傳統(tǒng)的 y=f(x) 的函數(shù)關(guān)系表達(dá)。而是通過定義一個新參數(shù)t,把曲線表示為一個多項式。在三維空間,就可以表示為P(t)=[x(t),y(t),z(t)]。
比如一條直線段就可參數(shù)化表示為:
P 代表點的位置,包含 X,Y,Z 軸的坐標(biāo)信息,P1 是這條直線的起點,P2 是這條直線的終點。
那么,t 等于 0 時,P(t) 的位置就在 P1上,t 等于 1 時,P(t) 的位置就在 P2上,把 t 在 0 到 1 區(qū)間的每一個值對應(yīng)的 P(t) 坐標(biāo)連起來,就是 P1 和 P2 相連的直線。
參數(shù)函數(shù)可以清晰的表達(dá)各種曲線,比如四分之一圓弧就可表示為這樣 :
理解了參數(shù)函數(shù),我們就可以進(jìn)一步理解貝塞爾曲線的函數(shù)。這是求和符號,這是基函數(shù),不用擔(dān)心,我們接下來會進(jìn)一步介紹。
為了生成曲線,我們需要先確定 n+1 個控制點,記作 Pi,讓每個控制點與一個基函數(shù)相乘,再把結(jié)果相加,就可以獲得參數(shù) t 對應(yīng)的 P(t) 坐標(biāo),連起來就是一條逼近控制點的曲線。
以有 P0,P1,P2,P3 四個控制點的三次貝塞爾曲線為例,每一個點都有一條對應(yīng)的基函數(shù)曲線。
可以看到,t 為 0 時,P1,P2,P3 的基函數(shù)結(jié)果都是 0,此時P(t) 的位置就在 P0 上,t 為 1 時,P0,P1,P2 的函數(shù)結(jié)果都是0,此時P(t) 的位置就在 P3上。
而 t 在 0 和 1 之間時,P(t) 的位置就是這四條函數(shù)與控制點相乘再相加的結(jié)果。這也意味這每個控制點的位置發(fā)生變化,都會影響最終生成的整條曲線。
而 B 樣條則通過分段函數(shù)多次遞歸的方式解決了貝塞爾曲線的問題??梢钥吹?,B 樣條和貝塞爾的函數(shù)邏輯并無區(qū)別,但基函數(shù)和定義域 t 發(fā)生了變化。
這是 B 樣條的基函數(shù),i 是控制點的編號,k 是這條曲線的次數(shù)。
讓我們以有 4 個控制點的 3 次 B 樣條為例。
為了曲線可以被局部控制,首先需要設(shè)置 t0至 t7 共 8個 (4+3+1) 節(jié)點,每個節(jié)點都有固定的數(shù)值,我們就取 0、1、2、3、4、5、6、7 為 8 個節(jié)點的數(shù)值。
從基函數(shù)公式中我們可以看到,要計算 3 次 B 樣條基函數(shù),先要計算 2 次基函數(shù),要計算 2次,要先計算 1 次,要計算 1 次,就要先計算 0 次。
根據(jù)公式,控制點 P0 的 0 次基函數(shù) N0,0 只在 t0 和 t1 之間是 1, 其他區(qū)間都是 0。
以此類推,我們可以畫出剩余 3 個控制點的基函數(shù) N1,0 到 N3,0 。而 t4 至 t7 節(jié)點還會生成三條基函數(shù),用于之后的計算。
在 0 次基函數(shù)的基礎(chǔ)上,我們可以計算 1 次基函數(shù)。
基函數(shù) N0,0 和 N1,0 會組合生成一個新節(jié)點,對應(yīng)的基函數(shù)是 N0,1。以此類推,N1,0 和 N2,0 會組合成 N1,1 ;N3,0 和 N4,0 會組合成 N3,1。
此時的 B 樣條是就這四條基函數(shù)和 Pi 乘積的和,即4個控制點連接的直線。
之后,可以再計算得出 2 次基函數(shù),N0,2 到 N3,2 。再計算出 3次基函數(shù)。N0,3,N1,3,N2,3,N3,3 。最后帶入公式中,就可以算出 P(t),得出整條曲線。
在這張圖中,我們可以更清晰的看到 B 樣條基函數(shù)的遞歸邏輯。
不難發(fā)現(xiàn),每個 3 次基函數(shù)都只在4個節(jié)點區(qū)間內(nèi)有數(shù)值,這也意味著,這個控制點終于實現(xiàn)了貝塞爾曲線做不到的局部控制。
在剛剛的例子中,節(jié)點之間的數(shù)值是相等的,所以也被稱為均勻 B 樣條。實際應(yīng)用中,更常見的是節(jié)點間距不相等的非均勻 B 樣條,讓控制點獲得更靈活的控制范圍。
而「有理」,意味著可以對B 樣條的每個控制點設(shè)定不同的權(quán)重,進(jìn)一步控制曲線。
這就是非均勻有理 B 樣條。
你可以在這個網(wǎng)站中,更直觀的理解 NURBS 曲線。
每個控制點有4個參數(shù),XYZ 軸的坐標(biāo)和權(quán)重,權(quán)重越高,曲線就越靠近該點,讓控制點獲得對曲線更高的影響力。
而次數(shù)則意味則分段函數(shù)的計算次數(shù)。
次數(shù)為 1 時,就是各個控制點連接的直線。次數(shù)為 2 時,每段直線的會計算成為多段曲線,次數(shù)為 3 時,分段曲線會進(jìn)一步計算,生成更短更平滑的曲線。次數(shù)可以不斷升高,但在實際應(yīng)用中,3 次已經(jīng)夠用了。
可以看到,10個同樣位置的控制點,3 次的 NURBS 曲線就要比 9 次的貝塞爾曲線平滑可控的多。
有了 B 樣條之后,讓曲線連接、旋轉(zhuǎn)、平移,就能構(gòu)建出曲面了。
接下來,我們的三維模型師杰蘇爾將完成一次建模。
首先用 B 樣條勾勒出我們想要的模型輪廓,再添加幾個額外的點讓直線部分更垂直。之后,添加圓形樣條,再用掃描將模型的基礎(chǔ)形態(tài)制作出來,調(diào)整封頂形狀,就基本完成了模型的身體。
再添加眼球、瞳孔,增加細(xì)分曲面,調(diào)整大小和位置,然后再復(fù)制另一個眼球,一個回形針模型就完成了。
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇。《天命奇御》具有多線劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
7. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開發(fā)一款游戲(游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧)
?游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧無論您是剛剛起步開發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨立游戲開發(fā)技巧都可以幫助您更好地設(shè)計下一款游戲。無論你對游戲有著什么樣的概念,都
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
最新文章
同學(xué)您好!