« フルみっく | メイン | Wikimedia募金 »
2007年10月31日
CD MorphとCD Jointの連動における問題についてメモ [ CINEMA 4D Plugins ]
先のエントリのコメントで話題になった、CD MorphでCD Jointの角度によってモーフ量を適用する際に生じる問題について、ちょっとわかったことを自分用メモ程度に。
(1)Limb IKの親ジョイント(腕でいうと上腕/脚でいうと腿)のJoint Transformationの角度値は、FKのときは操作している軸しか変化しないが、IKのときはHPBすべて同時に変化する。ただし、見かけ上動いていない軸(回ってるのがPだとするとHとB)の値は相殺する関係になるのでジョイントの向きそのものは正しく、スキン変形に与える悪影響はない。
(2)CINEMA 4DのHPB座標系の制約なのか何なのか不明だが、本来(0,0,0)であるべきオブジェクトの角度が(180,180,-180)や(0,0,360)等に化けることがある。化けているときのオブジェクトの角度は、ぐるっと回って結局同じところへ戻ってくるので見かけ上は同じだが、角度を数値として取得して使う場合には問題になる。CD JointのJoint Transformation角度でも(1)と同時にこの現象が発生する。
(3)CD Morphをジョイント角度に同期してモーフさせる場合、オブジェクト座標が化けていなくても、Joint Transformationが化けているとMorphは狂う。見かけ上、Morphタグが見ている値はジョイントの座標値だが、実際にはJoint Transformationをオブジェクト座標に換算したものを使っているのだろうか?
(4)Joint Transformationの角度値が化ける現象は、Limb IKの親ジョイントの主に動いている軸の角度が90度を超えたときに発生することが多いようだ(Joint Transformationが角度の変化量を取得する際にHPB座標系だと破綻する?)。親ジョイントが90度以上回らないように気をつければ大丈夫かも? アニメーションの途中で化けたのはまだ見たことがないので、ビューでIKを動かしてキーを打つとき気をつければ大丈夫かも?
(5)ジョイントの本来のオブジェクト座標は化けにくい? Joint Transformationが化けてもオブジェクト座標そのものは化けないらしい。算出方法が違うのか?
(6)CD Morphタグ内でジョイントの角度とモーフ量を連動させるとJoint Transformationが化けたとき問題が起きるが、Xpressoでジョイントのオブジェクト座標を取得してMorphタグにつなげれば、Joint Transformationの値の影響はない。つまりジョイントの本来の角度が化けてさえいなければ問題は起きない。危ないジョイントだけMorphタグではなくXpressoで同期すればいいかも。角度とモーフ量の同期がリニアでない場合、複数のジョイントが関係する場合などは、いずれにせよXpressoが必要になるので、Morphタグによる連動自体をすっぱり捨てるのもアリ?
(7)腿のジョイントは、単にルートのジョイントの子にするとZ軸がほぼ正反対を向くので、初期角度が180度付近となる軸があり危ない。ルートの直下に置かずに旧MOCCAのヌルボーンのように同じ向きの親ジョイントをはさむと、ジョイントの初期角度が小さくなり、オブジェクト座標が化ける危険はさらに減少する(ような気がする)。
(8)Joint Transoformation値をXpressoでクランプするとか、ジョイントにクォータニオンタグをつけるとかは効果がなかった。
(9)Joint Transformationの算出にクォータニオンを使えば角度値は化けないような気がするが、プログラム的にどうなってるのか(プラグインのほうでどうにかなるのか、SDKの制約なのか等)わからないのでなんともいえない。この件についてはCactus Danに言ってみるつもり。
投稿者 ヒロツ : 2007年10月31日 03:14
コメント
ごぶさたしております。
いろいろ検証結果、とても参考になってます。ありがとうございます~。
しかしJoint Transformationの角度破綻の問題は根本的な解決策はなさそうですね。原因がC4Dのバグ絡みならさらに面倒・・・っていうか10.5だとどうなんでしょうね。とにかく一度角度が狂ってしまうと手動で値を入力してもまた戻ってしまうのがとても泣けます(´;ω;`)
簡単に直せるならまだやりようはあるんですが・・・。
ドリブンモーフで全部やれればスキニング作業時間は相当減らせるんですけどね・・・スキンクラスタを山のように作る作業はもうイヤだ・・・。・゚・(ノД`)・゚・。
投稿者 今川焼太郎 : 2007年12月08日 13:51
僕は結局、上記(6)の方法で対処しています。モーフにXpressoで調整を加えることが多いので、モーフタグによる連動機能は自分的には無かったことに……。
Joint Transformation化けはR10.5でも起きます。つい先日のCD Pluginのアップデートでも直ってなかったです。まだレポートしてなかった……。
投稿者 ヒロツ : 2007年12月08日 16:37
おお、そういえばCDツールバージョンアップしてますね。
しかしまぁXpressoで連動させたとしても、スキンクラスタを多数作る手間よりも少ないかもしれないですね。私もやってみよう。
R10.5は1月くらいになったらバージョンアップしてみようかなぁ・・・。
投稿者 今川焼太郎 : 2007年12月11日 23:10