2011年11月1日火曜日

【Script】Mayaの最大インフルエンスの調整

ゲームのモデルを作成しているとパフォーマンスなどを考慮して1つの頂点に割り当てる骨の数(Mayaでいうところのインフルエンス)が決まっている場合が多々あります。

手馴れているモデラーなら意識していればさほど問題ないと思いますが、
アニメーターが自分が意図したように動かしたい時自分でスキンウェイトを調整するときがありますが、その調整時に意図せずそのゲーム仕様を超えたインフルエンス数にスキンウェイトを入れしまう場合があります。

そういうときは、コンポーネントエディタとかで目で見て超えてないかチェックし、超えて割り当たっている場合は手動で直したりします。これがまた非常に面倒くさい作業だったりします。

これまた例のごとくないなら作ろうの精神で
自動で最大インフルエンス数を調整してスキンウェイトを割り当て直してくれるスクリプトを作りました。

Description
1つの頂点に任意で指定したインフルエンス数を超えて割り当たっている場合、
最小のスキンウェイトを指定した数で割って、大きい値へ割り振り直します。
つまり、以下のようなスキンウェイトの状態のとき


スクリプト実行後は

上図のようになります。上記の例では最大インフルエンス数は3で設定し実行してます。
これはjoint1に割り当たっている0.003が最小なので、0.003を3で割って他の大きいほうへ0.001づつ割り振り直されています。
また、最大インフルエンス数より少ないときは何もしないでそのままの状態です。


Usage
1.オブジェクトを選択します(複数選択もOK)
2.スクリプト内部にある$MAX_INFの数を任意に設定します
3.このスクリプトを実行

DownLoad
(Maya2010では動作確認済みです)

0 件のコメント:

コメントを投稿