2025年1月18日土曜日

ボーンモーフの回転とか順番とかについて(また中編??)

ボーンモーフの回転量、移動量はワールド軸、ワールド座標で記述、処理されます

ボーンを操作して変形の結果を確認しながらの作業がほとんどで、丁寧にセットアップされているモデルさんだと丁寧にローカル軸の設定等はされています

ですから、ワールド軸(座標)、ローカル軸(座標)というのは普段あまり気にする事は無い事柄なんですよね

このワールド軸処理というのはモーションデータの互換性を維持するために必要な仕様ではあるのですが、一見不思議な現象の原因にもなっています

ボーンモーフの回転量を数値入力した場合の順番や量、回数、同時に指定したかどうか等の入力順や方法によって変形結果が変わっちゃうのです

意味がわかんねぇ?何言ってるの?とか言われそうなのですが、本当です

これ、数学が好きな人だとピンと来るかもなのですが(X,Y,Z)という行列を扱う計算なので計算順序で結果が変わります

それが、視覚的に見えているという事です

ベクトルの回転とか行列変換とかフーリエ変換とか、私も深く理解しているわけでは無いですし、そーいう事まで理解する必要は無いと思います

「そーいう事があるんだねぇha-he-」という感じで大丈夫

実際に触ってみて、作ってみて、失敗して、最終的に形に出来ればそれでOKでしょう?


例をいくつか並べてみます

この形がデフォルトです

ここから各軸に90度回転させていきます

入力順序で結果が変わるのがわかると思います


XYZ軸に順次90度回転を入力した結果がコレ

結果Aとしますね






XYZに一括で90度回転を入力したボーンモーフの変形結果だとこうなります

こちらは結果B








X軸90度回転、Y軸90度回転、Z軸90度回転の単独モーフをXYZの順でグループモーフに纏めたもの

各軸に90度の入力をXYZの順番で順次回転させてからモーフ化したモーフ、3軸のモーフを重合加算で結合したモーフも結果は同じになるのですが、途中の変化が異なりました

変形自体は結果Aと同様ですね


グループモーフのリストの順序をZXYの順番に変更したモーフの結果です

順次ZXYに入力したモーフ、XYZ単独モーフを結合したモーフも同様の結果になります

結果Bと同様ですね

一括で入力した場合の内部的計算順序はZXYの順番だという事でもありますね



纏める順番や、入力する順番が変わるとまた結果が変わってきます

こんなになっちゃったり(YXZの順番)

こんなになっちゃったりします(XZYの順番)



結果が随分違うのが解るでしょう?

当然回転する軌道も変わってしまいます


45度回転とかでも色々変わるので弄ってみるのが一番解りやすいはず

サンプルモデルを用意してみましたのでモーフを弄ってみてください



ボーンモーフやグループモーフを作ってみたけどなんか変だぞという時の解決方法

ボーンモーフを統合したり、グループモーフを組む時に特定のボーンを複数軸で回転させてしまう事はありがちです

あるえ?そういう形になっちゃう?あるえ?とかなっちゃう事がありえるわけです

そこで諦めないでちょっと頑張って解決してみましょう


■モーフの結合方法を考える

 結合、結合(重合加算)、グループモーフ、フリップモーフ


■グループモーフ、フリップモーフの場合、処理順序を変更してみる

 モーフリストの順番を入れ替えてみて結果を確認していく


■ボーンモーフを細かく纏めて、順次処理するようにする

 処理順序によって結果が変わる筈なので、その順序でのモーフ適用をデフォルトとする


とそんな感じで行けるハズです

「何故そうなるかが解らない」ではなく「原因と解決方法は見えた」わけですから、何回かトライアンドエラーしていけば慣れてくると思います


ボーンを多数軸で回転させるボーンモーフを組んだ時、ボーンモーフを纏めたときの注意点でした

怖くないよー(こっちゃこーい



0 件のコメント:

コメントを投稿

ボーンモーフの回転とか順番とかについて(また中編??)

ボーンモーフの回転量、移動量はワールド軸、ワールド座標で記述、処理されます ボーンを操作して変形の結果を確認しながらの作業がほとんどで、丁寧にセットアップされているモデルさんだと丁寧にローカル軸の設定等はされています ですから、ワールド軸(座標)、ローカル軸(座標)というのは普段...