如何在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)。
Show Video URL: https://vimeo.com/298665701
先計算兩物體之間的距離

首先要有兩個物體模型,使用測量工具計算兩者之間的距離。
在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 連結至鼓棒的貼圖上。依據上述所說的操作方式,重複一樣動作,將可以得到其結果。(如圖)

Mình thỉnh thoảng cũng xem mấy bài soi cầu cho vui thôi, coi như một cách tập nhìn dàn số và đối chiếu lại linh cảm của mình. Hồi trước hay nghe người quen mách gì thì ghi nấy, trượt vài lần là khó chịu, nên giờ mình ưu tiên đọc kiểu có giải thích đàng hoàng hơn; đúng sai gì cũng rút ra được cách họ lập luận. Có bữa lướt trúng https://soicauxsmb.pro/ thấy họ hay nói về chuyện lọc theo chu kỳ, mình thử áp dụng theo hướng “giảm bớt lựa chọn” chứ không đặt niềm tin tuyệt đối, cảm giác bớt bị cảm xúc kéo đi. Với mình mấy thứ này chỉ nên xem như tham khảo,…