リグログ!

[Maya]ジョイントの回転って?

これは面白いという結果が有り記事を書きました!
Twitterからネタ募集をしようかな…

へぇ〜!
一般的にはJointOrientに初期の姿勢を持っておくだとは思います。
ただ、JointOrientを考慮してリグを作るのもダルいのです。
私はどっちの場合もOKではあるが、楽をしたい!軽くしたい!という意味ではRotateにしたい願望はあります。

ではJointOrient成分をどう抜くか?というのはSEN-Aさんの記事にブログ記事に書いてあります。

ということでこの記事はここで終わりです。

いやいや、それでは書いた意味がない!!

というわけで、Mayaの回転とは?なお話をしてみましょう。
さて、純粋にワールド行列を移動・回転・スケールに変換してコネクトする場合に、
回転というのはいろんな成分が混ざっています。

例えばJointノードの場合の回転とは、
回転 = RotateOrient * Rotate * JointOrient
この順番で計算されます。

ここで問題になるのは、
JointをFreezeするとRotateの値はJointOrientに入ります。
もし、RotateとJointOrientの2つの値を使う場合には面倒くさいことが起こります。

例えば、
出力のワールド行列を使ってコネクトするが、入力する側のJointOrientは維持したい場合。
出力の回転から入力側のJointOrient分を抜かなければいけません。

さて、一旦以下の式を、
回転(Rotate) = RotateOrient * Rotate * JointOrient
かっこよくLaTeX形式でまとめてみました。

$$\LARGE R=RO \ast R \ast JO$$

RotateからJointOrientを抜くには移行してこんな感じ。

$$\LARGE R \ast JO^{-1} =RO \ast R $$

Mayaでコネクションを作ってみました。
matrixとついているものはcomposeMatrixとmultMatrixノードを利用しています。

まとめ

jointOrientを抜くって結構面倒くさいですよね。
あとはバインド後はフリーズすることができないので、
Rotateだけで制御が楽なのでは…?とか思ったりもします。

そうすると今度は初期姿勢はどれだっけ?ってなってしまいますよね。
バインドポーズの更新で管理するか、別のアトリビュートに初期姿勢を持つか…
そのような選択も可能ではあるけど…うーん。

それでは!


関連記事

コメントをお待ちしております

HTMLタグはご利用いただけません。

HelloWorld!

// サイトについて
主に3DCGのテクニカル関係の
ネタを取り扱うサイトです。

情報提供随時お待ちしております。


//管理人経歴

CADデザイナー

DTPデザイナー

3DCGインストラクター

UI/UXデザイナー

3Dジェネラリスト

アートディレクター

テクニカルアーティスト

リギングスーパーバイザー

テクニカルアーティスト

免責事項

本サイト内で公開している
全ての情報に関しては、安全性等、
いかなる保証もされません。

これらの情報を利用したことにより
生ずるいかなる損害に対しても
当方は一切責任を負いません。

使用する場合、
自己責任でご使用ください。

アーカイブ

カテゴリー