? ? ? ? ?為什么上一篇用集成電圖,這一篇用電子積木圖呢?比喻它的功能和特點(diǎn):XP(以下簡(jiǎn)稱)每個(gè)節(jié)點(diǎn)的輸入輸出端口以及他們相互的邏輯連接,就像集成電路一樣;XP每個(gè)節(jié)點(diǎn)可以按照邏輯自由地連接,實(shí)現(xiàn)不同的功能就像電子積木一樣??傊沂欠浅O矚g用XP,好用又好玩,這也是我喜歡C4D之一。
? ? ? ? ?通過(guò)上一篇的幾個(gè)實(shí)例,進(jìn)一步了解XPRESSO,又增加了學(xué)習(xí)它的信心,是吧? 那么好,這一篇舉例子談?wù)勈褂肵PRESSO應(yīng)該掌握的一些知識(shí)。
需要聲明的是:以下內(nèi)容不是從官方資料得到的,而是自己在學(xué)習(xí)中摸索中得到的,水平有限,有可能理解錯(cuò)誤。不對(duì)的地方,請(qǐng)高手們批評(píng)指正。也給初學(xué)者一個(gè)參考,你在實(shí)際運(yùn)用中去檢驗(yàn)是否正確。
第一個(gè)注意問(wèn)題:每個(gè)節(jié)點(diǎn)輸入唯一,輸出可多。
每個(gè)節(jié)點(diǎn)就像一個(gè)模塊:從不同輸入端口進(jìn)來(lái)數(shù)據(jù),進(jìn)行處理。處理之后,在從不同輸出端口輸送出去。注意的是:每個(gè)輸入端口輸入是唯一的,不能有多個(gè)輸入,進(jìn)入一個(gè)輸入端口,保證數(shù)據(jù)唯一性。而每一個(gè)輸出端口卻可以輸出很多。

第二個(gè)注意問(wèn)題:優(yōu)先級(jí)
在編程中有優(yōu)先級(jí)說(shuō)法,哪個(gè)先計(jì)算,哪個(gè)后計(jì)算。比如,運(yùn)算符中括號(hào)優(yōu)先級(jí)比乘除高,乘除比加減高等。
xpresso標(biāo)簽可以加載對(duì)象上,可以加載空物體上??梢悦總€(gè)對(duì)象都可以分別加載,一個(gè)對(duì)象也可以加載兩個(gè)以上的XPRESSO標(biāo)簽。但是C4D系統(tǒng)在計(jì)算的時(shí)候,是有優(yōu)先順序的。
首先看上下順序:
1、在場(chǎng)景中建立下列物體,為下面的三個(gè)加入XP標(biāo)簽(文字也可以加)

2、雙擊寶石XP標(biāo)簽。建立如下節(jié)點(diǎn),把常數(shù)節(jié)點(diǎn)的數(shù)據(jù)類型設(shè)為“字串”,數(shù)值為“寶石”
(每個(gè)節(jié)點(diǎn)你應(yīng)該在XP中能夠找到吧,看一看)

3、在編輯窗口中,選擇全部節(jié)點(diǎn),點(diǎn)擊菜單--編輯--復(fù)制。雙擊立方體的XP, 進(jìn)入其編輯窗口,然后粘貼。點(diǎn)擊常數(shù),更改數(shù)值為“立方體”。同理,更改空白的XP。

4、看下圖,那個(gè)在下面,文字就顯示哪一個(gè)。哪個(gè)優(yōu)先級(jí)高?



答案:當(dāng)然是上面的優(yōu)先級(jí)高。C4D先算上面的,依次從上到下計(jì)算,到最后一個(gè),最后計(jì)算。所以場(chǎng)景中的文字只顯示最后一個(gè)。(那為什么,我沒(méi)有看到每個(gè)文字的閃現(xiàn)呢?C4D計(jì)算太快了)
5、同理,把文字加入兩個(gè)XP標(biāo)簽,左邊的為“左標(biāo)簽”,右邊的為“右標(biāo)簽”。C4D顯示的是如下,哪個(gè)優(yōu)先級(jí)高?

答案:當(dāng)然是左邊的優(yōu)先級(jí)高。先計(jì)算左邊的,最后計(jì)算右邊的,結(jié)果顯示的是最后右邊計(jì)算的結(jié)果??梢岳斫猓汉笥?jì)算的結(jié)果把前計(jì)算的結(jié)果覆蓋了。
(材質(zhì)標(biāo)簽賦予也是這樣:右邊的材質(zhì)總是要覆蓋左側(cè)的)
雖然XPRESSO標(biāo)簽什么地方都能加,但是我還是建議你:把它添加在一個(gè)空物體上面,一是不占資源;二是好檢查。
第三個(gè)注意問(wèn)題:“數(shù)據(jù)類型”保持一致性。
每個(gè)節(jié)點(diǎn)的輸入輸出端口,你要注意“數(shù)據(jù)類型”。尤其是在兩個(gè)節(jié)點(diǎn)相互連接的時(shí)候,要保證前后數(shù)據(jù)類型一致,否則容易出錯(cuò)。用“常數(shù)”節(jié)點(diǎn)展示,看看它的數(shù)據(jù)類型有多少。(比程序語(yǔ)言還多)

數(shù)據(jù)類型的理解可以是這樣:這個(gè)常數(shù)節(jié)點(diǎn)可以想象為容器,不同的數(shù)據(jù)類型好比是能呈裝不同的物質(zhì),如水、金屬、木頭等。
1、建立一個(gè)文字,添加X(jué)P標(biāo)簽。在XP中做如下設(shè)定:首先,設(shè)置常數(shù)節(jié)點(diǎn)數(shù)據(jù)類型為字符串(字符串類型就是字符類型),輸入數(shù)值如下。而文本節(jié)點(diǎn)的文本輸入要求的數(shù)據(jù)類型恰恰是字符串類型,所以正常顯示。

2、在常數(shù)節(jié)點(diǎn)數(shù)值中輸入數(shù)字。由于數(shù)據(jù)類型是字串,所以這些“數(shù)字”是字符,是不能計(jì)算的,也正常顯示。

3、把常量的數(shù)據(jù)類型改為顏色,默認(rèn)為黑色。這與文本的節(jié)點(diǎn)不匹配。所以,不能顯示顏色,文本節(jié)點(diǎn)就把常數(shù)節(jié)點(diǎn)黑色的數(shù)據(jù)RGB的數(shù)值以字符的形式顯示出來(lái)。

4、再如,常數(shù)節(jié)點(diǎn)數(shù)據(jù)類型改為布爾(邏輯:真 TRUE 或1 表示;假 FALSE 或0 表示,默認(rèn)為假)。由于類型不匹配,系統(tǒng)自動(dòng)轉(zhuǎn)換把布爾的值以字符形式顯示出來(lái)了。

所以,要注意不同節(jié)點(diǎn)相互連接的端口之間,數(shù)據(jù)類型要匹配。否則,結(jié)果不是你想要的結(jié)果。當(dāng)節(jié)點(diǎn)很多的時(shí)候,你都不知道錯(cuò)在什么地方。
第四個(gè)注意問(wèn)題:數(shù)據(jù)的監(jiān)測(cè)。(DEBUG)
在編程中總是在不影響程序運(yùn)行過(guò)程中,要監(jiān)視每個(gè)變量的數(shù)據(jù)變化,看看是否符合預(yù)期。
功能好似這個(gè)化工流程的各種儀表一樣。

在XP中常規(guī)選項(xiàng)中,有兩個(gè)節(jié)點(diǎn):一個(gè)是“結(jié)果”節(jié)點(diǎn),一個(gè)是“探測(cè)”節(jié)點(diǎn)(英文為SPY間諜)。他們有什么區(qū)別嗎?
通過(guò)以下可知:
用“結(jié)果”,它沒(méi)有輸出,到此為止,就是顯示。

而“探測(cè)”不但可以顯示還可以輸出數(shù)據(jù)。

總之,這兩個(gè)節(jié)點(diǎn),在監(jiān)視整個(gè)程序運(yùn)行中,非常有用。但你要注意它的輸入端口和上一節(jié)點(diǎn)的輸出端口數(shù)據(jù)類型要匹配啊。
第五個(gè)注意問(wèn)題:位置和全局位置的區(qū)別
在對(duì)象節(jié)點(diǎn),有兩個(gè)位置,一個(gè)是全局位置,一個(gè)是位置(局部位置或相對(duì)位置)有什么區(qū)別?


1、其實(shí),如果場(chǎng)景中沒(méi)有父子關(guān)系,他們的數(shù)據(jù)是一樣的。
用場(chǎng)景中球體為例:這個(gè)球體的位置和全局位置是一樣的。

2、下面把場(chǎng)景中球體作為立方體的“兒子”

3、仔細(xì)看下圖,首先注意的是“父親”立方體不在世界中心。球體的位置坐標(biāo)是相對(duì)立方體的坐標(biāo),全局坐標(biāo)是相對(duì)世界坐標(biāo)原點(diǎn)(0,0,0)的坐標(biāo)。

這個(gè)問(wèn)題一定弄明白,否則在場(chǎng)景中涉及父子關(guān)系的時(shí)候,容易出錯(cuò)。
第六個(gè)注意問(wèn)題:數(shù)據(jù)的映射和轉(zhuǎn)換
有時(shí)候,一個(gè)物體的位置移動(dòng)去控制另一個(gè)物體的變化(轉(zhuǎn)動(dòng)、移動(dòng)、縮放),可能不是線性的(成比例的),而是非線性的(不成比例的)變化。如何做到數(shù)據(jù)映射和轉(zhuǎn)化呢?
舉例子談?wù)剶?shù)據(jù)映射問(wèn)題:用油桶制作一個(gè)飛碟,用圓盤制作一個(gè)門。當(dāng)飛碟從Y=200位置往下降落時(shí),圓盤的門洞打開(kāi)(控制圓盤的內(nèi)半徑大?。?。
1、場(chǎng)景建立如下:

2、直接相連一定不行。飛碟Y目前有高度,門的內(nèi)半徑等于飛碟高度,所以門已經(jīng)打開(kāi),隨著飛碟降落,Y值減小,門半徑也減小,門關(guān)上了。所以這個(gè)邏輯不對(duì)。

3、解決的辦法就是在中間添加一個(gè)“范圍映射”就像汽車發(fā)動(dòng)機(jī)和輪子之間有個(gè)變速器一樣。

4、范圍映射能找到吧?右鍵

5、點(diǎn)擊“范圍映射”在屬性面吧做如下設(shè)置,首先注意數(shù)據(jù)類型:實(shí)數(shù)(實(shí)數(shù)你應(yīng)該知道吧?)

6、它的映射邏輯下圖所示:(不用解釋了吧,我畫(huà)的這個(gè)圖能看明白吧?)
飛碟高度為200時(shí),門的內(nèi)半徑為0,當(dāng)飛碟高度值減小,而門的內(nèi)半徑增大。當(dāng)飛碟高度將為0時(shí),而門的內(nèi)半徑增大到300最大。而這個(gè)轉(zhuǎn)換完全是由該節(jié)點(diǎn)自動(dòng)完成的,多好??!

7、移動(dòng)關(guān)系建立以后,移動(dòng)飛碟延Y軸向下,(發(fā)現(xiàn)雖然有漏洞,但大體效果是對(duì)的)當(dāng)然你可以對(duì)飛碟進(jìn)行動(dòng)畫(huà)K幀。



第七個(gè)注意問(wèn)題:用戶數(shù)據(jù)
還是用上面飛碟舉例子,我們控制飛碟下落,是用鼠標(biāo)拖動(dòng)飛碟,延Y向下移動(dòng)來(lái)完成的,能否用更簡(jiǎn)單的辦法控制飛碟下落呢?
C4D利用“用戶數(shù)據(jù)”提供了一個(gè)在XPRESSO之外的輸入數(shù)據(jù)的方法。
1、點(diǎn)擊“空白”,在菜單--用戶數(shù)據(jù)--增加用戶數(shù)據(jù)

2、用戶數(shù)據(jù)里,系統(tǒng)自動(dòng)添加一個(gè)“數(shù)據(jù)”,所以你也不用在'添加數(shù)據(jù)“,直接更改這個(gè)數(shù)據(jù)如下:
注意默認(rèn)為200。

3、當(dāng)確定以后,在點(diǎn)擊空白,發(fā)現(xiàn)”飛行高度“控制條出現(xiàn)了。

4、雙擊XPRESSO進(jìn)入編輯窗口,把空白拖進(jìn)來(lái)。

5、點(diǎn)擊空白節(jié)點(diǎn)右上角,選擇如下:

6、作如下連接。為什么這樣?直接把飛行高度與范圍映射輸入連接起來(lái),繞過(guò)飛船行不行?不行為什么?

7、由于默認(rèn)為200,所以飛船就停在200高度。

8、當(dāng)往回移動(dòng)飛行高度數(shù)據(jù)時(shí),變化了。

9、當(dāng)然,我們還可以把”飛行高度“控制條,拖入場(chǎng)景中,方便吧。

10、發(fā)現(xiàn)上面的飛行高度不能K幀,這是咋么回事?回頭看第2步。點(diǎn)擊菜單”用戶數(shù)據(jù)“---編輯用戶數(shù)據(jù),發(fā)現(xiàn)”動(dòng)畫(huà)“選項(xiàng)沒(méi)有勾選?,F(xiàn)在看看可以用CTRL進(jìn)行K幀動(dòng)畫(huà)了。

【補(bǔ)充】
不知不覺(jué)寫(xiě)的不少了。以上這些東西不談明白,以后的實(shí)例就沒(méi)辦法講。
最后再簡(jiǎn)單談?wù)勔韵聝?nèi)容:
1、xpresso的編輯窗口,是對(duì)各個(gè)節(jié)點(diǎn)進(jìn)行管理的,都是中文,自己看一看。
比如,你發(fā)現(xiàn)用曲線連接不好看

點(diǎn)擊編輯窗口菜單--布局--連接--直接。(有點(diǎn)標(biāo)注化意思)

系統(tǒng)默認(rèn)節(jié)點(diǎn)左邊是輸入,右邊是輸出。你也可以通過(guò)菜單更改反過(guò)來(lái)。你是左撇子嗎?

2、掌握快捷鍵。在XP編輯窗口,平移也是ALT+鼠標(biāo)中鍵;ALT+右鍵為縮放;正好符合視窗大小,用H鍵;復(fù)制節(jié)點(diǎn)按CTRL拖動(dòng);去除連線,直接用鼠標(biāo)點(diǎn)擊連線即可;刪除更改端口,在端口按右鍵,會(huì)出現(xiàn)一個(gè)小菜單,命令就在上面。
3、注意,在測(cè)試動(dòng)畫(huà)的時(shí)候,發(fā)現(xiàn)你設(shè)置”結(jié)果“和”探測(cè)“節(jié)點(diǎn)的數(shù)據(jù)沒(méi)有變化,那是咋回事?
那是因?yàn)槟銢](méi)有勾選下面的選項(xiàng)。C4D默認(rèn)是不勾選的,可能是為了節(jié)約計(jì)算資源吧。

4、熟悉各個(gè)節(jié)點(diǎn)的分類。XPRESSO是按照功能進(jìn)行劃分,經(jīng)??匆豢?,知道每個(gè)節(jié)點(diǎn)的位置,這是第一步。

第二步,查看幫助,一定要弄清楚每個(gè)節(jié)點(diǎn)的作用,甚至每個(gè)端口的數(shù)據(jù)類型是什么。

【后記】
還有很多,飯不是一天都吃完的,活也不是一天都完成的。
不寫(xiě)了
絕對(duì)不寫(xiě)了
出去走走
曬曬太陽(yáng)
聞聞泥土的芳香
看看樹(shù)葉的綠芽
春姑娘來(lái)了
我去找她