今回はjoint orient編です。キャラクターをスキニング(バインド)する前にjointをきれいな状態にしなければなりません。そうしないと後々やっかいなこと(問題ない場合もあるのでリガーがいない現場によってはこのようなことを考慮しないところも‥)になるかもしれません。
また、リガーとコミュニケーションをとるうえで最低限知っておかないといけない部分でもあります。これを機会にスキニング(バインド)されたjointにIKとコントローラーをつけるだけのリギングから一歩先に進む準備をしましょう。
実際はこうやってJoint orientを揃えたjointをコピーしてコントローラー作成用のjointをつくり、それをスキニング(バインド)用jointと接続します。このことについては以前の記事を参照してください。接続用のツールも用意しました。
joint の決まりごと
上に書いたように全く考慮されない場合もありますが、本来はすべての人がこのルールは守るべきです。今はなぜこうすべきなのか理解できなくても後になって理解できることがあります(私がそうでした)。
回転の値はすべて0にする
当然ですがこれは重要です。0にすれば最初のポーズに戻ることが出来ます。
translate は X のみに数値が入っている状態(例外あり)にする
translateはXだけに数値が入っている状態にしなければなりません。例外はjointが二股、三股と分岐する場合です。
scale はすべて1にする
言うまでもないこととは思いますが、jointが細すぎる場合にスケールで解決しようとしないでください。jointが細すぎる場合は「Display > Animation > joint Size…」で変更してください。
X軸はジョイントの先(子)の方向に向ける
「Display > Transform Display > Local Rotation Axes」で表示することができます。この設定はデフォルトでそうなっているので特に気にしなくても大丈夫です。しかし、一番先(子がない)jointの場合はそうなっていません(子がないため)。
つま先などに配置する(後で使わないので消してしまうような)jointもデフォルトでX軸を先(子)の方向に向けてくれるので引いておいたほうが良いでしょう。先っぽのジョイントオリエンtを変更するほうが手間ですし、リバースフットなどを仕込む場合はつま先の位置が決まっていたほうが良いからです。
joint の引き方
jointを引くにあたって上にあげたようなルールを守らなければならないのでいろいろ制約のある中でjointを引かなくてはならないので、なにかと気を使います。
そこで私はとりあえずは自由にjointを引いて(jointを掴んで移動するのもあり)しまうことをおすすめします。その時点でしっかりjointの場所をしっかり決めてください。
そうやってjointの位置が決まったらLocatorをMatch Translation(Modify > Match Transformations > Match Translation(コンストレインの場合と選択する順番が違うので注意))してそれぞれのjointの位置に合わせます。そして、そのjointをすべて消してしまって、そのLocatorにスナップ(vを押しながらでスナップできます)させながらあらたにjointを引き直します。
ポイントコンストレインでも構いませんがpointConstraintノードを消す手間がかかります。
この方法でデフォルトで引いた場合のきれいな状態でのjointを引くことが出来ます。もっと良い方法があるとは思いますが確実な方法です。
cometJointOrient(ジョイントオリエントを変更するツール)
Mayaの標準機能だけだとjoint orientを変更するのがかなり厄介なのでツールを利用することにします。
「cometJointOrient」という私が昔から使っているツールを紹[介します。
「www.comet-cartoons.com」こちらからダウンロードしてください。
「MEL Script Suite」の中にある「cometScript.zip」の中にある「cometJointOrient」というmelを使ってください。Maya6.01と書いてあることから相当古いものなので今はもっと良いものがあるかもしれませんが、慣れているのでこれを使って説明します。
cometJointOrientの使い方
まず、ダウンロードしたzipを解凍して「cometJointOrient」を「C:\Users\ユーザー名\Documents\maya\バージョン\scripts」の中に入れます(mayaを起動する前、すでに起動している場合は再起動)。ユーザー名とバージョンはそれぞれの環境にあわせて変えてください。
Mayaのコマンドラインが「MEL」になっていることを確認して、「cometJointOrient」と打ってEnterキーでWindowが立ち上がります(シェルフに入れたい場合は「cometJointOrient」をシェルフまで真ん中マウスボタンでドラッグしてください)。

Window が立ち上がったら上画像のように設定します。
Aim Axis は「X」(X軸がジョイントの先(子)の方向)
Up Axis は「Y」
World Up Dir: は「0.0」「1.0」「0.0」
Tweak:は「45.0」「0.0」「0.0」(X軸を45度(45度でなくてもわかりやすい角度でOKです)ずつ回転(下のボタンで+方向か-方向の回転を選べます))
cometJointOrient以外の選択
cometJointOrientはかなり古いツールであり、英語です。その点に懸念を抱かれている方はAmaterasuという多機能プラグインの中にJoint Editorというものがあり、それを使うのも良いでしょう。無料です。
「Mayaでコントローラー作成」という以前書いた記事でこのAmaterasuを紹介しました。
<2022/06/24追記>
「Amaterasu」は現状Maya2020までしか対応していません。
そのために現状では古いとは言えMELで作られたツールであるために互換性に気をつけなくてもよい「cometJointOrient」の使用をおすすめします。もちろん他に良いツールがあればそれを使用してください。
joint orient(回転の方向づけ)の調整

上の画像のような人間の左半身のジョイントを引きました。

ジョイントの名前は上の画像のようにつけました。
左半身なので腕と足のジョイントの名前には「L_」をつけてあります(後で反転コピーをする際にこのような名前にしておくと便利です)。
ここからjoint orientの設定をします。
まず、先程の「comeJointOrient」を立ち上げて、上で説明したような設定にします。
ジョイントをすべて選択して左上の「Show Axis」ボタンを押すと選択したjointの「Local Rotation Axes」が表示されます。Mayaのメニューから表示させるよりこちらのほうが便利です。
joint orient を調整するためのルール
これから書くルールに従ってjoint orientを調整します。
上で紹介したツールを使ってLocal Rotation AxesをX軸を回転させて調整します。
X軸はジョイントの先(子)の方向に向ける
これはデフォルトでそうなっているので特に気にしなくても大丈夫です。しかし、引いたjointの先端は子がないためにX軸の方向が違います。指の先端などで回転しない (後で消しても問題ない) jointの場合はそのままでも構いませんが、私の場合は見た目が美しくないので揃えてしまいます。
Z軸は同じ向きに揃える(Y軸との兼ね合いで絶対条件ではない)

Z軸の向きを揃えることによって、すべてのjointを選択して曲げるときに同じ方向に曲がります。上の画像はRotate Yですが、Rotate Zも同じように曲がります。
Y軸は曲がる外側に向ける
膝と肘の場合は一方向にしか曲がらないのでわかりやすいです。曲がらない方(膝と肘の側)にY軸を向けます。指の第一関節と第二関節の場合も同じです。
わかりづらいのは背骨の場合です。この場合は背中側にY軸を向けるのが一般的です。
私はなぜこのようなルールなのか意味がわかりませんでした。しかし、Rotate Orderのことを考えてみると繋がりました。Y軸を曲がる方向の外側に向けるとRotate Zで回転することになります。Rotate Orderが「XYZ」の場合は最も強いZ軸を使用することになります。背骨の場合も背中を前屈する場合の回転軸がRotate Zになります。
Rotate Orderについての記事は以下を御覧ください。

Mirrot Joints で反対側を作成する

Riggingメニューで、Skelton > Mirror Joints のオプションを上の画像のように設定します。
Mirror across: はYZにして、Mirror function をBehavior にします。
Search for: に「L_」をいれます。jointの名前をつけるときに左腕や左脚に当たる部分にこの「L_」をつけたのはこのためです。反転した側はReplace with:の「R_」に置き換えられるようになります。

反転したものはX軸が逆方向(親の方向)に向かっていますが、これで大丈夫です。

左右の脚を両方選択して左右対称に曲がるようになっているか確認します。腕についてもおなじように確認してください。
リグのコントローラーはどうすれば良いのか?
「Joint Orient」を整えた後はアニメーションをつけるためのコントローラーをつけなければなりません。
しかし、どうしたわけか、Mayaにはリグのコントローラーを作成する機能が標準ではついていません。
コントローラーの作り方については以下の記事に書きましたので、よろしかったら続けて読んでみてください。
今回の記事が気に入っていただけた場合、ぜひとも他の記事もチェックしてみてください。Mayaのリギングに関する記事をまとめたページです。
コメント