【引言】
越來越難了,要又心理準(zhǔn)備啊紧显。
這篇研究一下XPRESSO和材質(zhì)方面的應(yīng)用。通過四個案例學(xué)習(xí)幾個重要的“節(jié)點”缕棵。
【研究】
第一案例 制作材質(zhì)動畫孵班。
在《XPRESSO入門-5》中,舉例子制作過下圖招驴,皮帶繞輪子轉(zhuǎn)動的動畫篙程。方法是利用XPRESSO控制皮帶模型上材質(zhì)的U和V方向的數(shù)值,制作出該材質(zhì)紋理移動的動畫别厘。實際上虱饿,利用這種辦法可以制作出很多類似的動畫,比如管線中的水流動畫等触趴。
再比如:
1氮发、理發(fā)館門口的招牌燈的制作。
2冗懦、你可以用XPRESSO控制里邊“圓柱”爽冕,制作旋轉(zhuǎn)動畫。但也可以用XPRESSO直接控制“圓柱”的紋理披蕉,制作出旋轉(zhuǎn)動畫颈畸。就看哪個更方便控制,就用哪一個没讲。
第二案例 制作一個能夠改變的材質(zhì)動畫眯娱。
場景如果有一個模型,我們想把它的材質(zhì)改變(當(dāng)然食零,你必須先制作出不同的材質(zhì)),使用XPRESSO寂屏,會更加方便贰谣。
1娜搂、在場景中建立一個立方體。
2吱抚、建立如下材質(zhì)(漫反射百宇、玻璃、鋼等秘豹,隨你)
3携御、添加一個空白物體,建立XP標(biāo)簽既绕。把任意一個材質(zhì)球賦給立方體啄刹。
4、點擊空白物體凄贩,添加“用戶數(shù)據(jù)”誓军,建立如下數(shù)據(jù)。
5疲扎、打開XPRESSO編輯器昵时,添加-XPRESSO節(jié)點--常規(guī)--鏈接列表。在屬性欄椒丧,把7個材質(zhì)拖進來壹甥。
6、“鏈接列表”節(jié)點
輸入端口:
索引[-2147483648..2147483647] 此端口使您可以從列表中訪問一個特定的對象壶熏。例如句柠,傳遞的值為 0 到此端口,以訪問的列表中第一個對象久橙;輸入值為 1 俄占,來訪問列表中第二個對象等等。
如果索引值大于列表中的對象數(shù)目淆衷,該指數(shù)再次循環(huán)返回到列表的開頭缸榄。比如,在列表中有兩個對象和索引值為 2祝拯,該節(jié)點將輸出的第一個對象 (從0開始甚带,0為第一個)。
輸出端口:
鏈接:輸出鏈接列表中選定的索引號對應(yīng)的對象佳头。
數(shù)量 :[-2147483648..2147483647] ? 輸出鏈接列表中的對象的總數(shù)鹰贵。
7、把模型右側(cè)的紋理拖入進來康嘉,把空白物體拖入進來碉输,建立如下連接⊥ふ洌空白數(shù)據(jù)節(jié)點--用戶自己定義--數(shù)據(jù)敷钾,鏈接“鏈接列表”的索引節(jié)點枝哄。鏈接輸出端連接紋理的“材質(zhì)”輸入端口。
8阻荒、調(diào)整數(shù)據(jù)輸入(0-6)挠锥,渲染看看:(因為列表里共有7個材質(zhì),所以編號從0-6)
9侨赡、由于自定義數(shù)據(jù)蓖租,動畫的屬性是勾選的,所以我們可以K幀制作材質(zhì)變化的動畫羊壹。
10蓖宦、在0幀點,數(shù)量為0舶掖,在90幀球昨,數(shù)量為6,進行K幀眨攘。按SHIFT+F3主慰,調(diào)出時間線,調(diào)整動畫的曲線為直線鲫售,這樣保證材質(zhì)變化是均勻的共螺。渲染動畫就如題圖所示。
11情竹、如何讓材質(zhì)隨機變化呢藐不?
那么就必須采用“隨機”節(jié)點,讓它隨機產(chǎn)生0-6的隨機數(shù)值出來秦效。打開XPRESSO編輯器雏蛮,添加一個隨機節(jié)點。
該節(jié)點能夠產(chǎn)生隨機數(shù)阱州。
屬性面板:
有兩種模式可用于生成這些數(shù)字: 自由和時間挑秉。在屬性管理器中選擇所需的模式。
該節(jié)點可以輸出隨機值的下列數(shù)據(jù)類型: 布爾苔货、 整數(shù)犀概、 法線、 實數(shù)或矢量夜惭。指定通過該節(jié)點的輸出端口所需的數(shù)據(jù)類型姻灶。
自由模式:在此模式下,將生成隨機數(shù)诈茧,每次計算節(jié)點時將產(chǎn)生新的隨機值产喉。這將導(dǎo)致每個動畫看起來不同。
時間模式:在此模式下,相同的隨機數(shù)曾沈,將生成每幀動畫尘颓,即,如果動畫是停了下來晦譬,然后重播它將會前一動畫一樣,因為互广,例如敛腌,幀 34 始終將輸出相同的值。
僅有正的:這個你懂得惫皱。
輸入端口:只有一個“隨機種子”像樊,改變它的值,會產(chǎn)生不同的隨機值旅敷。(比如種子為“123”生棍,那么你可能在一個流程產(chǎn)生的隨機數(shù)值不同雖然不同,但是媳谁,如果再執(zhí)行一遍涂滴,它產(chǎn)生還是這些隨機數(shù)值。為了產(chǎn)生變化晴音,每次循環(huán)柔纵,輸入不同的隨機種子,那么它產(chǎn)生的隨機數(shù)值是完全不同的锤躁,保證了隨機性搁料,這就是它的用處。)
輸出端口:
實數(shù):-1.0 ?~1.0 可以添加多個輸出端口系羞。
整數(shù):-2147483648..2147483647郭计。
布爾:0或1。
法線:用XYZ表示椒振。
矢量:用XYZ表示昭伸。
12、如何讓它隨機產(chǎn)生0-6的隨機數(shù)值出來杠人?
首先保證隨機數(shù)節(jié)點 RAND()產(chǎn)生的數(shù)值范圍是: 1>RAND()>0勋乾;利用絕對節(jié)點,來處理這個問題嗡善。
其次:生成一定范圍的隨機數(shù)方法是這樣的辑莫,假設(shè)給定數(shù)字范圍最小是A,最大是B罩引,公式是:
=A+RAND()*(B-A)各吨。舉例來說,要生成大于60小于100的隨機數(shù)字,因為(100-60)*RAND()返回結(jié)果是0到40之間揭蜒,加上范圍的下限60就返回了60到100之間的數(shù)字横浑。
添加絕對節(jié)點把隨機從 -1~1,轉(zhuǎn)換為0~1屉更;數(shù)學(xué)節(jié)點采用乘法徙融,“輸入2端口”的數(shù)值為6 (6-0),再加上0就不用編寫了瑰谜。最后用通用節(jié)點欺冀,數(shù)據(jù)類型為“整數(shù)”,保證隨機值:0-6萨脑。
13隐轩、建立連接如下:點擊播放,發(fā)現(xiàn)材質(zhì)更換跟“瘋”了一樣渤早。如何控制變化的節(jié)奏看职车?必須建立一個“時鐘”或開關(guān)控制隨機數(shù)產(chǎn)生的頻率。這個問題參考上一篇鹊杖,自己研究一下悴灵。
第三案例 ?另一種改變紋理方法
上面的方法雖然能改變一個模型上的紋理,它的優(yōu)點是隨機性好骂蓖,但可控性差称勋。下面再舉一個案例用另一種方法改變紋理,這個方法比上一個方法的可控性好涯竟。
1赡鲜、在場景中建立如下材質(zhì)和一個模型”球“。
2庐船、建立反射環(huán)境-天空银酬;再建立空白物體,添加XPRESSO標(biāo)簽筐钟。
3揩瞪、點擊空白--用戶數(shù)據(jù)
首先“添加群組”--建立“控制組”;在“控制組”下面點擊添加數(shù)據(jù)---建立“材質(zhì)列表”篓冲。 數(shù)據(jù)類型--整數(shù)李破;用戶界面---循環(huán)。勾選動畫(可以K幀)壹将。
其次嗤攻,添加數(shù)據(jù)格式為:數(shù)字;列表名稱(注意,那個分號為半角分號)诽俯。
4妇菱、在空白的屬性窗口出現(xiàn)--控制--材質(zhì)列表。
5、把空白物體拖入XP編輯面板闯团;把模型”球“右邊的材質(zhì)標(biāo)簽拖入--紋理辛臊;把四種材質(zhì)從材質(zhì)編輯窗口拖入,分別選擇各自的輸出和輸入端口房交,如下彻舰。如何一一對應(yīng)進行連接呢?
6候味、添加--邏輯--條件節(jié)點淹遵。把”條件節(jié)點“數(shù)據(jù)類型改為”材質(zhì)“,這個是關(guān)鍵负溪!建立如下連接。
7济炎、條件節(jié)點用法:有點象編程的SWITCH CASE 語句川抡。
”條件節(jié)點“就像一個交換開關(guān),具有兩個或更多的輸入端口须尚。(可以向該節(jié)點添加任意數(shù)量的”輸入端口“)
”開關(guān)端口“值確定哪個”輸入端口“的值從“輸出端口”輸出出去崖堤。例如,如果開關(guān)設(shè)置為 0耐床,該節(jié)點輸出第一 (即最頂部) 輸入端口值密幔。如果開關(guān)設(shè)置為 1,該節(jié)點輸出第二個輸入端口值等撩轰。選擇”條件節(jié)點“的數(shù)據(jù)類型在屬性管理器中改變胯甩。
了解該節(jié)點以后,還需要解釋上面的邏輯嗎堪嫂?
比如材質(zhì)列表選擇塑料材質(zhì)偎箫,塑料材質(zhì)對應(yīng)的數(shù)值為1,輸入到”條件節(jié)點“的開關(guān)端口皆串,”條件節(jié)點“就把對應(yīng)的“輸入2端口”的值通過“輸出端口”輸出給“紋理節(jié)點”材質(zhì)淹办。輸入2端口的值是什么?是塑料材質(zhì)對象恶复,也就是把塑料材質(zhì)賦給了”球體模型了怜森。
8、渲染測試:
9谤牡、制作材質(zhì)改變動畫副硅,直接點擊材質(zhì)列表進行改變材質(zhì),K幀即可翅萤。(略)
所以說想许,這種方式可控性比較好。
第四案例 ?制作隨機紋理
1、制作一個立方體流纹,然后克隆為如下糜烹。
2、制作一個凹凸材質(zhì)漱凝,賦予克隆疮蹦。渲染之后發(fā)現(xiàn),每個立方材質(zhì)都是一樣的茸炒。這種感覺太死板愕乎。
能否改變一下,使每個立方體的貼圖UV有點偏移壁公,從而產(chǎn)生一些變化感论。
3、在克隆上按C紊册,轉(zhuǎn)化為多個立方體比肄,使每個物體都有該材質(zhì)。一個一個手工改變UV偏移值嗎囊陡?當(dāng)然不能芳绩,我們利用XPRESSO幫助我們改變它們。
4撞反、建立一個空白物體妥色,添加XPRESSO標(biāo)簽。把任意立方體的右側(cè)材質(zhì)標(biāo)簽拖進來遏片。為紋理的偏移U和偏移V添加一個隨機標(biāo)簽嘹害。
5、因為“隨機節(jié)點”輸出端口如果為實數(shù)吮便,那么數(shù)的范圍為-1~1之間的隨機數(shù)吼拥,對于立方體來說偏移太小了(模型為200CM),所以,添加一個數(shù)學(xué)節(jié)點用乘法线衫,“輸入2端口”為100凿可。再利用一個隨機節(jié)點連接紋理的“連續(xù)輸入端”,這個輸入端是布爾值授账,不是1就是0枯跑,如果隨機節(jié)點產(chǎn)生為0,則紋理不連續(xù)白热,否則敛助,只要“隨機節(jié)點”產(chǎn)生的數(shù)據(jù)不是零,紋理就當(dāng)為“真”屋确,產(chǎn)生連續(xù)纳击。
6续扔、不好理解是吧,復(fù)制一個結(jié)果焕数,數(shù)據(jù)類型改為布爾看看纱昧。只要“隨機“節(jié)點實數(shù)輸出的不是0,連續(xù)就當(dāng)為”真“堡赔。
7识脆、現(xiàn)在有一個立方體的紋理發(fā)生偏移了。如何讓這些立方體的紋理都發(fā)生偏移呢善已?用上邊的“鏈接列表”節(jié)點嗎灼捂?
太沒意思了,學(xué)習(xí)幾個新的節(jié)點换团,在幾個節(jié)點配合下悉稠,逐步選出每個材質(zhì)。
先給出邏輯關(guān)系圖吧艘包,這里有三個新節(jié)點:層級的猛,對象索引,標(biāo)簽辑甜,連接如下:
8、點擊播放袍冷,或點擊場景磷醋,你會發(fā)現(xiàn)紋理發(fā)生了不同的偏移,形成”隨機“紋理胡诗,目的達到了邓线。
關(guān)于這三個新節(jié)點的詳細(xì)說明和使用原理,請見下一篇煌恢,這篇內(nèi)容太多了骇陈。我猜你的頭都“痛”了吧?
下圖是“層級節(jié)點”的屬性設(shè)置:
紋理隨機了很多瑰抵。
【感悟】
? ? ? ? 通過以上XPRESSO學(xué)習(xí)你雌,問你一個問題,XPRESSO標(biāo)簽是什么二汛?
? ? ? ? 我感覺:它是一個“萬能”婿崭,又是一個“自定義”標(biāo)簽,什么都沒有肴颊,什么都可能氓栈,什么都能做,非常自由自在婿着,隨你如何編輯授瘦,它的功能就會改變醋界,正如老子的話“玄而又玄,變化出焉”提完,這不像如“平滑”標(biāo)簽?zāi)菢庸δ苣菢庸潭ê陀邢扌畏摹K裕瑥氖聞赢嫷腃G人氯葬,一定要好好學(xué)習(xí)它暗猜ā!
? ? ? ? ?天下一理帚称。我最近學(xué)習(xí)中醫(yī)官研,我的感悟是:中醫(yī)配伍中藥的理論基本都來自《神農(nóng)本草經(jīng)》。本草經(jīng)用簡明的語言只記錄不同的藥物藥性(四氣:溫?zé)岷疀龃扯茫逦端峥喔氏绦粒┖蜌w經(jīng)戏羽,并沒有說明什么東西治療什么病楼吃;而李時珍的《本草綱目》始花,卻詳細(xì)的把什么藥物治療什么病都列出來了,限制了藥物的靈活使用孩锡,中醫(yī)很少用酷宵。(李時珍的最大貢獻不僅是《本草綱目》一書,而是《瀕湖脈學(xué)》)人之所以得病躬窜,是人的的陰陽平衡被破壞了(外部和內(nèi)部的影響)浇垦,中醫(yī)治病就是通過藥物(這只是其中一種辦法之一)的藥性和歸經(jīng),通過人體來調(diào)整自身的陰陽平衡荣挨,使之“升降出入”正常男韧。
? ? ? ? ?跑題了,我的意思是說XPRESSO標(biāo)簽雖然沒有直接什么功能默垄,但是此虑,那里邊能添加各種不同的節(jié)點,經(jīng)過不同的邏輯組合口锭,就會使XPRESSO標(biāo)簽具有不同的功能朦前,就像中醫(yī)配伍中藥一樣,能解決很多不同的問題鹃操。