2007年12月09日
回転タイプは面倒だった。
う~。。。思ったより、ずっと面倒だった。
何とかできたけど。。。止めれば良かったかも?

回転マンタの機能をおさらいすると、
1.サイズ変更機能(全長2.5m,5m,7.5m,10mの4段階)
2.回転半径変更機能(1m~25m)
3.回転方向変更機能
の3つになります。
本来であれば、ダイアログから此処の設定を指定時に変われば一番良いのですが、それが困難でした。
理由は、マンタが4パーツから構成されており、それぞれのパーツ位置調整が難しいからです。
例えばマンタだけで考えれば、マンタの胴体(ルートになる)を中心に、各パーツの位置を調整すれば良いのですが、回転タイプではルートが回転軸になってしまうため、回転軸との相対位置では、マンタとしての構成パーツの位置が単純には合わないのです。
例えば、フリームーブタイプの場合のサイズ調整機能は以下のような感じになっています。
float f = 変更後の大きさ/変更前の大きさ; //体長の変更比率を求める。
llMessageLinked( LINK_SET, status, (string)f, NULL_KEY);
このリンクメッセージを受信して、変更比率からllSetScaleで大きさを変え、更にllSetPrimitiveParamsで位置を微調整しているのです。
link_message(integer sender_num, integer st, string msg, key id){
f = (float)msg;
llSetScale(llGetScale() * f);
llSetPrimitiveParams([PRIM_POSITION, llGetLocalPos() * f]);
}
ここで位置の微調整に使っているのがllGetLocalPos() です。つまりルートからの相対位置に対して、大きさ変更による比率を元に調整している訳です。
これが回転タイプだと使えなくなってしまうのですね。ルートが回転軸ですから、そこからの相対位置を元に調整したのではあわなくなってしまいます。あくまで、マンタ本体の中心を基準に調整しないと駄目ですからね。
回転方向を変えるに至ってはお手上げです。なにせ、マンタの向きを逆にしないといけません。すると、今まで右側にあったヒレは左側へ移動する事になります。尾びれも反対側に来ます。
回転の位置が苦手の方向音痴ゴンベとしては、こうなっては何が何やら?訳が分からずお手上げ状態です。
で、結局Sculpted Dolphins Shop方式で、ダイアログの設定内容を元に、次の手順で反映させる方式に至った訳ですね。
1.ダイアログで設定内容を入力
2.マンタ側にダイアログで設定した内容をパラメータで渡して、標準のマンタオブジェクトをRez
3.マンタ側はパラメータ内容を元に、サイズ調整と半径の位置へと移動
4.マンタと回転軸をリンク
5.回転開始
となる訳です。
そして、タッチして再設定したい時は、一旦マンタを消滅させて、再度Rezして反映させると言う事です。
しかし、これもけっこう面倒なスクリプトでした。
リンク設定・解除のパーミッションを取得したり、メッセージ交換でUUIDを受け取ったり、更に厄介なのは自爆時に回転軸を巻き込んで自爆してしまい、全てが消えてしまうとか・・・(T_T)ウルウル
時には、マンタの片翼だけ大きさが違うとか・・・(T_T)
とにかく焦りまくりでした。(^_^;) 続きを読む
何とかできたけど。。。止めれば良かったかも?

回転マンタの機能をおさらいすると、
1.サイズ変更機能(全長2.5m,5m,7.5m,10mの4段階)
2.回転半径変更機能(1m~25m)
3.回転方向変更機能
の3つになります。
本来であれば、ダイアログから此処の設定を指定時に変われば一番良いのですが、それが困難でした。
理由は、マンタが4パーツから構成されており、それぞれのパーツ位置調整が難しいからです。
例えばマンタだけで考えれば、マンタの胴体(ルートになる)を中心に、各パーツの位置を調整すれば良いのですが、回転タイプではルートが回転軸になってしまうため、回転軸との相対位置では、マンタとしての構成パーツの位置が単純には合わないのです。
例えば、フリームーブタイプの場合のサイズ調整機能は以下のような感じになっています。
float f = 変更後の大きさ/変更前の大きさ; //体長の変更比率を求める。
llMessageLinked( LINK_SET, status, (string)f, NULL_KEY);
このリンクメッセージを受信して、変更比率からllSetScaleで大きさを変え、更にllSetPrimitiveParamsで位置を微調整しているのです。
link_message(integer sender_num, integer st, string msg, key id){
f = (float)msg;
llSetScale(llGetScale() * f);
llSetPrimitiveParams([PRIM_POSITION, llGetLocalPos() * f]);
}
ここで位置の微調整に使っているのがllGetLocalPos() です。つまりルートからの相対位置に対して、大きさ変更による比率を元に調整している訳です。
これが回転タイプだと使えなくなってしまうのですね。ルートが回転軸ですから、そこからの相対位置を元に調整したのではあわなくなってしまいます。あくまで、マンタ本体の中心を基準に調整しないと駄目ですからね。
回転方向を変えるに至ってはお手上げです。なにせ、マンタの向きを逆にしないといけません。すると、今まで右側にあったヒレは左側へ移動する事になります。尾びれも反対側に来ます。
回転の位置が苦手の方向音痴ゴンベとしては、こうなっては何が何やら?訳が分からずお手上げ状態です。
で、結局Sculpted Dolphins Shop方式で、ダイアログの設定内容を元に、次の手順で反映させる方式に至った訳ですね。
1.ダイアログで設定内容を入力
2.マンタ側にダイアログで設定した内容をパラメータで渡して、標準のマンタオブジェクトをRez
3.マンタ側はパラメータ内容を元に、サイズ調整と半径の位置へと移動
4.マンタと回転軸をリンク
5.回転開始
となる訳です。
そして、タッチして再設定したい時は、一旦マンタを消滅させて、再度Rezして反映させると言う事です。
しかし、これもけっこう面倒なスクリプトでした。
リンク設定・解除のパーミッションを取得したり、メッセージ交換でUUIDを受け取ったり、更に厄介なのは自爆時に回転軸を巻き込んで自爆してしまい、全てが消えてしまうとか・・・(T_T)ウルウル
時には、マンタの片翼だけ大きさが違うとか・・・(T_T)
とにかく焦りまくりでした。(^_^;) 続きを読む
2007年12月09日
セカンドライフ「サンタの落とし物探しイベント」のご案内
クリスマス・イベントとして、WITH SIMで以下のイベントが開催されるそうです。
参加者には、なんと「もれなく」L$800がプレゼントされるそうです。オー!太っ腹ー!
更には、サンタの落し物を拾ってサンタに届けると、豪華賞品まで貰えるとか。これは行かなくては!
ただ、参加者は各日先着40名までだそうです。
これはきっと参加資格を得るための、熾烈なバトルになるでしょうね。「早い者勝ち!」ですからね。
相当気合を入れて会場へ行ってください^ ^
具体的な内容は、主催者記事を以下に掲載しますので、ご参照くださいね。
***** 以下が主催者による告知記事 *******
セカンドライフにおいて12月15日(土)、16日(日)の21:00~22:30に
「サンタの落とし物探しイベント」が行われます。

この「サンタの落とし物探しイベント」は、京都大学大学院 情報学研
究科 社会情報学専攻 市場・組織情報論分野研究室の実験に、博報堂
が“WITH”という島を提供して行われるものです。
サンタの落とし物は全部で20個あり、イベントの参加者に見つけ出して
もらいます。
落とし物にはそれぞれヒントがあり、ヒントがなければおもちゃを見つ
けることはできません。ヒントを探し出し、おもちゃを見つけてくださ
い。
イベント終了時に、見つけたおもちゃをサンタの袋に返してくれた参加
者には、サンタからお返し(高価アイテム・アバター、リンデンドル等)
があります。
このイベントの参加者にはもれなく800リンデンドルが参加賞としてプレ
ゼントされますが、各日程につき定員の40名になり次第募集が終了され
、会場へはテレポートできなくなってしまいますので、予めご了承くだ
さいますよう、お願い申し上げます。
また、募集条件として下記のようなものがございますので、併せてご確
認ください。
・12月15日(土)21:00~22:30・12月16日(日)21:00~22:30のどちらか1時
間半確実に時間の取れる人。(最後まで参加されない場合、参加賞・景
品をお渡しすることはできません)
・Second Lifeの基本的な使い方を理解している人。(アバターの操作・
アイテムの受け渡し・会話の仕方・オブジェクトに座る/触れる等の操
作)
・ある程度軽快にSecond Lifeが動き、スピーカー機能のあるパソコンを
持っている人。
・筆記用具等メモの書き込みができるものを用意できる人。
・イベント中はサンタの帽子を被ってもらうので帽子の似合うアバター
で参加下さい。
・身体のサイズの規制はございません。
イベント会場に移るURLは、以下の通りです。
http://www.loka.jp/perma/sl/index26.html
**** ここまで ********************
と言う事で、会場は例の「300人乗っても大丈夫?」で悪戦苦闘したSIMのようです。頑張って参加して、お金と商品をゲット!しまくりましょう。
尚、参加応募方法がイマイチ分かりません。当日会場へ行けばよいのか?それとも事前に何か応募手続きが必要なのか?
その辺は分かり次第にご案内しますね。
とりあえず、このようなクリスマス・イベントが開催されるようですから、楽しみにお待ち下さい。
果たしてゴンベは参加できるのだろうか?40人は競争率高そう~><
参加者には、なんと「もれなく」L$800がプレゼントされるそうです。オー!太っ腹ー!
更には、サンタの落し物を拾ってサンタに届けると、豪華賞品まで貰えるとか。これは行かなくては!
ただ、参加者は各日先着40名までだそうです。
これはきっと参加資格を得るための、熾烈なバトルになるでしょうね。「早い者勝ち!」ですからね。
相当気合を入れて会場へ行ってください^ ^
具体的な内容は、主催者記事を以下に掲載しますので、ご参照くださいね。
***** 以下が主催者による告知記事 *******
セカンドライフにおいて12月15日(土)、16日(日)の21:00~22:30に
「サンタの落とし物探しイベント」が行われます。

この「サンタの落とし物探しイベント」は、京都大学大学院 情報学研
究科 社会情報学専攻 市場・組織情報論分野研究室の実験に、博報堂
が“WITH”という島を提供して行われるものです。
サンタの落とし物は全部で20個あり、イベントの参加者に見つけ出して
もらいます。
落とし物にはそれぞれヒントがあり、ヒントがなければおもちゃを見つ
けることはできません。ヒントを探し出し、おもちゃを見つけてくださ
い。
イベント終了時に、見つけたおもちゃをサンタの袋に返してくれた参加
者には、サンタからお返し(高価アイテム・アバター、リンデンドル等)
があります。
このイベントの参加者にはもれなく800リンデンドルが参加賞としてプレ
ゼントされますが、各日程につき定員の40名になり次第募集が終了され
、会場へはテレポートできなくなってしまいますので、予めご了承くだ
さいますよう、お願い申し上げます。
また、募集条件として下記のようなものがございますので、併せてご確
認ください。
・12月15日(土)21:00~22:30・12月16日(日)21:00~22:30のどちらか1時
間半確実に時間の取れる人。(最後まで参加されない場合、参加賞・景
品をお渡しすることはできません)
・Second Lifeの基本的な使い方を理解している人。(アバターの操作・
アイテムの受け渡し・会話の仕方・オブジェクトに座る/触れる等の操
作)
・ある程度軽快にSecond Lifeが動き、スピーカー機能のあるパソコンを
持っている人。
・筆記用具等メモの書き込みができるものを用意できる人。
・イベント中はサンタの帽子を被ってもらうので帽子の似合うアバター
で参加下さい。
・身体のサイズの規制はございません。
イベント会場に移るURLは、以下の通りです。
http://www.loka.jp/perma/sl/index26.html
**** ここまで ********************
と言う事で、会場は例の「300人乗っても大丈夫?」で悪戦苦闘したSIMのようです。頑張って参加して、お金と商品をゲット!しまくりましょう。
尚、参加応募方法がイマイチ分かりません。当日会場へ行けばよいのか?それとも事前に何か応募手続きが必要なのか?
その辺は分かり次第にご案内しますね。
とりあえず、このようなクリスマス・イベントが開催されるようですから、楽しみにお待ち下さい。
果たしてゴンベは参加できるのだろうか?40人は競争率高そう~><