トップページに戻る
 
file tclスクリプトの雛形・proc集 ( No.45 )
日時: 2003/07/21 13:46
名前: つる
参照: http://homepage3.nifty.com/STEP/

話がちぐはぐしてしまったようなので、、
あまり上の方はよく読んでないのですが、、、私は、アニメもあまりやりませんし、ちょっと自信はありませんが・・・

宮田さんのおっしゃってる、「ボールジョイントと、3軸の回転ジョイントによる違い」の、手の動きのムービーは、
回転ジョイントの場合、それが「固定された(?)方向周りの回転たかだか○個の”合成”である」ところにあります。
ですから、回転ジョイントをリセットすると、それらの合成が次第に解けて(溶けて?)いくので、その過程が明らかに見えてしまいます。
ボールジョイントの場合は、回転の処理の際、「”どこから>どこへ”動くのか、ということしか気にしない」ので、そのようなことはありません。
宮田さんのおっしゃられてる「一意性」というのが、「”最初”から”最後”までの間」にとる、”中間体”の意味だとしたら、ボールジョイントでも、3軸回転ジョイントでも、「一意」に定まります。問題は、3軸回転の場合、それが、あくまで「合成」であることと、その合成の仕方にさまざまなバリエーションが出てしまうところにあります。
原理的には、3軸ジョイントで、どんな姿勢もとることが出来るので、おかしい動きをさせないためには、モーションを取るポイントを増やしてやることしかありません。最初から適切な3軸ジョイントを仕込むことで、かなり自然な制御は出来ますが、無理な操作を続けているうちに破綻します。

オイラー角は、物体の姿勢を、X、Y、Z軸それぞれの回転によって表すことです。(だったと思います。。)
ですから、
3軸ジョイントのジョイントの順番と、オイラー角の合成順序の話は別の話になります。
上の階層のジョイントを操作すると、下のジョイントの回転軸まで回転してしまうので、ジョイントの階層構造が異なる3軸ジョイントのそれぞれに「同じような」ジョイント値の変更を与えると、
それぞれで、姿勢も向きもてんでばらばらになります。
IK操作で3軸ジョイントをドラッグする時に不自然な動きしかしない理由もこれです。
オイラー角での場合は、X軸で90度、Y軸で90度回転と、Y軸で90度、X軸で90度回転させるのとでは、向いている方向は同じなのですが、ひねり方が違ってきます。

ボールジョイントに制限がかけられないのは、それの実装の仕方に単純だからでしょうか・・・?
ボールジョイントの中身に、ヘディング、ピッチ、バンクと成分をしっかり保持すれ、それの移動範囲を、スポットライト状の形状に制限することは出来そうですが、ただ単に、「任意軸周りに回転する」という機能だけなのかもしれません。
(3Dエンジンの中身についてはほとんど無知なので、適当です・・・信じないでください。)

3軸ジョイントでも、本当にオイラー角のように形状を操作できたら、、つまり、回転ジョイントをフラットジョイントのように並べて、他のジョイントには影響を与えず、形状だけに影響を与えるように出来る「オイラージョイント? (^^;)」とか、
逆に、「3軸回転ジョイント」という”一つ”のジョイントで、「常に3軸が直行して回転するジョイント」が実現できたら、かなり自由な制御が可能になりそうです。
この、「常に3軸が直行して回転する3軸ジョイント」は、プラグインで実装出来そうですね。ただの回転ジョイントを使いまわせば、回転制限も加えられますので、円錐とまではいかなくても、4角錐らしい形の範囲に制限することは出来ますし、ヘディング、ピッチ、バンクを直接かつ確実に指定できますから。