あまりスケールにキーを打つことはありませんが
キャラクターにスケールをかけるときがあると、末端の挙動が
おかしくなることが良くあります。というか大抵予測通りに行かない。
なので、少し調べてみました。
mayaで、AとB両方からCにスケールコンストをしたときのブレンドの式を答えなさい。
こちら分かりますか?

C = √(A * B)
画像を見ても分かるかと思いますが、線形ではありません。
FKとIKのスケールを平均でブレンドするなら、エクスプレッションや
ノードエディターで工夫しないといけません。
C = (A + B) / 2
をしました。
こちらは、意図した結果になります。
使い方のポイントとしては、pairBlendのTranslateにScaleを突っ込みます。
手に武器用のロケーターが付いたものです。
武器と仮定した外にあるロケータに、parentとscaleのコンストをかけました。
すると、武器ロケーターのスケーリングの挙動がおかしくなります。
scaleコンストは、shearには興味が無いようです。
この場合は、shearの値を接続してあげればOKです。
グローバルの値をダイレクトに入れます。
武器骨のWorld Matrixから、decomposeMatrixノードに繋ぎ
Output Shearから、武器のShearに接続します。
ノードエディタで、decomposeMatrixノードの出し方は
1.) TABを押す
2.) decと入力
3.) TABを2回押す
と楽に出ます。
Matrixのブレンドは、wtAddMatrixノードを使用します。
wtAddMatrixノードは、出したままですと、入力を受け付けません。
ですので、一度ノード上で右長押しから、Show All Attributeを選択すると、接続が出来るようになります。
真ん中辺りのmultMatrixノードは、武器の構造が階層だった場合
親の逆Matrixをかけて、ローカルへ変換しています。
このやり方は、pivotを動かしているノードを絡める場合、pivotも考慮
してあげる必要があります。
Rigですと、普通にpivotを動かしていますよね。
このケースは次回ということで(実は良く分かっていません・・・笑)
では。
3 件のコメント:
はじめまして。私はリガーです。
日本語はあまり得意ではありませんのでご了承ください。
私もwtAddMatrixに興味をもちました。
質問なのですが、
triple chainを実装する時について
2種類のノードのtranslate,rotate,scaleをblendして第三のノードを動かす時
1.両方のノードから第三のノードにconstraintする。
2.両方のノードを同じ原点を親としながらblendcolorを3つ用意して第三のノードに接続する。
2'両方のノードをdecomposeMatrix2つにそれぞれ接続してそれらをblendcolor3つに接続すし第三のノードに接続する。
3.両方のノードをwtAddMatrixに接続してdecomposeMatrixより第三のノードに接続する。
などが考えられますがどれが速度が速いのでしょうか。
私の考えではconstraintを2重にかけるのはバージョンごとにバグがあったり、
そもそもconstraintは重いのに二重にかけるのはよくないとおもうのです。
私の勘なのですが速度が速い順番に2、3、2'だと思うのですが、
経験上どれが一番速度が速いかご存知ですか?
はじめまして。書き込みありがとうございます。
wtAddMatrixの速度に関しては、このブログでは取り上げてませんが、結構重いです・・・。
恐らくですが、早い順に
2 > 2` > 3
だと思います。
ただし、2の原点のノード計算を考慮に入れると2と2`はさほど変わらないように思えます。
wtAddMatrixは、どちらかというと、Animator向きなのかも知れません。
僕はAnimatorなので、wtAddMatrixはたまに使います。
ご丁寧にありがとうございます。
私のほうで検証する機会があったので結果を報告します。
2が圧倒的に早いです。また2'のdecomposeもほとんど時間に影響せず、
知覚できないほどの違いしかありませんでした。
結果はおっしゃるとおり2>2'>3でした。
コメントを投稿