モデリング第七天

拠り所 なんのためにかと自問する

最近の悩み2

2009-02-24 19:35:06 | 雑文
この前の話の続き。

えーっとなんだっけ、あそうそう、軸ベクトルの話。
LWで作ったボーンをMAYAにもってくと軸情報がおかしくなる。
図を使えば一発なんだけど用意すんのがめんどいので簡単に説明すると、例えば腕を横にまっすぐ伸ばして垂直のポールを掴むとする。その際意識しなければ大抵の人は肘の稼動角は横向きになる。これが正常な状態。ところが軸ベクトルが狂ってるっていうのは、要するにこの時に肘の稼動角が縦向きになってるっていうこと。
で、この状態でIKを使うと意図しない方向に曲がってしまう。
普通は回転角の制限なんかを使って曲がる方向を制限するんだけど、今回はMAYAの機能でスプラインIKとヘアダイナミクスを使ってて、この機能を使う場合回転角の制限が利用できないっていう…。
要するに現状では軸ベクトルのねじれのせいでBONEを演算に利用する事が出来ない。

で、色々と考えて、要はLWでBONE作るときに軸ベクトルがねじれないような作りかたすりゃいいんじゃね?って結論になった。どうするかっていうと上の画像の左側みたくBONEを仕込みます。(右側は従来型のBONE)
ちょっとわかりにくいかもなんだけど、要は各BONEを回転させずに仕込んでいくわけ。各BONEは浮動ボーン扱いにしてリンクしてきます。
これなら全てのBONEの数値が0なので軸ベクトルの問題を回避できるわけですな。
実はこの方法はかつでローカル座標回転の機能を持っていなかったLWの6以前のバージョンでジンバルロックを回避する方法としてはメジャーな方法だったんだけど、IKチェインを組みにくかったり、セットアップがしにくかったり、生理的な問題だったり色々理由で避けてた方法なんだよね。
でも、リグコントロールを原則他のソフトでやると考えた場合、実際この方法のほうがデータのねじれが生じないので非常に都合がいい。実際クオータニオンベースのほかのソフトのBONEは内部的にはこの構造でBONEデータを保持してるわけだ。
そんなわけで、BONEの問題は解消できた。

ところが今はまた新しい問題が生じて頭を悩ませている。
…続く