エビマヨ60分クッキング~最終回~オブジェクトREZ編

2008.06.22.21:00

 

こんにちは、エビです。 とうとう今回をもって、最終回となりました;; 約2ヶ月間ありがとうございました^^

7月からは土曜日にやっているマキシマムのモデリング講座と統合されて、再び戻ってきますので
それまで暫しおやすみです。

では、今回のテーマは、オブジェクトREZです。
現在メルティングドッツ・ウォーカーSIM群のリニューアル工事に伴って、
巨大観覧車を設置しようと目論んでいますw

ただ番組時には、スクリプト制作に準備時間が足りず、突貫スクリプトで挑んでしまったので
観覧車がまわるに従って座席が等間隔にならんでたものが、少しづつずれを生じてしまいましたw

なので、今回はスクリプトの例文掲載は控えさせていただきますね。
正式に観覧車の設置が完了したところで、機会があったらスクリプトの紹介をさせていただきます^^;


~スクリプト~
計画をしている観覧車は直径40m以上の大観覧車です。

これを設置するにあたって、セカンドライフでの仕様上問題がでてきます。
まず、プリムは10m以下しか作れない(ヒュージプリム以外で)
それと、プリム同士のリンクを張るには距離が30m以下。

つまり、計画の観覧車は、違う方法で設置しなければなりません。

そこで、
・1座席出現させ、座席が出現したら大きな円軌道を描いて動く。
・一定間隔があいたら、また座席を出現させる。
の繰り返しで、座席部分の表現はできるはずです。

まず、座席の出現方法ですが。


llRezObject(string inventory, vector pos,vector vel, rotation rot, integer param)
という命令を使います。


画像のように、オブジェクトの中に別のオブジェクトを入れておき、この命令の入ったスクリプトを入れることで、
REZさせることができます。
ただ、中のオブジェクトをコピーしてREZしていきますので、コピー可の状態で入れておいてください。

では、それぞれの値を見ていきましょう。

string inventoryは、REZさせるオブジェクトの名前を入れます。上の画像では"Object"ですね。

vector posは、どこの場所に出現させるか座標を入れます。
ただこの座標はワールド座標なので、元のオブジェクトと同じ位置にしたい場合はllGetPos()としてください。
これを単にZERO_VECTORとか<0,0,1>としてしまうと、今いるSIMの<0,0,0>とか<0,0,1>という座標にREZしてしまいます。
(ま、この命令は、REZ場所が元オブジェクトから10m以上距離が離れていたら、REZしない特徴もあります。)
もし、元オブジェクトの1m上方にREZしたい場合は、llGetPos()+<0,0,1>となります。

vector velはREZされたオブジェクトの初速です。
銃火器等で弾丸を射出するときに、この命令をつかい、vector velで弾丸のスピードを調整しますが、
物理オブジェクトのときしか有効ではありません。
物理オブジェクトでなければ、常にZERO_VCTORで構いません。

rotation rotはオブジェクトをどの方向にむけてREZするか設定します。
円柱のオブジェクトを出現する際、これをZERO_ROTATIONとすると、立った状態でREZされますが、
もし横に寝かせて(y軸に90度回転)REZしたい場合は、llEuler2Rot(<0,90,0>*DEG_TO_RAD)と入れてください。
ちなみにllEuler2Rot(<0,90,0>*DEG_TO_RAD)ですが、rotationという形はとあらわされて、
vector型みたいな3次元のような単純なものではありません。
ここで、vector型で角度(ラジアンではなく度)で表わされたものをrotation型に直すのがこの式です。

integer paramはREZされたオブジェクトにスクリプトが入っていて、on_rezイベントがある場合
on_rez(integer param)のparamに数値を受け渡すことができます。

さて、
REZされたほうの座席は、円軌道で描いて動くわけですが、
これは
llSetPos(vector pos)
という命令を使います。
これは前述したllGetPos()の逆で、llGetPosは位置を取得しますが、
llSetPosは位置を設定します。
vector posの中に位置を入れます。これもワールド座標なので注意してください。
円軌道は三角関数(sinとかcos)を使えば座標を設定できます^^

大雑把に解説しましたが、
最後に番組内で出現させた観覧車の画像を張ってお別れしますね~^^
ありがとうございました~(_´Д`)ノ~~.。・:*:・゚`☆、。・:*:・゚`★*



投稿者:メルティングドッツ

 

この記事にコメントする

名前(ニックネーム可)とメールアドレスは必ず入力してください.
メールアドレスは管理者にのみ通知されます.
投稿に時間がかかる場合がございますが、投稿ボタンは2回押さないでください.




ログイン情報を記憶しますか?