【Maya Tire Rigging /輪胎綁定】使用Expression筆記

【Maya Tire Rigging /輪胎綁定】使用Expression筆記

 





這是在AntCGI上看到的教學,是有關擠壓輪胎的製作方法,非常實用的棒,這個youtube頻道的其他教學也都很推薦,重點是影片不只講解的很詳細,而且都是免費的,想要學習maya rigging的人可以多多利用!

這個輪胎教學包含兩個部分,第一個是讓輪胎跟著控制器旋轉第二個則是關於橡膠圈的擠壓!


然後必須注意的是,這個方法只有在Maya 2023以上的版本才有辦法使用!


底下是把它工具化之後的展示,有興趣的人可以參考上面的教學!





關於輪胎與地面接觸的效果



這應該是教學最有趣的地方,也是在這個部分會動用到Maya 2023的一個新功能【Proximity Pin】,嚴格來說其實Maya 2020版本就有這個功能了,但是,Maya 2023又對它做了一些更新,所以這個方法在Maya 2020是行不通的,之前有測試過..。


那麼就開始吧,首先,我們需要先做好輪胎joint,並將位置對其輪軸中央。


輪胎要用幾根joints可以自行決定,當然越多效果會越好,同樣也就必須花更多時間paint weight。





接下來我們必須先製作IK的伸縮功能,用意是輪胎如果接觸地面,那麼這個joint就必須適時地縮放,這樣模型才不會直接穿越地面!





然後為了避免之後會出現奇怪的扭曲,將ikHandle的Pole Vector全部設定成0。





接下來,新增三個locator,分別是innerLoc、outerrLoc、ikLoc,分別將他們放到骨點位置,ikHandle則是parent到 ikLoc裡面,這個階段ikLoc完全不用移動,讓他在世界中心就好,不然之後會發生問題。






接下來使用distance between以及multply divide節點簡單製作一ik擠壓效果

multply divide節點使用divide模式,然後input2數值要跟input1一致,最後將out put 輸出到 joint的Y軸,這邊要注意joint軸向是否正確,如果你的縮放軸像是其他X或是Z軸,就必須串連到這些軸向!







接下來我們簡單測試一下擠壓功能,這邊需要在新增一個centre_Fr_1,位置對齊joint中心點,然後將innerLoc、outerLoc移動到其底下,然後選擇centre_Fr_1跟第一個ik joint,就可以看到擠壓效果了!







接下來就是使用proximity pin的時候了,先選擇Ground模型,然後選擇outerLoc執行proximity pin,選擇UV模式!






接下來我們測試一下,可以發現只要outLoc移動,剛剛新出現的pinOutput也會跟著移動,最棒的是它還可以根據Ground模型表面位移! 是一個非常好用的新功能!







接下來,將outerLoc、pinOutput輸出到decomposeMatrix這個節點。






然後新增一個condition節點,模式設定為Less Than。


將兩個decomposeMatrix的 Output Translate Y(因為我們要比較這兩個locator之間與Ground的距離)分別輸出到condition的 First、Second item。

color if True ==>1

color if False ==>0








最後,我們需要用到blend matrix來做切換。









最後將他接上ikLoc的offset Parent!









現在把centre locator constraint到joint上,然後就可以隨著地表起伏移動!





這邊簡單說一下,為什麼可以透過blend matrix讓 locator固定在地表以及移動。


判定輪胎是否碰到地面是由outerLoc以及pinOutput來決定的,底下是condition節點預設的狀態,這個用意是,當outLoc的matrix_Y數值沒有低於pinOutput時,那麼,這時候ikLoc的Y軸就會跟隨outLoc,而outLoc又會跟隨centreLocator移動。


那麼,當outLoc matrix Y數值小於pinOut時,也就是低於地面的時候,這時候condtion就會輸出1到blend matrix,而blend matrix會將輸出的matrix Y從outLoc轉換成pinOutLoc,最後ikLoc接收到,所以自然就會浮貼在底面,不會穿越!






底下的影片應該可以更直觀了解這些數值的實際活動情況!

當outLoc的matrixY小於pinOut時,blend matrix的 pintOutput的weight就會變成1,此時ikLoc的Y軸自然就會繼承pinOutput的Y軸資訊,跟著緊貼地面! 反之亦然!

然後在加上之前做的ik擠壓效果,就能做出輪胎碰到地面進而擠壓的感覺!








關於使用Python新增Expression


這兩個東西乍看之下是兩個完全不同的系統,不過其實可以透過Python來新增expression,嚴格說起來是使用maya cmds。



#s就是我們的expression
Expre="""{QQ}.rotateY=rotateX * 10;""".format(QQ=Locgrp) #可以用format的方式來帶入變數!
cmds.expression(name='{}_TireExpre'.format(ExpreObj), s=Expre)

這樣就可以透過maya cmds直接創建expression!




如果覺得這篇文章有幫助你在動畫之路走得更長遠,可以使用 Google 或 Facebook 帳號快速登入,按Like五下,就可以幫助我從Likecoin得到回饋,完全不用任何費用! 一點點的鼓勵都會成為我寫作的動力,感激不盡! If you found this article helpful in your journey in animation, you can use your Google or Facebook account to quickly log in and click Like five times to help me earn rewards from Likecoin, without any cost! Your encouragement means a lot to me and will become the motivation behind my writing. Thank you so much!


 




張貼留言

0 留言