これは面白いという結果が有り記事を書きました!
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形式でまとめてみました。
RotateからJointOrientを抜くには移行してこんな感じ。
Mayaでコネクションを作ってみました。
matrixとついているものはcomposeMatrixとmultMatrixノードを利用しています。
まとめ
jointOrientを抜くって結構面倒くさいですよね。
あとはバインド後はフリーズすることができないので、
Rotateだけで制御が楽なのでは…?とか思ったりもします。
そうすると今度は初期姿勢はどれだっけ?ってなってしまいますよね。
バインドポーズの更新で管理するか、別のアトリビュートに初期姿勢を持つか…
そのような選択も可能ではあるけど…うーん。
それでは!
講談社
売り上げランキング: 9,463
コメント