リグ作成4
位置合わせとGUI
おおざっぱにジョイントの大きさをキャラクタに合わせるには、
オブジェクトのバウンディングボックスを求めてその大きさにジョイントの大きさを合わせます。
実行例
ヒント
- アトリビュートのロック
例えば、上のcont2の移動Xをロックするには以下のように実行します。
cont2.tx.lock()
さらに、cont2のスケール値を全ていっぺんにロックするには以下のように実行します。
cont2.s.lock()
- ジョイントの半径変更
例えば、上のジョイントj1の半径を0.3に変更するには以下のように実行します。
j1.setRadius(0.3)
- オブジェクトのテンプレート化
オブジェクトを選択できなくするためにテンプレート化するには以下のように実行します。
例えば、上のジョイントj1とIKハンドルlegikをテンプレート化するには以下のように実行します。
j1.template.set(True) # 一番上の階層のジョイントをテンプレート化すれば下のジョイントもテンプレート化される
legik[0].template.set(True)
練習
- 関数makeJoints6()を参考にして、以下のようにコントローラが作成される関数makeJoints7()とmakeJoints8()を作成してください。
(使用例)
- ジョイントを入れるオブジェクトの最上位グループを選択します。
- 以下を実行します。
js = makeJoints7()
- ジョイントの位置を合わせます。
- 以下を実行します。
makeJoints8(js)
最終的にジョイントとIKをテンプレート化しておいてください。
- makeJoints7()とmakeJoints8()を使って、以下のようなGUIを作成するスクリプトを作成してください。
(使用例)
- 実行すると以下のようなウインドウが表示されます。
- ジョイントを入れるオブジェクトの最上位グループを選択し、ジョイント作成ボタンを押します。
- ウインドウの表示が以下のように変化します。
- コントロール作成ボタンを押します。
- ウインドウが最初の状態に戻ります。
(ヒント1)
ボタンを押せないようにするには、以下のように実行します。
btn = pm.button()
btn.setEnable(False)
逆にボタンを押せるようにするには以下の命令を実行します。
btn.setEnable(True)
(ヒント2)
テキストを作成し、後で書きなおすには以下の命令を使用します。
text = pm.text(label='最初のラベル') # テキスト作成
text.setLabel('別のラベル') # テキスト変更
(ヒント3)
ジョイントのワールド座標における位置を調べるには以下の命令を使用します。
j1にジョイントが代入されているとして
p = j1.getTranslation(space='world')
p に[1.0, 2.0, 3.0]のようなジョイントj1のX, Y, Z座標のリストが代入されます。
(提出フォルダ)
\12AA\PyMEL\makeJoints9\
(ファイル名)
aa1201XX.py
参考
Prev
Home | Contents
Mail