2020年10月29日木曜日

Orient Joint について

 勤め先では、伝統的に、モーションファイルをBVHフォーマットで取り回していたため、ジョイントを回転させる文化が無かったりします。
 ジョイントは、配置するだけで良いので、誰でも作業できるというメリットもありますが、関節の構造や動かし方なんかを理解していないと問題のある骨格が出来上がってきたりはします・・・。

 けれども、ことリグを作る場合には知っておいた方が良い、もしくは必須の知識だと思います。


    ツールは [Rigging] Skeleton > Orient Joint □ でオプションウィンドウを開きます。


 まずは、この中の Primary Axis から。

 Primary Axisというのは、ジョイント階層があるとき、次のジョイントの方向を向く軸を設定します。説明文だけでは分かりづらいので例題を。


 手前から、Orient Joints World、次に Primary Axisが x, y, z の順で並んでいます。Primary Axis に設定した軸が、次のジョイントを向いているという意味が画像から分かりますかねぇ。 

 一般的に、この Primary Axis には、x を指定します。 

 なんか、ベクトルとか、行列とか、クォータニオンだったりの数学を扱ったりする場合に、x軸を基準にして式が書かれていたりする場合が多いから都合が良いとかなんかだった気がします。 とりあえず、特殊なことをしない限り、Xのままで大丈夫なはずです。


 次に Secondary Axis
 これは、Secondary Axis World Orientatrion と合わせて考える必要があります。

 右手をグーにし、親指、人差し指、中指を伸ばした図を思い浮かべます。中指だけは、伸ばした状態で90度折り曲げます。

 フレミングっぽい形になると思います。

 親指の Primary Axis は既にXを設定してあるので、人差し指の Secondary Axis にはYかZが設定されます。
 そして、この人差し指がシーン内のどの軸を向くかを指定するのが、Secondary Axis World Orientationになります。


 自分の場合、Secondary Axis にはZを指定しています。
 そして、Secondary Axis World Orientation には、曲げたときに尖る方向を設定します。

 腕だと -z、脚だと +z、手首は +y と、パーツごとに変更していたりします。

 スカートとかマントみたいなモノだと、面法線方向とZ軸を合わせることになるので、感覚的に覚えやすいというか指定しやすいのではないかと思います。

 ここで、ちょっと問題になる事が起きてしまいます。
 普通に Joint Orient を実行していると、手首や足首のような複数へ分岐するジョイント部分で、軸が変な方向を向いてしまうのです。


 この状態を回避するために、軸の向きを指定するためのジョイントを追加します。そのジョイントを子階層のいちばん上に配置することで、軸の向きを制御することが可能になります。


 この追加したジョイントは、最終的に削除する必要がありますが、これを知っておくと、ジョイントの軸を手動で回す必要がなくなるので便利なチップスだと思います。

 ここで、ジョイントを追加したり、移動させたりするとき、ツール設定に注意しておかないといけません。

Joint Tool
Move Tool

 こんな風に、Joint Tool や Move Tool の設定には、Orient Jointと同じような軸を回転させる設定が存在しています。

 この部分が有効のまま、ジョイントを作成したり移動させたりすると、即座にジョイント軸の回転が実行されてしまいます。

 たいてい Local Rotation Axis を表示して作業することは無いと思うので、知らずにジョイントが回転してしまっていることを防ぐためにも、この部分は無効にしておく必要があります。

Joint Tool で無効化
Move Tool で無効化

 オンとオフが、それぞれ逆なので、伝えるときに面倒ですが・・・。


 最後に、ジョイントのミラーコピーですか。


 これを使って軸を編集したジョイント階層を複製すると、なかなか素敵な事が起きてくれます。

 まずは、Orientationでのミラーリング。


 この設定で複製すると、ジョイントはこんな感じになります。


 ジョイント軸の回転は左右で同じ向きを向いています。
 なので、左右のジョイントを選択して回転すると逆回転しているように見えます。

 つぎに、Behavior でのミラーリング。


 この設定で複製すると、ジョイントを回転させたときに、上とは違う挙動になります。


 左右で同じ方向に回転してくれます。
 この部分はアニメーターの好みになりますが、アニメーションカーブのコピーなんかをするときに、そのままペーストできるので、ツール作るうえでは楽ができます。

 ただ、Local Rotation Axis を良き見ると分かるのですが、ジョイント軸の向きが反対になっています。
 このことを覚えておかないと、リグを組むときに計算ノードの接続を間違い易かったりしますね。

 これだけ説明して、まだ、ジョイントの入り口でしかないというのが、mayaのジョイント、なかなか奥が深い。というか難解過ぎます。

 


0 件のコメント:

コメントを投稿