コンポーネント選択時にピボットが中央になってしまうので作ってみた
頂点やフェースなどコンポーネントを編集しているときは、基本それらの中央がピボットになるんですかね?
ただオブジェクトのピボットをそのまま使いたいことが多いので、オブジェクトのピボットを利用するための関数。
ソース
1 2 3 4 5 6 7 8 | global proc setPivotOfObject(){ string $aSelect[] = `ls -sl -o`; string $aObj[] = `listRelatives -p $aSelect[0]`; vector $aObjPoint = `xform -q -ws -t $aObj[0]`; vector $aPivot = `getAttr ($aObj[0]+ ".rotatePivot" )`; $aPivot += $aObjPoint; manipPivot -p ($aPivot.x) ($aPivot.y) ($aPivot.z); } |
使い方
1 | setPivotOfObject(); |
頂点やフェースなどのコンポーネント選択時に呼び出すと、ピボットがオブジェクトのピボットの位置に移動します。
※オブジェクト選択時や複数のオブジェクトの頂点選択時のエラー回避はしてないです。
ま、動けばいいやって感じでw
おまけ:ピボットを固定したままオブジェクトを回転させる関数
ソース
1 2 3 4 5 6 7 | global proc rotateFixedPivot( vector $aRotation ){ string $aSelect[] = getSelectParticularType( "transform" , true ); select -r ( getSelectParticularType( "vertex" , false ) ); setPivotOfObject(); rotate -r -fo ($aRotation.x) ($aRotation.y) ($aRotation.z); select -r $aSelect; } |
使い方
1 | setPivotOfObject(<<0,90,0>>); //選択中のオブジェクトをピボットを固定したままY軸を中心に90度回転させる |
Mayaでマップエディタのようなものを作っているのでその関係で作りました。
どうもやろうとしていることの機能がMayaにあるのかないのかよくわからない;
だから結局自作になってしまうんだけど・・・。