top of page
搜尋
  • 作家相片Liling Liu

如何在Maya裡面讓物體以互動方式並改變顏色

已更新:2023年9月3日

以手敲琴為例,鼓棒會隨著敲擊的琴鍵並改變本身的顏色


由於能夠利用物體之間互動方式來改變其原先的顏色,不需要再事後後製上,可以直接在realtime上直接顯示出效果。個人的想法想利用這樣的技術來製作一個樂器上的互動,在互相敲擊的情況下達到不一樣的效果改變。


首先先做一個五鍵手敲琴的模型和鼓棒,並使用簡單的顏色在物體上(如圖)。鼓棒的預設顏色為淡粉紅色,當鼓棒敲擊到藍色的琴鍵上,鼓棒的顏色會從淡粉紅色轉變成藍色。我之所以會選擇五鍵手敲琴是因為可以快速應用在兒歌的彈奏上,像是小蜜蜂、划船歌、歡樂頌,瑪莉有隻小綿羊等歌曲。





這次要展示的是以小蜜蜂< Lightly Row>作為範例,< Lightly Row>僅有五個音,譜的簡單寫法是533 422, 1234555, 533 422, 13553, 2222234, 3333345, 533 422, 13551. ( C=1, D=2, E=3, F=4, G=5)。




先計算兩物體之間的距離

首先要有兩個物體模型,使用測量工具計算兩者之間的距離。

在Maya裡面到:

Create > Measure Tools > Distance Tool.

選擇其中一個物體(鼓棒)和另一個最終要觸碰的物體(琴鍵),測量兩者之間的距離,並在原地(空物件)上與另一個要觸碰的物體上得到距離。如圖所示,可以得知目前有兩個距離的顯示,和四個locators。



把鼓棒的locator放置在鼓棒的模型底下,將觸碰的locators放在琴鍵模型底下,空的物體locator可以不需移動。依據你有幾個物體之間的互動,需要做多次的測量。如範例是五鍵手敲琴,所以需要做五次的測量,並且得到十個距離。


使用Maya 的節點將物體之間的距離整合在一起


如果你對Maya的節點不太熟悉,可以到Autodesk官網上得知資訊



1.在Maya裡面到Windows> Node Editor,在編輯區新增multiplyDivide node(乘除節點),並將兩者的距離尺寸連上至該節點,打開這節點的屬性,將運算模式改為相除模式。


2.新增Reverse node(反轉節點),把剛剛所產生的multiplyDivide node 輸出至Reverse節點的input。


3.新增Clamp node(箝制節點),並限制於該節點的最小跟最大的數值,分別為0和1。


由於範例中有許多的物體和距離尺寸,所以操作上必須再加入plusMinusAverage node(加減平均節點),將全部集結在一起。在當初所得到的原地物體(空物件)的Locator上,加上Distance Output 屬性,並將plusMinusAverage node 輸出到Distance Output屬性上。



得知判斷物體之間的距離數量


判斷物體之間的距離變化,要先知道有多少個Condition node(判斷節點)需要產生和比較。先前已經說明到會得到多少個距離,由此可得知距離的數量是一個等差數列



For the formula the sum of sequence 1+2+3…+n=n(n+1)/2;

Proof is how to get n(n+1)/2: S=1+2+...+(n−1)+n. S=n+(n−1)+...+2+1, so 2S=(n+1)+(n+1)+...+(n+1)=n(n+1)

Divide by 2: S=n(n+1)2;

由於判斷節點的數量和上面算法為一致,所以可以利用這公式得知需要多少判斷節點,我們將它命名為 TCN = n(n+1)/2, n=object number.

Ex: N=1, TCN=1; N=2, TCN=3; N=3, TCN= 6...etc



例如這是五鍵手敲琴,有五個琴鍵,所以需要有5(5+1)/2=15 共15個判斷節點。



依據判斷物體之間的距離數量並產生此變化


在node editor編輯區,新增blendColor node(混合顏色節點),將每一根琴鍵模型的貼圖連結到此節點的Color 1,Color 2 為預設的淡粉紅色。每一個blendColor node放置在Condition node上做比較。如果判斷為真,將物件的顏色改變為琴鍵上的顏色,如果判斷為假,將會改變另一個的顏色。




將兩個blendColor node輸出至Condition node上的Color1 and Color 2,原地(空物件)的Locator的Distance Output輸出至該Condition node 的First term上開始做判斷。由於接下來會再利用兩者之間的Condition node去比較,所以這時需要加上兩者琴鍵的距離之差進行比較,新增 plusMinusAverage node,將兩個琴鍵的距離分別加入至這個節點上,打開此節點的屬性,將運算模式改為減法模式。由於手敲琴有五個琴鍵,所以需要有五欄的判斷模式和四欄的琴鍵距離之差換算(如圖)。最後在將最後一個的Condition node 連結至鼓棒的貼圖上。依據上述所說的操作方式,重複一樣動作,將可以得到其結果。(如圖)









36 次查看
bottom of page