ソラマメブログ

2008年02月19日

回転系LSL

わたしゃ回転系のスクリプトが苦手です。
オイラ、オイラー表記なんてわからんよ。

でも結構ソレを書かなくてはいけないケースがある。

一番よくあるのは、場所(position)と回転(rotation)を同時に動かすケース。
回転軸がルートプリムじゃないケース...例えばドアとか
(ドアでもルートプリムは作れますけどね)

場所と回転を同時に動かすには...llSetPrimitiveParams
ってのはすぐ思い出すのだけど、回転のセットの仕方がめんどうくさい。

だから関数化するのだけど、すぐ忘れるので覚書。

PosRot(vector Pos, vector Rot){
rotation r = llEuler2Rot(Rot * DEG_TO_RAD);
llSetPrimitiveParams([PRIM_POSITION,Pos,PRIM_ROTATION,r]);
}

ポイントなのは回転指定(Rot)がベクター...つまりオイラー表記であること。
そしてそれがDegree...つまりラジアンではなくて、角度であること。

PosもRotも編集ダイアログの値をそのまま参考にできる。
(場合によっては...PosはllGetLocalPosで取得しなくちゃいけないけど)

回転(rotation)は、直感的にピンと来ないので、角度っちゅうもので指定しているわけです。

まぁ、いまさら...な人には今さらなネタなんですけどね  

Posted by Yambal Yue at 14:17Comments(2)TrackBack(2)覚書