【在MAYA中使用sine cosin函數】眼球rigging的擴充

【在MAYA中使用sine cosin函數】眼球rigging的擴充

 






這是一篇關於大神的教學作的筆記,講的是如何使用簡單的節點來製作sine cosin(就是三角函數那個東西)並且運用到rigging上。

有興去的人可以看原篇。


總之,最終效果會長這樣。


這是一種可以讓物件串聯上sine 與cosin涵是數值的做法,其結果就是我們可以得到『讓物件隨著任一球體表面位移縮放旋轉』的效果,當然這些都是我個人使用自己有限的數學知識得到的理解,並不一定是最終答案,畢竟高中數學對我來說已經是很遙遠的過去了....


因為函數針對的是球體,而根據定義,所有的球體都是相似形,所以這邊我們就不用考慮球體的大小了,因為半徑10的球體跟半徑20的球體的差異只在於,後者半徑是前著的兩倍,用數學的角度來看它們可以透過計算來達到一樣的體積。

這裡的球體指的是正圓形,不包含橢圓!

當然三角形跟正方形就沒辦法這麼做了。




第一步,我們需要先製作一個控制器、或是一個空的group也可以,重點只是要在上面加一個custom attribute,使用float浮點數,最大最小不須限制。






接下來做法很簡單,會使用到一個很少看到的節點eulerToQuat,其餘的都是很常見的東西。

我們把剛剛做好的custom attirube接上multiply節點。這邊要注意的是要將multiply乘上180,原理不明,總之這麼做就可以得到sin cosin的數值。 

最後再輸出到eulerToQuat。


接著,再把eulterToQuat輸出到,我們想要驅動的物件上,這邊我讓它驅動一個圓形的curve線,根據原篇筆記OutPut QuatX輸出的是sin數值,而OutPut QuatW 則會是cosin。



最終,我們得到這樣的結果,cuve線沿著球型表面縮放位移,這邊需要注意的是,球體的大小必須跟curve線一致(我用的是預設的circle 跟sphere),如果想要在不同大小的球體上面做同樣的效果,那麼就必須把他們兩個group起來然後再縮放!






那麼接下來,如果我們驅動的是joint,那麼就可以做出跟筆記開篇影篇一樣的效果。

具體怎麼做呢,很簡單,只是多了一些重複步驟。



首先,我們使用poly edges to curve功能取出球體的半徑(也就是球體中間的那條線)。





然後我們就可以把剛剛上面示範過的eulerToQuat那張圖的串連方式串連到這個curve上,這時候curve線就會隨著球體表面位移(廢話)。


這邊可以觀察到,當我們的custom attribue數值為0時,curve線就會剛好落在球體的中央處,隨著數值縮小,curve線就會往球體+Z方向移動並且同時縮放,所以可以得到一個結論,就是我們必須根據custom attribue數值來擺放我們的joint,然後每隔0.1的數值就放一個joint,每個joint都skin一條完整的edge loop,最後再將curve線constraint到這些joint上,如此一來才能做出筆記開篇影片的效果。

步驟很簡單,只是需要重複多次!

cuve線在這邊的功能就是用來定位跟constraint joint的!





最後的成品如下,我們會有很多個joint,其位置就跟球體上的edge loop一致,而驅動他們的curve線則是根據custom atttirute的不同而有不同的位置跟大小,但是也會跟球體的edge loop位置一致。


這樣一來這個效果就算完成了!




最後,考量到大部分角色的眼球可能都不是正圓形,所以我們可以透過blend shape到另一個球體上,再搭配lattice就能在非球體的模型上做出一樣的效果!!







如果覺得這篇文章有幫助你在動畫之路走得更長遠,可以使用 Google 或 Facebook 帳號快速登入,按Like五下,就可以幫助我從Likecoin得到回饋,完全不用任何費用! 一點點的鼓勵都會成為我寫作的動力,感激不盡!


 








張貼留言

0 留言