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