2009年07月07日
補間(vector編)っす
「軸」と「回転角」、頭に入ったっすか?
試験にでるっすよ。(黒板を叩きながら)
どうもぺんぎんっす( ◎v◎ )
パスカットなし型のドアをイメージしてくださいっす。
SetPosでは最初の位置→最終の位置まで直線を描くっす。
円弧を描くのが正しいっすから、違和感が生まれるっす。
三角関数でゴリゴリやれば途中での位置は出るっすけど、
rotationを使ってやると簡単にできるっす。
ベクトルの回転の最大のポイントは、
回転の中心はどこ?ってことっす。
ZERO_VECTORなのか、ルートの位置なのか、それとも別にあるのか、
ものすごく重要っす。
ドアの最初の位置、回転軸、回転角が既知の
パスカットなし型ドアの場合、
途中の位置 =
最初の位置 * llAxisAngle2Rot(軸, テキトー)
っと、これだけっす。
回転の中心は最初から最後まで変わらないっすよ。
軸は蝶番2つを利用(回転軸上にあるっすからね)すればラクっす。
GetPosして引き算っす。(正規化忘れずにっす)
回転角はお好みっす。
ぺんぎん的結論:
「軸」と「回転角」を制する者が、rotationを制する
試験にでるっすよ。(黒板を叩きながら)
どうもぺんぎんっす( ◎v◎ )
パスカットなし型のドアをイメージしてくださいっす。
SetPosでは最初の位置→最終の位置まで直線を描くっす。
円弧を描くのが正しいっすから、違和感が生まれるっす。
三角関数でゴリゴリやれば途中での位置は出るっすけど、
rotationを使ってやると簡単にできるっす。
ベクトルの回転の最大のポイントは、
回転の中心はどこ?ってことっす。
ZERO_VECTORなのか、ルートの位置なのか、それとも別にあるのか、
ものすごく重要っす。
ドアの最初の位置、回転軸、回転角が既知の
パスカットなし型ドアの場合、
途中の位置 =
最初の位置 * llAxisAngle2Rot(軸, テキトー)
っと、これだけっす。
回転の中心は最初から最後まで変わらないっすよ。
軸は蝶番2つを利用(回転軸上にあるっすからね)すればラクっす。
GetPosして引き算っす。(正規化忘れずにっす)
回転角はお好みっす。
ぺんぎん的結論:
「軸」と「回転角」を制する者が、rotationを制する
回転角の符号の問題っすねぇ・・・
軸が逆向きだと、回転角も符号を入れ替えないとダメっす。
Try&Errorで何とかするっすか?
軸が逆向きだと、回転角も符号を入れ替えないとダメっす。
Try&Errorで何とかするっすか?
Posted by ぺんぎん at 21:37│Comments(2)
│スクリプト
この記事へのコメント
パスカットなしのドアの動きは独特ですよねぇ。初めは違和感ありますけど、個人的には、あの動きが、結構好きだったりします
Posted by midoriPaulse at 2009年07月08日 08:17
FPSが小さいもんっすから、あまり違いが分からないっす(涙)
Posted by ぺんぎん
at 2009年07月09日 17:35
