2012年2月7日 星期二

在Maya中隱藏我想要隱藏的Joints


為了方便Animator選取或是怕Animator找碴搞破壞,做rigging的人通常都盡可能希望把能隱藏的東西通通隱藏起來,一般來說,只要把Joint放一個group,Model放一個group,controller再放一個group,分門別類,這樣一來就完全沒有問題哩。可是,實際狀況往往不是這麼美好,所以,也許就會遇到這麼一個問題:

想把Joint隱藏起來,但是底下還有其他子物體,像是Model或controller...等不該被隱藏的東西,這時該怎麼辦?

Step 1
選到你想要隱藏的joint,然後打開它的Attribute Editor(AE)

Step 2
找到 Display > Drawing Overrides

Step 3
打開Enable Overrides,然後將 Level of Detail設定為 Bounding Box,這樣一來你就會發現骨頭消失了

Step 4
但是其他子物體部分也會跟著消失,所以這樣還沒有解決我們的問題。所以,你還必須一個一個把它們的Enable Overrides打開,這樣就可以了。

或是,選取所有的子物體之後,到script editor執行這段簡單的mel:

{string $sel[]=`ls -sl`;
for($each in $sel)
setAttr ($each+".overrideEnabled") 1;
};

大功告成!

Step 5
最後,你可能需要把這個功能設定成可以被控制器開關,你可以試著照底下的思路建立connection。

Step 6
最後的最後,還有另一種方法,雖然比較麻煩,但是可以一勞永逸:就是建立一個屬於joint的displayLayer,然後把所有joint加進這個displayLayer。

Step 6-1
假如你不想在右側再增加displayLayer,看起來很煩,你可以用createNode這個指令來做。例如說,我要增加一個叫 YaoJoint的displayLayer,你可以在輸入以下指令,然後執行它。

createNode displayLayer -n YaoJoint;

Step 6-2
到window > relationship editor > display layer 好整以暇地加入你想加入的所有joints

Step 6-3
到outliner > display > 勾掉DAG objects only 你會看到你剛剛做好的displayLayer,在這裡設定Display > Drawing Overrides > Level of Detail > Bounding Box,大功告成。

分享個人作法,希望大家還能提供更多方法。
任何問題,歡迎討論,感謝!

沒有留言: