是這樣啦,最近看完了一位神人的詳細教學,所以學會了怎麼用python製作履帶,然後再加上一點自己的想法新增了介面方便操作,以下是完成之後功能。
這位大大的教學在B站上,有興趣可以去觀摩學習。
總之,這個做履帶的方法其實很單純,難的部分在於把它程序化變成程式碼執行,詳細的做法都在上面的連結裡,這邊就不贅述了,本篇主要是想筆記一下履帶製作的核心做法。
第一部份:讓物件能夠跟著曲面移動
以及一個,用來在曲面上位移的物件,這邊使用locator。
現在到node editor裡面,載入nurbs曲面的shape節點!! 這邊要注意不是使用trandform節點而是shape節點。
然後再載入locator的transform節點。
最後把他們兩個利用pointOnSurfaceInfo串聯起來,可以看到locator的位置立刻跑到nurbs的左下角,那是因為,現在它位於曲面預設的(0,0)起始位置。
到pointOnSurfaceInfo節點面板,可以看到有兩個數值,ParameterU、ParameterV。
這兩個數值就代表了物件在曲面上的座標,因為這是個完全在物件表面上運作的節點,所以不會有Z軸資訊!
如果我們稍微更改了UV數值,就會發現locator也跟著位移了,而UV所代表的意思就相當於平面座標系統的XY軸向,所以當我把兩個數值都設定為0.5時,物件就會正好落在nurbs的正中央!
到目前為止,第一個部分算是完成了,透過以下的影片可以發現目前物件已經能更跟隨nurbs位移,但是,一旦nurbs開始旋轉,物件仍然保持原本的位置沒有改變,那是因為我們還沒有把pointOnSurfaceInfo節點的旋轉資訊傳輸給locator。
第二部份:讓物件能夠跟著曲面旋轉
第三部份:讓物件能夠透過UV數值在曲面上移動
現在物件已經能夠隨著nurbs旋轉位移,那麼最後一步就是要透過數值的變化讓它能夠像履帶一樣移動。
首先,先在物件、或是控制器上新增一個屬性。
現在,把Run屬性接上一個plusMinusAverage節點,然後將Output1D輸出到pointOnSurfaceInfo的Parameter U 或是V上。
那麼,透過更改Run的數值,物件也就能夠在nurbs上水平位移了!!!!
到目前為止,整個履帶製作的核心概念就差不多介紹完畢了,剩下的就只是把模型複製出來,parent到locator底下,然後將parameter U的數值平均分散,再放上更多locator跟模型,真的非常淺顯易懂,當然,這個過程肯定需要寫一些code來完成這些重複的工作!
那麼接下來,還需要注意的部分就是,關於物件軸向的問題。
在locator被我們加入aimConstraint之後,我們打開Local Rotation Axes,可以發現它跟世界軸向不一致了,那是因為在aimConstraint裡面的aimVector數值的關係。
如果我們想要改變物件在nurbs的軸向,可以到aimConstraint上面修改aimVector的數值,如此一來就能夠讓模型朝著我們希望的方向!!!
如果覺得這篇文章有幫助你在動畫之路走得更長遠,可以使用 Google 或 Facebook 帳號快速登入,按Like五下,就可以幫助我從Likecoin得到回饋,完全不用任何費用! 一點點的鼓勵都會成為我寫作的動力,感激不盡!
0 留言