ソラマメブログ
プロフィール
ぺんぎん
ぺんぎん
どもっす( ◎v◎ )
ぺんぎんっす。

「ぺんぎんさん」でいいっす。
「ぺんさん」でもOKっすよ。
何だって良いんっすけどね。
[個体名:Naoya Bellic]
(非商用)
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人

2009年07月06日

補間(rotation編)っす

弾薬倉庫でゴソゴソしてるっす。(昨日の流れ参照)
どうもぺんぎんっす( ◎v◎ )


ベクトルの回転については今度っす。
rotationだけの場合っす。

「最初の姿勢」から「最終の姿勢」まで一気に変化させるなら、
llSetRot(最終の姿勢)としてしまえば良いっす。
ちょっとずつSetRotとかで回す場合っす。

Case1.最初と最後の姿勢のオイラー角が既知
プリムをコネコネして、最初の角度と終わりの角度を決めて、
あとは回すだけ・・・って、アレ?というケースっす。
妙な角度から、妙な角度への変化っすから、妙なことになるっす。

1.とりあえずEuler2Rotでrotatioinにしておく
 rot_startとrot_endとしておくっす。
2.姿勢を変化させるrotation(rot_act)を作る
 rot_actは関係式
 rot_end = rot_start * rot_act
 で表わされるrotationっす。

 両辺に左から(ZERO_ROTAION / rot_start)をかけると、
 ZERO_ROTATION / rot_start * rot_end = rot_act
 となって、これが求めるrot_actっす。
3.rot_actをいじる
 startからendまで何度?ということがrot_actで分かるっすね。
 もちろん軸も分かるっす。
 軸はそのままで回転角をいじれば、思い通りに回転できるっす。

 途中の姿勢 =
  rot_start * llAxisAngle2Rot(llRot2Axis(rot_act), おまかせ)

 for文で回すなり、お好きにどうぞっす。

Case2.最初の姿勢、回転軸が既知
えーっと・・・ドアっす。
蝶番のところが軸で、回転角はテキトーっす。

実際(RL)のドアに蝶番は2つ付いてるっすね。
その蝶番の座標を引き算すると軸が出るっす。
必要なくてもプリム2つをペタペタくっつけてGetPosさせて、
座標が取れたら外せばOKっすね。
そのままだと気持ち悪いっすから、正規化ヨロシクっす。
軸が分かっていれば必要ない作業っすけどね。

1.まずはEuler2Rot
 rot_startとするっす。
2.途中の姿勢 =
  rot_start * llAxisAngle2Rot(軸, テキトー)

回転軸さえ分かっていれば簡単っすね。
パスカットあり・なし問わず、回転については共通っす。
あり・なしで変わるのは、移動する・しないってところっす。

ベクトルの回転は始点を移動させるので手間が増えるっすけど、
基本は同じく「軸」と「回転角」っす。


ベクトルについては今度っす。


同じカテゴリー(スクリプト)の記事画像
位置判定っす
同じカテゴリー(スクリプト)の記事
 久しぶりの新関数っす (2011-04-23 23:19)
 11日(土)のオフィスアワーっす (2010-12-10 23:49)
 C#プロジェクトは凍結みたいっす (2010-07-01 22:35)
 4月24日のスクリプターズ・カフェっす (2010-04-27 19:06)
 潜入!1.38サーバーっす (2010-03-09 22:25)
 風の観測で分かったことっす (2009-08-16 22:11)

Posted by ぺんぎん at 21:52│Comments(0)スクリプト
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。