補間(vector編)っす

ぺんぎん

2009年07月07日 21:37


「軸」と「回転角」、頭に入ったっすか?
試験にでるっすよ。(黒板を叩きながら)
どうもぺんぎんっす( ◎v◎ )


パスカットなし型のドアをイメージしてくださいっす。
SetPosでは最初の位置→最終の位置まで直線を描くっす。
円弧を描くのが正しいっすから、違和感が生まれるっす。
三角関数でゴリゴリやれば途中での位置は出るっすけど、
rotationを使ってやると簡単にできるっす。

ベクトルの回転の最大のポイントは、
回転の中心はどこ?ってことっす。
ZERO_VECTORなのか、ルートの位置なのか、それとも別にあるのか、
ものすごく重要っす。

ドアの最初の位置、回転軸、回転角が既知
パスカットなし型ドアの場合、
途中の位置 =
 最初の位置 * llAxisAngle2Rot(軸, テキトー)
っと、これだけっす。
回転の中心は最初から最後まで変わらないっすよ。

軸は蝶番2つを利用(回転軸上にあるっすからね)すればラクっす。
GetPosして引き算っす。(正規化忘れずにっす)
回転角はお好みっす。


ぺんぎん的結論:
「軸」と「回転角」を制する者が、rotationを制する
回転角の符号の問題っすねぇ・・・
軸が逆向きだと、回転角も符号を入れ替えないとダメっす。

Try&Errorで何とかするっすか?
スクリプト