2009年02月18日
ガラクタ品 製作メモ9
えと、突然ですけど
マインスイーパーを作りました

windowsにオマケでついている あの爆弾ゲームです^^

右クリックが使えないので、旗は立てられないですけど、それ以外は普通に動作します。
ただ、84プリムもあるので、どうしようもないガラクタなんですけどね

他に何も置けない・・・・・^^;;

まぁ、とりあえずポツンと置いておきましたので、お暇な方はどうぞどうぞです^^
って、わざわざSLでやるゲームでもないですよね・・・・・

↓ここです
http://slurl.com/secondlife/Uopera/23/182/39
2009年01月14日
テレポーター用スクリプト(短距離用)
あけましておめでとうございます。
年が明けて早2週間になりますけど、いまだに正月ボケが続いてます

本年もできる限りブログを更新していきますので、よろしくお願いしますm(_ _)m
さて、回転の話は、あともう少し続きがあるんですけど、新年1発目ですので
あんまし激しい内容もどうかなと ・・・^^;;
というわけで、
コピペ用のスクリプトを載せることにしますね

今回は、テレポーター(短距離用)のスクリプトです。
地図を開いて他のSIMへテレポートするヤツじゃなくて、
お家とかお店とかの1Fから2Fへ みたいな感じで、すぐ近くにテレポートするヤツです。
これもあちこちで見かけるスクリプトなんですけどね、いろいろと面倒な制限があるものが多いんですよ^^;
というわけで、使い勝手がいいように細かいところを改良してみました

【使い方】
(手順1) テレポーターとして使うオブジェクトを作る。
(手順2) コンテンツの中に下記のスクリプトを入れる。数値等の設定はお好みに書き換えてください。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
以下、コピペしてお使いください
vector destination = <125 , 98 , 23> ; // ①テレポート先の座標 |
default |
{ |
state_entry() |
{ |
string sit_text = "あの世へ" ; // ②目的地などパイメニューの表示文字 |
llSetSitText ( sit_text ) ; |
destination -= llGetPos() ; |
rotation q = llGetRot() ; |
llSitTarget ( destination / q , ZERO_ROTATION / q ) ; |
llRotTarget ( q * <1,0,0,0> , PI ) ; |
llRotTarget ( q * <0,1,0,0> , PI ) ; |
llRotTarget ( q * <0,0,1,0> , PI ) ; |
} |
changed(integer chan) |
{ |
key av = llAvatarOnSitTarget() ; |
if( chan & CHANGED_LINK && av != NULL_KEY ) { |
llUnSit (av) ; |
} |
} |
moving_end() |
{ |
llResetScript() ; |
} |
at_rot_target ( integer tnum , rotation targetrot , rotation ourrot ) |
{ |
llResetScript() ; |
} |
} |
おしまいです(^_^)v
【設定項目】
設定する必要があるのは、①、②の2項目です。赤い部分を変更してください。
①テレポート先の座標
テレポート先の絶対座標をベクトル形式で記入してください。ツールバーの上に表示されている、あの数値です。
ただし、テレポートできる距離に制限がありまして、300m以内の移動にしか使えないです。
さらには、SIMをまたいでテレポートすることもできないです。
まぁ、同じ建物内で他の階へテレポートするような使い方なら問題ないんでしょうけど、
例えば、1000m上空のスカイボックスにテレポートするとか、隣のSIMにテレポートするといった場合には、
これとは別のスクリプトが必要になってきます。
それはまた機会があれば^^
で、テレポート先の座標は、テレポーターに対する相対座標で設定することもできます。
相対座標っていうのは、テレポーターよりも 何m東、何m北、何m上 といった感じの座標です。
テレポーターを備え付けた家とかを販売する場合には、買った人によって設置する場所が違ってくるでしょうから
こっちの相対座標で設定しておかなきゃですよね。
これもベクトル形式で記入するんですけど、< 東西方向 , 南北方向 , 上下方向 > という感じです。
それぞれ東向き、北向き、上向きが正の値です。
で、そんな感じで①に相対座標を書き込んだあと、スクリプト中にある緑色の一行
destination -= llGetPos() ;
を消しちゃってください。それでOKです

②パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。
公式ビューアーでは日本語入力が可能です。
【スクリプトに関する小ネタ】
えと、スクリプターの方が対象になりますけど、ちょっと便利な(?) 技を思いついたので、
よろしければ試してみてください^^
って、既に知ってらっしゃったらゴメンナサイ

ご存じの通り、このテレポーターは、テレポート先を llSitTarget で指定しておいて、アバターが座ったらすぐに
llUnSit で立たせる仕組みのヤツです。
でもこれって、オブジェクトの位置や角度を変えちゃうと、はじめに設定した位置・角度と違うところに座ることに
なっちゃいますよね^^;;
だから、位置や角度が変わる度にスクリプトをリセットする必要があるんですけど・・・・・・
位置の方は、moving_endイベントを使うだけなので簡単なんですよ。
問題は、角度の方なんでして^^;;
オブジェクトの角度の変化が直接トリガーになるイベントってないみたいですねぇ

困ったことにwikiにも
There is no way to trigger on a rotation directly. To do so, you'll need to use a timer
って書いてます(>_<)
でも、まさかこれだけのために わざわざタイマーを使うわけにもいかないでしょう

う~~ん、角度に関するイベントって、at_rot_target と not_at_rot_target しかないですしね~~
なんとかならないかなぁ~~~
って感じで、いろいろと考えた結果!!!ババーーン

state_entryの中に
llRotTarget ( llGetRot() * <1,0,0,0> , PI ) ; // x軸回転
llRotTarget ( llGetRot() * <0,1,0,0> , PI ) ; // y軸回転
llRotTarget ( llGetRot() * <0,0,1,0> , PI ) ; // z軸回転
のように、RotTargetを3つ設定しておけば、
at_rot_target イベントで、あらゆる角度の変化を感知することができますです!!!にゃははは
もっといい方法が他にあるかもですけどね^^;;
ではでは~~

2008年12月18日
回転 その3 ~続・四元数による回転~
どもども
近ごろはスクリプトよりも数学の方が楽しくて仕方ない毎日です

えと、前回の予告通り、
V ' = r V r ・・・・・・(6.2)
が成り立つことの証明ですけど、今回は非常に激しい内容になっちゃいました

ただ、私は別に数学の専門家でもなんでもなくて単なるド素人ですし、
なにを調べてもちゃんと詳しく載ってないんですよね・・・・
かなり間違ったことを書いちゃってるかもしれないです・・・・・

どなたか詳しい方、ご指摘くださいね^^
以下、SLとは ま~~~~ったく 関係ない内容ですので あしからず^^;;
8.ベクトルの内積・外積
まず、話を進める前に ちょっとベクトルに関して準備が必要です。
え~~と、2つの3次元ベクトル a = ( x , y , z ) と b = ( x ' , y ' , z ' ) に対して、a と b の内積は
a ・ b = |a||b| cosθ
と定義されます。
ここで、|a|と|b| はそれぞれ a , b の大きさ、θ は a と b のなす角です。
で、これを成分で計算すると、
a ・ b = x x ' + y y ' + z z ' ・・・・・・(8.1)
となって、内積に関しては、次のような定理が成り立ちます。・・・・・・(8.2)
① a ⊥ b ならば a ・ b = 0
② a ・ b = b ・ a
③ ( k a ) ・ b = a ・ ( k b ) = k ( a ・ b ) kはスカラー
④ a ・ ( b + c ) = a ・ b + a ・ c c もベクトル
⑤ a ・a = |a|2
とまぁ、ここまでは高校内容

で、内積とは別に外積というのもありましてですね、3次元ベクトル a と b の外積は a × b と書きまして
a × b = ( y z' – y'z , z x' – z' x , x y' – x' y ) ・・・・・・(8.3)
と定義します。内積がスカラーであったのに対して、外積はベクトルになることに注意です。
この外積と a 、 b との内積をそれぞれ成分計算すると、
a ・ ( a × b ) = b ・ ( a × b ) = 0
となるので、外積 a × b は a 、b ともに垂直で、その向きは下の図のように、
右ネジをaからbに向かって回転させたときにネジが進む方向になります。(右手系の場合)
また、外積の大きさを計算すると、
|a × b| = | a || b | sin θ
となり、2つのベクトル a と b で張られる平行四辺形の面積と等しくなります。

外積には、次のような性質があります。 ・・・・・・(8.4)
① a × b = – b × a
② a × a = 0
③ ( k a ) × b = a × ( k b ) = k ( a × b ) kはスカラー
④ a × ( b + c ) = a × b + a × c c もベクトル
【LSLでは】
何に使うんだ?って話もありますけど、内積や外積は簡単に一発で計算できるように設定されているみたいです。
2つのベクトルa 、b の内積は a*b で、外積は a % b で求められます

9.再び四元数の積
なぜに突然、内積?外積?? って感じだと思いますけどね、内積や外積を使うと、
四元数のかけ算を簡単に表すことができるんですよ

(3.1) にもありましたけど、2つの四元数 q = ( s ; x , y , z ) 、q ' = ( s ' ; x ' , y ' , z ' ) の積っていうのは
q q' = ( s s' – xx' – y y' – z z' ; s x' + s' x + y z'–y' z , s y' + s' y + z x' – z' x , s z' + s' z + x y' – x' y )
となりましたよね。これの虚部(ベクトル部分)を整理すると、
q q' = ( ss' – ( x x' + y y' + z z') ; s ( x' ,y' , z' ) + s' ( x , y , z ) + ( y z' – y' z , z x' – z' x , x y' – x' y ))
になりますけど、よーーーく見ると・・・・・

実部に出てくる x x' + y y' + z z' というのは、2つのベクトル v = ( x , y , z ) 、v ' = ( x ' , y ' , z ' ) の
内積の形になっています!!!!
さらには!!!
虚部の一番後ろにある ( y z' – y' z , z x' – z' x , x y' – x' y ) というのは、外積の形です!!!!
う~~ん 美しい~~

というわけで、2つの四元数 q = ( s ; v ) 、q ' = ( s ' ; v ' ) の積は、
q q' = ( s s' – ( v ・ v ' ) ; s v ' + s ' v + ( v × v' ) ) ・・・・・・(9.1)
という、すごくキレイな形の式で表せます!!
10.さて いよいよ計算
まずは、下の図のように 回転軸となる単位ベクトルを u 、回転前のベクトルを v 、回転後のベクトルを v ' とします。

次に、このベクトル v を u に垂直なベクトル v1 と u に平行なベクトル v2 に分解します。
下図を見れば分かると思いますけど、v = v1 + v1 で、u⊥v1 、u // v2 です。
v2 は、実数kを用いて v2 = k u ・・・・・・(10.1)
と表せます。

で、v1 と u の外積 v1 × u を y として、下の図の向きにとります。
(いわゆる左手系ってヤツなんですけど、ここだけ左手系にしないと上手くいかないんですよ

なぜなんでしょ??? 理由は理解してないです


図の通り、 u 、 v1 、 y は互いに垂直なので、内積に関しては
u ・ v1 = v1 ・ y = y ・ u = 0 ・・・・・・(10.2)
が成り立って、外積に関しては、
v1×u = y
u × v1 = – y
y × u = – v1
となりますね。・・・・・・(10.3)
また、|u| = 1 なので、|y| = |v1| |u| sin90° = |v1| ・・・・・・(10.4) です。
次に、四元数を定義しておきましょう。
V = ( 0 ; v ) 、V1 = ( 0 ; v1 ) 、V2 = ( 0 ; v2 ) とすると、V = V1 + V2 ・・・・・・(10.5)
です。
また、回転四元数を

として、簡単のため、

とおくと、 r = ( c ; s u )、共役複素数は r = ( c ; – s u ) と表されます。
うし!これで準備が整ったので、いっきに r V r を計算してみましょう~~

この計算結果が v' になればOKなわけですね。
では~~、レッツ計算!
r V r = r ( V1 + V2 ) r ←(10.5)
= r V1 r + r V2 r ←展開
= ( c ; – s u ) (0 ; v1 ) ( c ; s u ) + ( c ; – s u ) (0 ; v2 ) ( c ; s u ) ←ベクトル表記に直す
項別に見ていきますね。
第1項 = ( c ; – s u ) (0 ; v1 ) ( c ; s u )
= ( c ; – s u ) (– s ( u ・ v1 ) ; c v + s ( v1 × u ) ) ←(9.1)で後ろを展開
= ( c ; – s u ) ( 0 ; c v1 + s y ) ←(10.3)
= (– s c ( u ・ v1 ) – s2 ( u ・ y ) ; c ( c v1 + s y ) – s u × ( c v1 + s y ) ) ←続いて前も展開
= ( 0 ; c2 v1 + s c y – s c ( u × v1 ) – s2 ( u × y ) ) ←(10.2) と (8.4)③④
= ( 0 ; c2 v1 + s c y + s c y – s2 v1 ) ←(10.3)
= ( 0 ; ( c2 – s2 ) v1 + 2 s c y ) ←整理
= ( 0 ; v1 cosθ + y sinθ ) ←三角関数の倍角公式
第2項 =( c ; – s u ) (0 ; v2 ) ( c ; s u )
= ( c ; – s u ) (0 ; ku ) ( c ; s u ) ←(10.1)
= ( c ; – s u ) (– k s ( u ・ u ) ; k c u + k s ( u × u ) ) ←またまた展開
= ( c ; – s u ) (– k s ; k c u ) ← u ・ u = 1 、u × u = 0
= (–k c s + k s c ( u ・ u ) ; k c2 u + k s2 u – k s c ( u × u )) ←もういっちょ展開
= ( 0 ; ( c2 + s2 ) k u ) ← u ・ u = 1 、u × u = 0
= ( 0 ; v2 ) ←sin2θ+cos2θ = 1
これらをまとめると、
r V r = ( 0 ; v1 cosθ + y sinθ + v2 )
となります^^
まず、v1 と y を含む平面を考えると、(10.3)、(10.4) より
v1 ⊥ y 、 |v1| =|y|
なので、下の図のように、v1 と y は、それぞれの始点を中心とする円において、互いに直交する半径となります。
で、
2つのベクトル v1 cosθ と y sinθ を合成したものが、v1 cosθ + y sinθなので、
これは、下の図のように、v1 を θ だけ回転させたベクトルを表します。
これを v1 ' としておきましょう。

で、いよいよ最後の図ですよ!
図を見ても分かる通り、この v1 ' と v2 を合成したものが ちょうど v ' になっていますよね^^^

というわけで、ちゃんと r V r の計算結果は v ' を表す四元数と一致しました

後半はかなり雑でしたが・・・・
えと、
次回は、もう少しだけ まともな話にしますので・・・・・・

ではでは
2008年12月12日
回転 その2 ~四元数による回転~
いやぁ~~~ 前回はSLの話どころか回転の話すら出てこなかったですね

かなり、やっちまたなぁ!! って感じですけど
今回は、いよいよ回転に関するお話ですので、ちょっとはマシかもです・・・・・・

5.回転を表す四元数
さて、いきなりですが
3次元の回転は、どのような回転であっても1本の回転軸と回転角によって決定します。
こんな感じです↓

で、この回転を四元数を使って表すんですけど、
原点を通る単位ベクトル u = ( α , β , γ ) を回転軸として、角度 θ の回転は、

という四元数が対応します。(特に名前がないので、勝手に回転四元数とでも命名しておきましょう^^)
ここで、u は単位ベクトルですので、α 2 + β 2 + γ 2 = 1 で、
回転の向きはベクトル u の方向に右ねじが進むときの回転方向です。(いわゆる右手系ってやつですね)
さて、同じ回転軸における回転角 θ の逆回転を表す四元数 r ' を考えると、

となり、r ' は r の共役四元数と一致します。 ←定義(4.0)より
さらに、絶対値の平方を計算すると、 ←定義(4.1)より

となるので、r ' および r の絶対値は 1 と等しくなり、
r ' は r の逆数とも一致します。 ←定義(4.3)より
まとめておくと、
r ' = r = r-1
ですね。すなわち、共役四元数や逆数が逆向きの回転を表すというわけですね

SLでの利用法として、オブジェクトの回転を相殺するためには、回転四元数の共役四元数をかけるか、
回転四元数で割ればいいことになります。
また、複数の回転を合成する場合は、それらの回転四元数をかければOKです。
この際、3次元の回転ですし、四元数は乗法に関して非可換なので、かける順序に気をつけなければです^^v
例えば、2つの回転四元数 r 、s の積 r s は、まず r の回転をした後に s の回転をするといった具合に
かけていく順に回転していきます。
【LSLでは】
この回転四元数は、llAxisAngle2Rot (vector axis , float angle) という関数を用いれば、
一発で計算してくれます。
axis には、回転軸をベクトル型で記入します。この関数は、単位ベクトルでなくてもちゃんと換算するみたいです。
angle には、回転角をラジアンで記入します。
逆に、回転四元数から回転軸のベクトルおよび回転角を計算するのは、それぞれ
llRot2Axis(rotation rot) , llRot2Angle (rotation rot) を使えばOKです。
6.ベクトルを回転させる
さて、いよいよ四元数を使ってベクトルを回転させましょう

と、その前に・・・
3次元のベクトルと四元数を直接は計算できないので、ベクトルを四元数にいったん変形しておく必要があります。
と言っても、そんなに難しい話ではなくて、ベクトルの各成分を虚部にそのまま対応させた四元数を考える
だけなんですけどね。(虚部のことをベクトル部とも言ったりします)
実部はどんな数でも構わないはずですけど、計算が楽なので0にしちゃいましょう。
具体的には、ベクトル v = ( x , y , z ) に対応する四元数は、 V = ( 0 ; x , y , z ) となり、これを
V= ( 0 ; v )
と表したりもします。
さて、どんどん話が進んでいきますけど、3次元のベクトルを四元数を用いて回転させてみましょう!!
下の図のように、ベクトル v を単位ベクトル u を回転軸として θ だけ回転させて、ベクトル v ' になったとします。

2つのベクトル v と v ' は、V = ( 0 ; v ) 、 V ' = ( 0 ; v ' ) のように四元数に直してですね、
回転軸が u で回転角が θ なので、先ほどの回転四元数 r とその共役四元数 r を使って、
次のような関係式が成り立ちます。
V ' = r V r ・・・・・・(6.2) おっと、文字が大きすぎたかな

とまぁ、このような感じで、元のベクトルを表す四元数に 回転四元数とその共役四元数を前後から挟み込むようにして
かけ算すると、回転後のベクトルを表す四元数になるわけです。
なぜこうなるのかという話は非常にヤヤコシイので次回にでも

【LSLでは】
つい最近まで知らなかったんですけど、ベクトルに回転四元数を直接右からかけると、自動的に
上記のような四元数で挟み込むかけ算をして、その結果をベクトルで返してくれるみたいです。
例えば、回転前のベクトル v 、回転四元数 r に対して
v * r
とするだけで、回転後のベクトルを一気に計算してくれるんですよ。
同様にわり算も定義されていて、
v / r
とすると、逆向きに回転させた後のベクトルを返すみたいです。
そんなこととは知らずに、今までずっと 上のような面倒くさい成分計算をしていました・・・・・

7.回転の応用
上の話では、回転軸として原点を通るベクトルを考えましたけど、
一般には、原点を通らない軸に対しても回転は計算することができます。
といっても、そんなに難しい話ではなくて、
①回転軸が原点を通るように平行移動
↓
②(6.2)の挟み込みのかけ算
↓
③回転軸が元に戻るように平行移動
といった感じで、基本的には(6.2)の原理を使います。
ただ、SLでは回転軸は原点を通るものに限定されますので、こういう技は使えないんですけどね・・・・^^;;
(回転ドアを作るときには、パスカットして回転軸が端っこに来るように しなきゃですよね。)
とまぁ、今回はこのへんで^^
2008年12月06日
回転 その1 ~四元数とは~
突然ですけど、
スクリプトを使って回転を調節するのって ちょっと難しいですよね

回転に関する関数がたくさんあるし、3次元での回転なのでイメージしにくいし・・・・
さらに何がヤヤコシイって、回転を表す変数rotationの型が四元数(クオータニオン)で表されてますからねぇ~

この四元数っていうのがクセモノなんですよ^^;;;
名前はときどき聞くけど、いったい何者????? って感じですよね。
ソラマメ内で検索しても、四元数について詳しく書いた記事がないみたいですし。
で、
じゃぁ、ちょっと私が頑張って書いてみようかなと!!と思い立ちまして

張り切って書いてみましたが・・・・・・・
う~~~ん、ちょっと失敗かな^^;;
はっきり言って、激辛


1.まずは二元数
まずは、高校数学の復習から始めますね。
複素数の話です。えと、数学Bだったかな?理系だけじゃなくて文系の人も習ってるはずですよ。
(実は、最近では教科書が変わっちゃって習わない内容らしいんですが・・・・年齢バレちゃう><。)
まぁ この話は、あんまし関係ないので軽く流しますね

まず、複素数というのは、虚数単位 i と2つの実数 x , y を用いて
z = x + i y
の形で表される数ですけど、ここでは四元数と区別するために、あえて二元数と呼ぶことにしますね。
あ、上でいう i というのは i2 = –1 を満たす虚数です。
ここで、r2 = x2 + y2 となる正の数 r を用いると、x = r cosθ , y = r sinθ となる θ が
存在するので、先ほどの二元数 z は、
z = r (cosθ + i sinθ )
という形で表されます。
これは、「原点を中心として反時計回りに θ だけ回転させたのち、原点を中心として r 倍に拡大する」という
変換を表します。
う~~ん、かなりテキトーな解説ですけど 四元数とはあまり関係ないので、とりあえずは
「平面上の回転移動は、二元数を用いることによって表すことができる」
ということだけ理解してもらえればいいかなと^^
2.四元数とは
平面内(2次元)の回転を表すのに「二元数」を使ったんだから、空間内(3次元)では「三元数」を使えば良さそう
なんですけど、三元数だとなかなか上手くいかなかったみたいですね。
で、ハミルトンという偉い先生が考え出したのが四元数です。
(高校数学で「行列」の単元に登場する「ハミルトン・ケーリーの定理」でおなじみのハミルトン先生です^^)
さて、ここからは丁寧に いきますよ~~

まず、
i2 = j2 = k2 = i j k = –1 ・・・・・・(2.1)
を満たす3つの虚数単位 i , j , k を定義します。
そんな数なんて存在しないだろ!! 3つもあるの??? とか文句言わないでくださいね^^;;
もちろん2乗して負になる数なんて実際には存在しない(だから虚数と言うんですよね)ですし、
これは、定義なのでそのまま従ってください。まぁ 単なる記号だと思ってもらえればいいかと。
で、これらの i , j , k は、以下の関係も満たします。
i j = k j k = i k i = j j i = –k k j = –i i k = –j ・・・・・・(2.2)
簡単に証明しておきますと、たとえば、 i j k = –1 の両辺に右から k をかけると、i j k2 = –k となりますけど、
k2 = –1 なので、 i j = k が得られます。他も同じような感じです。
で、これらの虚数単位 i , j , k と4つの実数 s , x , y , z を用いて、例えば 2 + 0.3 i – 4 j + 1.4 k みたいな感じで
q = s + i x + j y + k z ・・・・・・(2.3)
の形で表される数が四元数と呼ばれる数でして、s を q の実部、 x , y , z を q の虚部といいます。
通常は、虚数単位等を省略して q = ( s ; x , y , z ) のように成分表示するんですけど、
SLのスクリプト(LSL)では、 q = ( x , y , z , s ) のように実部を一番後ろに書くみたいです。
LSLの表記方法はなんとなく気持ち悪いので、以下は普通の表記方法でいきますね。
んまぁ、
「3次元の回転を表す四元数というのは、q = s + i x + j y + k z という形の数」
ということだけ理解してもらえればいいかなと^^
3.四元数の計算
以下、2つの四元数 q , q' を q = ( s ; x , y , z ) , q' = ( s' ; x' , y' , z' ) とします。
まず、四元数は、加減および実数倍に関しては、下のように普通に計算することができます。
回転には関係ないんですけどね^^;;
q + q' = (s + s' ; x + x' , y + y' , z + z' )
q – q' = (s – s' ; x – x' , y – y' , z – z' )
a q = ( as ; ax , ay , az ) ( a は実数)
問題は、乗除なんですけど、上の(2.2)にもあったように、 i , j , k の間の乗法が交換可能じゃないんですよ。
だから、なんとなく四元数の乗法に関しても交換可能ではないと予想できますよね。
まぁ 普通にそのまま計算してみましょう。
まず、
q q'= ( s + i x + j y + k z ) ( s' + i x' + j y' + k z' )
= s s' + i s x' + i s y' + k s z' + ←根性でひたすら展開!!
i s' x + i2x x' + i j x y' + i k z x' +
i s' y + j i x' y + j2y y' + j k y z' +
k s' z + k i z x' + k j y' z + k2z z'
= ( s s' –x x' –y y' –z z' ) + ( s x' + s' x + y z' –y' z ) i + ←(2.1)と(2.2)より
( s y' + s' y + z x' –z' x ) j + ( s z' + s' z + x y' –x' y ) k
見にくいので、成分表示すると
q q' = ( ss'–xx'–yy'–zz' ; sx'+s'x+yz'–y'z , sy'+s'y+zx'–z'x , sz'+s'z+xy'–x'y ) ・・・・・・(3.1)
のようになります。で、同様に計算すると、
q' q = ( ss'–xx'–yy'–zz' ; sx'+s'x–yz+y'z' , sy'+s'y–zx'+z'x , sz'+s'z–xy'+x'y )・・・・・・(3.2)
実部は同じなんですけどね、よく見比べると虚部の符号がビミョーに違いますよね。
というわけで、一般には q q' ≠ q' q となって、乗法に関しては交換法則が成り立ちません。
まぁ、簡単に言うと
「四元数のかけ算は、かける順番に注意しなければダメですよ!」
ということです。
4.共役四元数
ある四元数 q に対して、その虚部の符号をすべて逆にした数を q の共役四元数といって、 q と表します。
すなわち、
q = ( s ; x , y , z ) に対して、
q = ( s ; –x , –y , –z ) です。 ・・・・・・(4.0)
で、(3.1) や (3.2) のような感じで、q と q の積を考えると・・・・・
あ~ら不思議 虚部が全部0になって消えちゃって実数になるんですよ^^
しかも、どっちを先に書けても同じ結果になるんです!こんな感じですね↓
q q = q q = s2 + x2 + y2 + z2 ・・・・・・(4.1)
で、この値の平方根の正数を q の絶対値といって、|q|と表します。すなわち

ですね。で、q q = |q|2の両辺を |q|2で割ると

となるので、 q の逆数 q –1 は、

と表すことができ、四元数に関して除法も定義することできます。
まとめておくと、
「四元数のわり算は、共役四元数を使って表すことができる」
って感じですかね^^
とまぁ、四元数の性質について書いてきましたけど、なかなか実際の回転の話まで
たどり着きそうにないですね・・・

まだまだ話が長くなりそうなので、とりあえず、この記事はここで ひと区切りにしますね。
今回はSLに関係する話が何一つ出てきませんでしたけど、続きは また今度です~~~(^o^)
ではでは~~

2008年11月28日
椅子用スクリプト
だんだん寒くなってきましたよね

コピペ用スクリプトの第4弾です。
今回は、「椅子に座る位置を調整するスクリプト」です

「おいおい!そんなの誰でも持ってるぞ!!!」
「どんどん簡単なのになっていくじゃないか!」
いあいあいあ・・・・・・ まぁそうなんですけどね

椅子に座る位置の設定って、やったことのある方ならご存じかと思いますけど、
あれって なにげに面倒じゃないですか??なんか変な向きで座ったりしますよね^^;;
製作の段階でオブジェクトを回転させていなければ、比較的に楽なんですけど、
途中で回転させた場合ってちょっと難しいと思います

そこで!!!
オブジェクトの回転を無視しちゃうようにしてみました

どんなオブジェクトでも、回転させていない状態と同じように設定できるようになってます。

【使い方】
(手順1) 椅子を作る。
(手順2) コンテンツの中に下記のスクリプトを入れる。数値等の設定はお好みに書き換えてください。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
注意・・・座ったままの状態だと、設定の変更が反映されません。座る位置・角度の設定を変更する度に
一度立ち上がってから座り直してください。
以下、コピペしてお使いください
vector sit_position = <0.5 , 0.0 , 0.5> ; // ①座る位置 |
vector sit_rotation = <0.0 , 0.0 , 0.0> ; // ②座る角度 |
default |
{ |
state_entry() |
{ |
string sit_text = "座る?" ; // ③パイメニューの表示文字 |
llSetSitText(sit_text) ; |
rotation q = llGetRot() ; |
rotation qc = ZERO_ROTATION / q ; |
rotation p = q *< sit_position.x , sit_position.y , sit_position.z , 0 > * qc ; |
llSitTarget ( < p.x , p.y , p.z > , llEuler2Rot ( sit_rotation*PI/180) * qc ) ; |
} |
} |
【設定項目】
設定する必要があるのは、①~③の3項目です。赤い部分を変更してください。
①座る位置
以前に書いた記事と同じ説明になりますけど、スクリプトが入っているプリムの中心に対する、
座る位置の相対座標を<x座標 , y座標 , z座標>のようにベクトル表記します。各数値の単位はメートルで、
座標軸の向きは、下図のとおり
x軸正方向・・・東 x軸負方向・・・西
y軸正方向・・・北 y軸負方向・・・南
z軸正方向・・・上 z軸負方向・・・下 です。
って書くと、数学っぽい話になって難しそうですけど、例えば、<2.0 , -1.8 , 3.03>って書くと、オブジェクトの
中心から、東へ2.0m、南へ1.8m、上へ3.03mだけ離れた位置に座ることになります。まぁ それだけの話です^^v (※1)
(※1)・・・座標を全部0、すなわち<0.0 , 0.0 , 0.0>にしてしまうと、スクリプトが作動しなくなるので、
その他の値に設定してください。

②座る角度
スクリプトの入ったプリムに対して、どれだけの角度を回転した状態で座るかを設定します。
x軸、y軸、z軸それぞれを回転軸としたときの回転の向きは、上図に書いた通りでして、回転させる角度を
<x軸回転角度 , y軸回転角度 , z軸回転角度>
のような形のベクトル形式で記入します。回転角の単位はラジアンじゃなくて普通の度です。
座る位置を回転させない状態、すなわちに設定すると、x軸の正方向(東向き)を向いて座ります。
例えば、< 0.0 , 0.0 , 90.0> と設定すると、z軸を回転軸として90度回転した向き(北向き)に座るようになります。(※2)
(※2)・・・一般的な椅子の場合は、椅子が東を向くように回転させてからスクリプトを入れると、ここの設定は
< 0.0 , 0.0 , 0.0> のままでOkですよ。
③パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。
【補遺】
というわけで、第1弾の「座る→アニメ再生」のスクリプトも
llSitTarget(sit_position, llEuler2Rot(sit_rotation*PI/180)) ;
の1行を ( // ⑤パイメニューの表示文字 の2行下にあります)
rotation q = llGetRot() ;
rotation qc = ZERO_ROTATION / q ;
rotation p = q *< sit_position.x , sit_position.y , sit_position.z , 0 > * qc ;
llSitTarget ( < p.x , p.y , p.z > , llEuler2Rot ( sit_rotation*PI/180) * qc ) ;
のように書き換えると、座る位置・角度の設定が楽になりますよ

続きを読む
2008年11月12日
フローティングテキスト用スクリプト
あららら^^;; またまた 一ヶ月以上もブログを放置してしまいましたね

前回・前々回のブログにコピペ用のスクリプトを載せてみたところ、思いの外 好評みたいでして、
いろいろな方から「あのスクリプトを使って、こんなのを作ったよ~」って言っていただきました

どうもありがとうございます(^o^)
で、
調子に乗って、第3弾いっときます!!!
今回は、「フローティングテキスト用のスクリプト」です ^^v
「え? 何をいまさら・・・・

「そんなの持ってるぞ!!

う~~ん 確かにそうなんですけどね^^;;
【使用例】
使用例といっても・・・・・・
見たことない人はいないですよね^^;;

【使用方法】
(手順1) 目的のオブジェクトを作る。
(手順2) コンテンツの中に下記のスクリプトを入れる。数値等の設定はお好みに書き換えてください。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→文字・数値等の設定→保存→Save completeと表示されればOK
以下、コピペしてお使いください
default |
{ |
state_entry ( ) |
{ |
string text = "ここに文字を記入" ; // ① 表示文字 |
vector color = <1.0,1.0,1.0> ; // ② 色 |
float alpha = 1.0 ; // ③ 透明度 |
llSetText ( text , color , alpha ) ; |
llRemoveInventory ( llGetScriptName ( ) ) ; |
} |
} |
【設定項目】
設定する必要があるのは、①~③の3項目です。必要に応じて赤い部分を変更してください。
① 表示文字
" " の間に表示させたい文字を記入します。
最近の公式ビューアーでは、直接スクリプトに日本語を書き込んでも読み込むことができます(※1)
字数制限がありまして、半角英数字で255文字までOKです。日本語だと63文字までかな?と思ってたんですけど、
実験した結果、84文字まで表示されました。さて、なぜでしょうね????
途中で改行するときは、 \n と半角で書いてください。
\ は、右上の方にある ¥ のキーです。
" を表示させたいときは、 \" とすればOKです。
この部分を空欄にすると、何も表示されないので、不要なフローティングテキストを消したい場合は、
string text = "" ; // ① 表示文字
のようにしたスクリプトを入れると消せますよ。
(※1)・・・OnRezやニコラスなどの非公式のビューアーの場合は、ひょっとしたらエンコードする必要が
あるかもしれません。ちなみに、私がいつもエンコードに使っているサイトは ここ です。
② 色
文字の表示色をベクトル形式で書き込みます。 ベクトルの各成分は0.0~1.0の数値です。
よく使う色を挙げておきますと
黒 | <0.0,0.0,0.0> | 白 | <1.0,1.0,1.0> | |||||||
赤 | <1.0,0.0,0.0> | 青 | <0.0,0.0,1.0> | 緑 | <0.0,1.0,0.0> | |||||
水色 | <0.0,1.0,1.0> | ピンク | <1.0,0.0,1.0> | 黄色 | <1.0,1.0,0.0> |
こんな感じですかね

あっ、ベクトルの各成分の数値は、上の例みたいに0.0と1.0ピッタリじゃなきゃダメ!ということではなくて、
0.0~1.0の間の数値を書き込むと、もっと細かい色の設定ができます。
ただ、どんな数値にしたら どんな色になるのかが分かりにくいですよね^^;;
で、
オススメなのが以下のテクニック!(そんなに大したモノでもないんですけどね・・・・・)
オブジェクトの編集をするとき、テクスチャー・タブのところにカラーピッカーっていうのがありますよね。
右クリック→編集→テクスチャー→色 で開くアレです。
ん?なんだ突然???? って感じですけど、
実は、スクリプトに書き込む色のベクトルの数値って、
カラーピッカーの左上にある赤・緑・青の数値を それぞれ255で割った数値なんですよ。(※2)

というわけで、カラーピッカーで作った色の数値を<赤,緑,青>と書いて、
その後ろに /255と付け加えておけばOKです^^v
例えば、上の色ですと赤26、緑101、青43ですので、
vector color = <26,101,43>/255 ; // ② 色
のようにすると、ちゃんと同じ色が再現されるはずです

まぁ、フローティングテキストごときに(笑)、そこまで色にこだわる必要もないでしょうけど、
スクリプトを使ってオブジェクトの色を変えたりする場合とかは、カラーピッカーで色を確認しながら
スクリプトに数値を設定するとビミョーな色合いまで出せますよ

(※2)・・・なんで255なんてハンパな数なの???って思ってたんですけど、数値が0からスタートなので
0~255でちょうど256個、これはちょうど2の8乗個ですよね。
2の累乗って何となくコンピューターっぽいので、たぶんそういうことなのかなぁと勝手に解釈しています。
間違ってたら、どなたかご指摘ください^^
③ 透明度
文字の透明度の設定です。0.0~1.0の数値を書き込んでください。
1.0にすると普通に表示されて、0.0にすると完全に見えなくなります。
その間の数値にすると まぁ適度に透明になりますので、調節してみてください。
【補遺】
フローティングテキストって、もちろんスクリプトを使って表示するんですけども、一度表示されたら
もうそのスクリプトって用無しなんですよね。というわけで、不要なスクリプトがそのまま残っているのも
環境に優しくないかなぁ と思いまして、表示した後のスクリプトは自動的に削除されるようにしています。
ただ、しょっちゅう表示内容を変更する必要がある場合は、いちいちスクリプトが消えちゃうと面倒でしょうから、
上記スクリプトの最後にある
llRemoveInventory ( llGetScriptName ( ) ) ;
の1行を消しちゃってください。スクリプトが消えずにそのまま残ります。
2008年09月24日
アニメ再生スクリプト2 (装着→アニメ)
えと、前回書いたコピペ用のスクリプトのブログは、思いの外 反響がよかったみたいでして
調子に乗って第2弾いっちゃいますね!!
今回は「装着したらアニメを再生する」 スクリプトです。
これまた、SL内でもあちこちで使われているスクリプトですね^^
あちこちでフリーで出回っていると思いますけど、必要な方はどうぞコピペして使ってくださいね

【使用例】
これは、前回のヤツ以上にいろんなところで使われてますよねぇ~~^^

【使用方法】
(手順1) 装着するオブジェクトを作成する。装着場所や装着する位置・角度なども先に調整しておいた方が
(手順1) 装着するオブジェクトを作成する。装着場所や装着する位置・角度なども先に調整しておいた方が
楽だと思いますよ。
(手順2) デフォルトのアニメ以外を用いる場合は、各自で用意したアニメをオブジェクトのコンテンツに入れる。
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
(手順4) オブジェクトを装着したまま(手順3)を行った場合は、一度取り外してから、もう一度装着し直してください。
//////////////////////////////以下、コピペしてお使いください/////////////////////////////////////////
string animation = "dead" ; // ①アニメの名前
default {
attach ( key id ) {
if ( id == NULL_KEY ) {
llStopAnimation( animation ) ;
string init ;
if ( llGetAgentInfo(llGetOwner()) & AGENT_ON_OBJECT ) {
init = "sit" ;
}
else {
llRequestPermissions(id , PERMISSION_TRIGGER_ANIMATION ) ;
}
}
run_time_permissions( integer permissions ) {
if ( permissions & PERMISSION_TRIGGER_ANIMATION ) {
list playing_animations = llGetAnimationList( llGetPermissionsKey() ) ;
integer num = llGetListLength( playing_animations ) ;
integer i ;
for ( i = 0 ; i < num ; i++ ) {
llStopAnimation( llList2Key( playing_animations , i ) ) ;
}
llStartAnimation( animation ) ;
}
}
}
//////////////////////////////おしまいです(^_^)v///////////////////////////////////////////////////
【設定項目】
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。詳しくは、 前回の記事を参考にしてください。
else {
init = "stand" ;
}
llStartAnimation( init ) ;
}else {
llRequestPermissions(id , PERMISSION_TRIGGER_ANIMATION ) ;
}
}
run_time_permissions( integer permissions ) {
if ( permissions & PERMISSION_TRIGGER_ANIMATION ) {
list playing_animations = llGetAnimationList( llGetPermissionsKey() ) ;
integer num = llGetListLength( playing_animations ) ;
integer i ;
for ( i = 0 ; i < num ; i++ ) {
llStopAnimation( llList2Key( playing_animations , i ) ) ;
}
llStartAnimation( animation ) ;
}
}
}
【設定項目】
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。詳しくは、 前回の記事を参考にしてください。
今回の設定項目は、この一カ所だけです。
注意・・・アニメの優先度の関係上、AOを外さないと うまくアニメが再生されない場合があります。
とまぁ、今回はこれだけです

う~~ん、こっちを第1弾にすればよかったですね^^;; 設定は簡単だし、応用範囲は広いし。
しかも、装着するのでプリム数を気にしなくてもいいし、自分の土地を持ってなくても使えるし

第3弾があるかは謎ですけど、何か質問等がございましたら、Fujiko Miklos宛にご連絡くださいm(_ _)m
ではでは~~~

2008年09月12日
アニメ再生スクリプト1 (座る→アニメ)
おかげさまで最近では、 「ふじこちゃ~~ん、こんなスクリプト持ってない???」 って感じで、
スクリプト関係で いろいろな方のお役に立てるようになってきました

で、皆さんに使っていただいているスクリプトの中でも使い勝手が良さそうなものを、
ここのブログに載せていこうかなと思いまして^^
えと、第1弾として、 「座ったらアニメを再生する」 スクリプトです。
まぁ、何をいまさら・・・・??的なモノですけどね^^;;
下のSSで代表的な使用例をいくつかあげておきましたけど、SL内でもあちこちで使われているスクリプトなので、
ネットで探したら普通に転がっているでしょうし、フリーのものがいっぱい出回っていると思いますけど・・・・
まぁ、必要な方は どぞどぞ ご自由にコピペしてお使いくださいね

【使用例】

あちこちで勝手にSS撮ってます^^;;スミマセン
いやぁ~~ 楽しかった楽しかった

スミマセン(>_<) ここからはマジメにやりますね

【使用方法】
(手順1) 椅子やポーズボールなど、目的のオブジェクトを作る。
(手順2) 必要があれば、自分で用意したアニメをオブジェクトのコンテンツの中に入れる。
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。数値等の設定はお好みに書き換えてください。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
注意・・・座ったままの状態だと、設定の変更が反映されません。座る位置・角度などの設定を変更する度に
一度立ち上がってから座り直してください。
//////////////////////////////以下、コピペしてお使いください/////////////////////////////////////////
string animation = "sleep" ; // ①アニメの名前
vector sit_position = <0.0 , 0.0 , 1.0> ; // ②座る位置
vector sit_rotation = <0.0 , 0.0 , 0.0> ; // ③座る角度
integer disappear = 1 ; // ④透明化
key sit_avatar = NULL_KEY ;
default{
state_entry(){
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
llSitTarget(sit_position, llEuler2Rot(sit_rotation*PI/180)) ;
llSetAlpha(1 , ALL_SIDES) ;
}
changed(integer change){
if (change&CHANGED_LINK){
key check_avatar = llAvatarOnSitTarget();
if (sit_avatar != NULL_KEY && check_avatar == NULL_KEY){
sit_avatar = NULL_KEY;
llStopAnimation(animation);
llStartAnimation("stand");
if(disappear == 1){
llSetAlpha(1 , ALL_SIDES);
}
}
else if(sit_avatar == NULL_KEY && check_avatar != NULL_KEY){
sit_avatar = check_avatar;
if(disappear == 1){
llSetAlpha(0 , ALL_SIDES);
}
llRequestPermissions(sit_avatar , PERMISSION_TRIGGER_ANIMATION);
}
}
}
run_time_permissions(integer permissions){
key permission_avatar=llGetPermissionsKey();
if (permission_avatar==sit_avatar && (permissions & PERMISSION_TRIGGER_ANIMATION)){
list playing_animations = llGetAnimationList(sit_avatar);
integer i;
integer length = llGetListLength(playing_animations);
for (i =0 ; i <length ; i++){
llStopAnimation(llList2Key(playing_animations, i));
}
llStartAnimation(animation);
}
}
}
//////////////////////////////おしまいです(^_^)v///////////////////////////////////////////////////
【設定項目】
設定する必要があるのは、①~⑤の5項目です。赤い部分を変更してください。
スクリプト中の青い文字は、以下の説明のために入れただけですので直接的には関係ありませんが、
このままコピペしてもらっても大丈夫です。
(コメントアウトと言うものでして、 // の後ろの文字は無視されるんですよ)
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。
実は、アニメーションには2通りありまして、
(A)リンデンが初めから用意してくれているアニメ(デフォルトのアニメ)
(B)それ以外のアニメ
とがあります。
(A)デフォルトのアニメは全部で135種類のアニメが準備されていまして、普段よく見かけるアニメも
多く含まれています。これらのアニメを使用する場合は、オブジェクトの中にアニメをわざわざ入れなくても、
スクリプトに名前さえ書いておけばそれだけでちゃんと再生されるようになっています。(※1)
(B)自作のアニメ、購入したアニメ、拾ってきたアニメ等、デフォルトのアニメ以外を用いる場合は、
オブジェクトのコンテンツの中にそのアニメを入れた上で、スクリプトに名前を書き込む必要があります。
(※1)・・・デフォルトのアニメは、 http://www.lslwiki.net/lslwiki/wakka.php?wakka=animation
のページに、一覧が載っています。ただ、名前を見ただけでは実際にどのような動きをするのか
分かりにくいと思いますので、これらを再生するポーズ・スタンドを作ってみました。
おっしゃっていただきましたら 差し上げますので、どうぞFujiko Miklos宛のIMででもご連絡ください^^
②座る位置
スクリプトが入っているプリムの中心に対する、座る位置の相対座標を<x座標 , y座標 , z座標>のように
ベクトル表記します。各数値の単位はメートルで、
座標軸の向きは、下図のとおり
x軸正方向・・・東 x軸負方向・・・西
y軸正方向・・・北 y軸負方向・・・南
z軸正方向・・・上 z軸負方向・・・下 です。(※2)
って書くと、数学っぽい話になって難しそうですけど、例えば、<2.0 , -1.8 , 3.03>って書くと、オブジェクトの
中心から、東へ2.0m、南へ1.8m、上へ3.03mだけ離れた位置に座ることになります。
まぁ それだけの話です^^v (※3)

(※2)・・・この向きは、オブジェクトを回転させていない場合の向きですので、製作時に回転させた場合は調整が
必要です。
(※3)・・・座標を全部0、すなわち<0.0 , 0.0 , 0.0>にしてしまうと、スクリプトが作動しなくなるので、
その他の値に設定してください。
③座る角度
多分ここの設定が一番ややこしいと思います。スクリプトの入ったプリムに対して、どれだけの角度を
回転した状態で座るかを設定します。x軸、y軸、z軸それぞれを回転軸としたときの回転の向きは、
下図に書いた通りでして、回転させる角度を <x軸回転角度 , y軸回転角度 , z軸回転角度>
のような形のベクトル形式で記入します。回転角の単位はラジアンじゃなくて普通の度です。
座る位置を回転させない状態、すなわち< 0.0 , 0.0 , 0.0>に設定すると、x軸の正方向を向いて座ります。
(オブジェクトを回転させていなければ東向き)
例えば、< 0.0 , 0.0 , 90.0> と設定すると、z軸を回転軸として90度回転した向きに座るようになります。
(オブジェクトを回転させていなければ北向き)
ただし、これも 製作時にオブジェクトを回転させている場合は、設定が面倒です
オブジェクトを製作する段階で まったく回転させなかったプリムがあるのでしたら、そのプリムにスクリプトを
入れると、設定が楽になりますよ^^v

④透明化
ここには、0か1の数字を書き込んでください。
1すると、座ったときだけそのオブジェクトが消えるようになります。
ポーズボールやダンスボールとかは1にした方がいいですね。
逆に、ここの数値を0にすると、座っても消えません。普通の椅子は、もちろん0に設定ですね。
⑤パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。 (※4)

英語で書くのであれば、" " の中をそのまま書きかえれればOKです。
もちろん半角英数字ですし、あんまし長いと表示されませんよ・・・^^;;
少し頑張れば、日本語表記することも可能です
ただ、日本語を直接書き込んでも、スクリプト側が読みこんでくれないので、(※5)
専用のコードに変換する必要があります(このことをエンコードというらしいです)
一見ややこしそうですけど、ネット上で簡単にエンコードしてくれるサービスがありますので、
それらを利用するとそんなに難しくないです。ちなみに私がいつも使っているサイトはここです ↓
http://secondlife.chu.jp/lsl01.html#02
例えば、「大車輪」という日本語に対応するコードは 5aSn6LuK6Lyq という文字列だそうです。
これを利用して、
string text = llBase64ToString("5aSn6LuK6Lyq") ; // ⑤パイメニューの表示文字
のよう書けば、パイメニューに「大車輪」と表示されます。
えっ??llBase64ToStringって何????
心配いりません。上記のサイトだとそれもまとめてコピペできるので大丈夫ですよ
(※4)・・・デフォルトのままにしておきたいという場合は、この行と次の行
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
この2行を消しちゃってもいいです。
(※5)・・・新しいビューアーだと、わざわざエンコードしなくても、スクリプトに直接日本語を書き込めるという
ウワサもありますけど、私のは古いバージョンのままなので、試したことないです。
実際のところ どうなんでしょうね??
意味もなく長くなってしまいましたね・・・
お手軽に使っていただこうと思ってたんですけど、
変に敷居が高くなっちゃったみたいでスミマセン(>_<)
「この意味は??」等のご質問、「間違ってるぞ!」等のご指摘、その他ご意見等ございましたら、
のような形のベクトル形式で記入します。回転角の単位はラジアンじゃなくて普通の度です。
座る位置を回転させない状態、すなわち< 0.0 , 0.0 , 0.0>に設定すると、x軸の正方向を向いて座ります。
(オブジェクトを回転させていなければ東向き)
例えば、< 0.0 , 0.0 , 90.0> と設定すると、z軸を回転軸として90度回転した向きに座るようになります。
(オブジェクトを回転させていなければ北向き)
ただし、これも 製作時にオブジェクトを回転させている場合は、設定が面倒です

オブジェクトを製作する段階で まったく回転させなかったプリムがあるのでしたら、そのプリムにスクリプトを
入れると、設定が楽になりますよ^^v

④透明化
ここには、0か1の数字を書き込んでください。
1すると、座ったときだけそのオブジェクトが消えるようになります。
ポーズボールやダンスボールとかは1にした方がいいですね。
逆に、ここの数値を0にすると、座っても消えません。普通の椅子は、もちろん0に設定ですね。
⑤パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。 (※4)

英語で書くのであれば、" " の中をそのまま書きかえれればOKです。
もちろん半角英数字ですし、あんまし長いと表示されませんよ・・・^^;;
少し頑張れば、日本語表記することも可能です

ただ、日本語を直接書き込んでも、スクリプト側が読みこんでくれないので、(※5)
専用のコードに変換する必要があります(このことをエンコードというらしいです)
一見ややこしそうですけど、ネット上で簡単にエンコードしてくれるサービスがありますので、
それらを利用するとそんなに難しくないです。ちなみに私がいつも使っているサイトはここです ↓
http://secondlife.chu.jp/lsl01.html#02
例えば、「大車輪」という日本語に対応するコードは 5aSn6LuK6Lyq という文字列だそうです。
これを利用して、
string text = llBase64ToString("5aSn6LuK6Lyq") ; // ⑤パイメニューの表示文字
のよう書けば、パイメニューに「大車輪」と表示されます。
えっ??llBase64ToStringって何????
心配いりません。上記のサイトだとそれもまとめてコピペできるので大丈夫ですよ

(※4)・・・デフォルトのままにしておきたいという場合は、この行と次の行
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
この2行を消しちゃってもいいです。
(※5)・・・新しいビューアーだと、わざわざエンコードしなくても、スクリプトに直接日本語を書き込めるという
ウワサもありますけど、私のは古いバージョンのままなので、試したことないです。
実際のところ どうなんでしょうね??
意味もなく長くなってしまいましたね・・・

変に敷居が高くなっちゃったみたいでスミマセン(>_<)
「この意味は??」等のご質問、「間違ってるぞ!」等のご指摘、その他ご意見等ございましたら、
下のコメント欄もしくはFujiko Miklos宛のIMにて お願いしますm(_ _)m
2008年09月09日
ついに 土地!!
あららら・・・・ またまた 一月ぶりの更新ですね

もうすぐSLを始めて1周年になるので、
そろそろ 私も土地を借りるか買うかしようかなぁ~ と思ってたんですよ。
で、借りる方が得なのか買う方が得なのかとか、どこの場所がいいかとかを
いろいろな人に聞いたりしてたところ・・・・・
なななんと!!!!
「今は使ってへん土地があるから ふじこ自由に使ってくれてええで」
って、Abさんが 言ってくださったんですよ

ありがたや~~ ありがたや~~ ホント神様のようです


えと、場所はですねぇ
メインランドのUoperaというSIMでして、アドレスは
http://slurl.com/secondlife/Uopera/26/178/36
ですです

32m×16m=512sqmで、プリム数は113かな
もちろんMatureです!
交通量16のクソ田舎で、周りも空き地だらけなのでいい感じですよ

で、 どうせなら有効活用をせねば! と思ってるんですけどね
さて、何を作りましょう?????
家

う~~ん、まったく興味ないですねぇ^^;;
お店
売るモノがない・・・・・
実験場所
そんなのサンドボックスで十分だし

まぁ、ボチボチ考えていくことにします

とりあえず、 箱を1つ置いて座ってみました

あ、まったく関係ない話ですけど、 髪型を変えてみました


続きを読む
2008年08月08日
またまた告知です
前回書いたスイカ割りなんですけど・・・・・
場所を入れるの忘れてましたね

↓ ここです ここです

http://slurl.com/secondlife/Sea%20Island%20II/117/220/21
えと、
「海楽」というイベントがありましてですね、

また 例によって主催者さんのブログを そのままコピペしておきますね

----------------------------------------------
海洋楽園、夏祭り2008、いよいよ本日スタートです
絶対に楽しめますから、絶対に来て下さいね。
詳細を掲載しておきますので、ぜひお誘いあわせの上来て下さいね。
8/8 Schedule
20:00 ~ 屋台、スタンプラリースタート
22:00 ~ 23:00 ライブ
出演者:Hiroshi Kumaki
特別ゲスト: Sena Pinklady
同時ラジオ中継:kenmi Lomu
http://slurl.com/secondlife/Sea%20Island%20IV/92/44/2
23:00 ~ 24:00 ビンゴ大会(賞金総額20,000L$)
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
24:00 ~ 25:00 盆踊り大会
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
25:00 ~ 26:00位まで ダンス大会
http://slurl.com/secondlife/Sea%20Island%20IV/101/108/23
8/9 Schedule
ずっと 屋台、スタンプラリー
20:00 ~ 21:00 浮き輪レース
http://slurl.com/secondlife/Sea%20Island%20III/151/144/22
21:00 ~ 22:00 だんじり巡行
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
22:00 ~ 23:00 ライブ
出演者:piatto
メンバー:Orie Matova、
Tammy Lytton、
Beyonce Qunhua
特別ゲスト:pira Noel(ドラム)
http://slurl.com/secondlife/Sea%20Island%20IV/91/40/22
23:00 ~ 24:00 神輿巡行
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
23:00 ~ 24:00 盆踊り大会
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
24:00 ~ 26:00 位まで ダンス大会
http://slurl.com/secondlife/Sea%20Island%20IV/101/108/23
8/10 Schedule
ずっと 屋台、スタンプラリー
21:00 ~ 23:00 だんじり・神輿巡行
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
23:00 ~ 24:00 ナチュさんの花火大会(フィナーレ)
http://slurl.com/secondlife/Sea%20Island%20IV/161/61/21
以上です。
2008年08月03日
実用品 製作メモ5
う~~ん、実用品なのかガラクタなのか ビミョ~~な感じなんですけどね
イベント用に スイカ割り を作ってみました

え~~っと まず、スタート地点に設置してあるボールに座ると、
スイカ割り3点セット(棒、目隠し、HUDのスイカ・レーダー)がもらえます。

↑ うわぁ!! 「せんんね」になってる

これらをフォルダごと装着すると、スタート地点で何回転かした後にスタートです


って、実際には目隠しをしている設定なので、画面はこのような感じで真っ暗なんですよ^^;;

レーダーだけを頼りにスイカに近づいて行って、うまく棒がスイカに当たるように角度も調節して
スイカを割ってくださいね

【画面の見方・操作方法】
①スイカ・レーダー
円の中心が自分の位置で、赤いポインタがスイカの位置です。
緑の矢印は、自分が向いている方向を表しています。
②アタックボタン
これを押すと、棒を振り下ろします。
③チラ見ボタン
これを押すと、一瞬だけ視界が明るくなります。
④ギブアップ・ボタン
もう全然ダメ(>_<)!っていうときに押してください。
目隠しを外して視界が完全にクリアになります

見事成功すると、スイカが割れます!!!

↑ 棒が当たってないのに割れてるじゃん!とか 細かいことを言わないでくださいね

これは、SS撮影用に準備した、最初から割れてるスイカです^^;;
もちろん空振りしたときは、勢い余って ずっこけます


キャハハ やっぱ こうでなきゃね
今回も jijiさんにアニメを作っていただいたんですけど、あいかわらずケッサクです(*^_^*)
あっ、うまくスイカが割れると、カットしたスイカがもらえますよ~~

もちろん このカット・スイカ、装着すると ちゃんと食べれるんですけど、
ここにも jijiアニメを仕込んでありますよ

これは、実際にやってからの お楽しみ~~~~

2008年07月12日
告知ですよ
仙台SIMでイベントがあります!


仙台七夕祭りの七夕飾りのコンテストです

このコンテスト、大賞(なんと賞金L$5000!!)以外にも いろいろな賞がありまして、
もちろん私が狙うのは 「お笑い賞」!!!

↓ これが RL仙台の七夕飾りですけど、こんなのを作るわけですよ


まぁ、細かいことは私が書くよりも、主催者さんのブログをそのまま載せた方がいいですね

以下がそれです ↓
なんと。賞金総額 L$30.000!!
大賞受賞者にはL$5.000
参加賞もありますー。
現在、いろんな場所にポスターの設置をお願いしているところです。よろしくです^^
七夕ってもう終わるんじゃね?と、思う方もいると思いますが、
リアル仙台七夕は新暦日付の月遅れ、8月6日〜8日までの3日間なのです。
なので、7月31日まで、作品募集していますので、
みなさんぜひ参加してくださ〜い^^
ポスタークリックで、詳しい情報が載っているノートカードをもらってください。
これからこのブログでも、どんどん詳しい情報アップしていきます。^^
「夏を彩れ!仙台七夕祭り2008 in Sendai-SIM」公式サイト
http://home.att.ne.jp/sun/onoken/s-tana/s-tana.html
ポスター設置場所 7/4日時点
Sendai SIM
http://slurl.com/secondlife/Sendai%20City/130/30/30
仙台SIM BAR 「艶~enn~」のブログ
http://enn.slmame.com/
2008年07月08日
ガラクタ品 製作メモ8
ふと思い立って オセロをつくってみました



まぁ普通に遊べるんですけどね・・・・・

全部で68プリムもあるので、気軽には置けないでしょうし、
わざわざSL内でオセロなんて 誰もやらないでしょうし・・・・・・
う~~ん はっきりいってガラクタですね

土地のプリム数が余って困っている裕福な方や、三度の飯よりもオセロが大好きだというマニアの方、興味がおありでしたらIMにてご一報を

こんなガラクタでよろしければ、喜んで差し上げますよ

2008年06月27日
ガラクタ品 製作メモ7
SL内で大きな仕事をいただいてたんですけど、それが一段落して暇をもてあましていたので、ゲームを作ってみました

『Hit & Blow』というゲームでして、簡単な数当てゲームです^^

【ルール】
1~9の数字でできた4桁の数字を当てるのが目的です。4桁の中に数字の重複はありません。
入力した4桁の数字のうち数字も場所も一致していると1ヒット、2つ一致していたら2ヒット、・・・・・
場所が違っていても、4桁の数字に含まれていれば1ブローです。
このヒットとブローの数をヒントにして、なるべく少ない回数で正解の数を当てましょう!
とまぁ、これだけのゲームなんですけどね^^
えと、 試しにやってみましょう


とりあえず、1回目は1324で
1Hit 0Blowということなので、いい感じですね

普通に、2回目は5678で^^
2Hit 1Blowということは、この時点で9が含まれる
可能性がなくなりましたね

で、
考えに考えた上で3回目は9674でいってみると・・・
2Hit 0Blowとはサイコーですね^^
この時点で百と十の位は6と7は決定ですし、
一の位も5で決定 (*^_^*)
可能性を全部調べていくと・・・・
千の位も1しかあり得ない!!!!
ということは・・・・・ 1675ですねっ!!!

うふふ^^ ズバリ正解です!!!! ヾ(@⌒▽⌒@)ノワーイ!
4回目で正解したので、L$50ゲットです

って、自分で自分に払ってるんですけどね・・・

あっそうそう、
このゲーム、そのままだと地味なので賞金がでるようにしてあります^^
その方が面白いでしょ
1回のゲーム代がL$10でして、正解までの回数に応じて賞金が出る仕組みです

1回目で正解すると なななんとっ L$1000!!!
確率的には3024分の1なので、まぁあり得ないんですけどね・・・^^;;
以下、こんな感じです
2回目・・・L$300
3回目・・・L$100
4回目・・・L$50
5回目・・・L$15
6回目・・・L$10 ←ここでプラスマイナスゼロですね
7回目・・・L$5
・
・
・
10回チャレンジに失敗するとゲームオーバーです

先ほどは、上手い具合に4回で正解にたどり着きましたけど、平均すると6回ぐらいでクリアできる感じなので、
賞金は これぐらいでいいと思うんですけどね^^
このゲーム、Mikoさんのお店に置かせてもらっていますので、暇な方はどうぞ

http://slurl.com/secondlife/Woraksan/24/186/82
続きを読む
2008年06月16日
実用品 製作メモ4
突然ですけど、
SL内で、トレジャー・ハンティングっていうのがありますよね

あちこちに隠してあるオブジェクト(お宝)を集めていって、集めた個数によって賞金なり賞品がもらえるというアレです。
略してトレハンとか言うそうですけど・・・
とあるグループ主催のイベントで、そのトレハンをするとのことでして、その装置の製作を依頼されました。
えーっと、会場はここです↓
http://slurl.com/secondlife/JPL%20YAMANASHI/73/48/24
今回のイベントのお宝はリンゴです

全部で20種類のリンゴが隠されていまして、1個につき2L$、20種類全部集めると50L$もらえる仕組みになっています。

リンゴがどこに隠されてるのか私は知らないんですけど、
たぶん会場にある看板をタッチすれば、隠し場所を書いたノートカードがもらえるはずです。
で、
リンゴを集めたら、会場にリンゴ回収BOXというものが置いてあるので、それで精算です。
精算のやり方はそんなに難しくないと思いますけど、こんな感じです↓

精算できるのは、一人一回だけです。
もちろん、同じ種類のリンゴは何個置いてもダブルカウントされませんし、精算している本人以外の人がRezしたリンゴはカウントされません。
お宝リンゴはno mod,no tranceですので、リンゴを偽造したり、集めたリンゴを他の人に横流しすることもできません。
一度に一人ずつしか精算できないので、制限時間を設けました。3分たったら自動的に終了します^^
精算途中で寝落ちされたら(そんな人いないって^^;) 、他の人が精算できないままになるので困りますもんね


あっもちろん Rezしたリンゴは精算した後にちゃんと消えますよ

ほったらかしだとリンゴで埋もれてしまいますもんね^^;;
とまぁ、こんな装置を作りました

しっか~~し!!
実験の段階では問題なく作動してたんですけど、実際に使い出してみるといきなり誤作動

わぁあ~~~

早く修理しなくちゃいけないし、でも次から次へと人がやってくるし、すぐには原因が分からないし、
アセればアセるほどパニックにおちいってくるし、でもどんどん人が来るし・・・・・・
わざわざ来てくださっているのに申し訳なくて・・・

できた~~~っ!! と思っても、動かしたらすぐにまた壊れるし・・・・・・
関係ないところまでいじっちゃってさらにドツボに・・・・・
きゃ~~たすけて~~

と、泣きながら なんとか修理できました^^;;
今から思えば、ホント初歩的なミスだったんですけどね・・・・・
制限時間の3分間を測るためのタイマーというのは、そのままだとずっと作動し続けるので、使い終わるたびにタイマーを切る必要があるんですけど、どうやらうっかり一カ所だけ この設定を忘れていたみたいでした。
あとで気づけば、なぁ~~んだ^^ って感じなんですけど、なんせそのときは頭の中がほとんど真っ白だったので・・・
皆様には、たいへんご迷惑をおかけしまして申し訳ありませんでしたm(_ _)m
今はちゃんと作動してますので、まだの方がいらっしゃいましたら是非ともこのイベントに参加してくださいね。
え~と たしか20日までやっているはずです

2008年06月13日
ガラクタ品 製作メモ6
仙台SIMにて面白いモノを発見しました!!

ばば~~~ん!

↑ このSS、勝手に拝借してます^^;
ズバリ、拡声器!!!
seseriさん作のオブジェクトにMyukaさんがスクリプトを入れたんでしょうね。
タッチしたら、音楽(誰の曲かは知らないんですけど^^;;) が流れて、アニメが再生されます

Myukaさんのお店『llGetMyuka』に置いてありますよ^^
↓ ここ
http://slurl.com/secondlife/Sendai%20City/130/30/30
で、
このアニメがまたまたカッコイイので、拡声器本体を勝手に改良しちゃいました

まぁ、世に言うところの「人のフンドシで相撲をとる」ってヤツですかね

あっもちろん、作者のseseriさんの許可は頂いてますよ^^
この拡声器に拡声器そのものの機能をつけてみました。
チャットで普通にしゃべった言葉をそのままオウム返しにシャウトします。
「本日は晴天なり!」ってチャットでしゃべると、続いて「本日は晴天なり!」とシャウトするといった感じですね。
まぁ、単にやかましいだけの超イラナイ・アイテムですけど・・・

さすがにシャウトばっかりだとやかましいだけなので、タッチしたら「切」、「小」、「並」、「大盛」の4段階に音量を調節できます^^v
切 ・・・・何にも反応しない
並 ・・・・通常のチャットと同様に20m離れたところまで届きます
小 ・・・・伝わる範囲は10mで、Whisperというヤツですね
大盛 ・・・いわゆるシャウトで、100mの範囲に聞こえます
実は、SIM全体に聞こえるllRegionSayという関数があるんですけど、0チャンネル(通常のチャットのチャンネル)では使えないみたいです。
これが使えれば、「特盛」もできたんですけどね^^;ざんねん

なんかいい使い道ないですかね~~??
例によって、箱詰めとかが面倒なので売り物じゃないですけど、
もし欲しいとおっしゃる奇特な方はご連絡くだされば差し上げますよ

2008年06月09日
実用品 製作メモ3 (小ネタ集)
あららら、また一ヶ月以上あいてしまいましたね

おかげさまで、いろいろな方から注文を頂きまして、勉強させてもらっています。
以下は、その際に学んだことの私的メモですけど、 はっきり言ってぜぇ~んぜん面白くないです!!キッパリ

①各種ベンダー
最近は、いろいろな方からの注文で、いろいろな種類のベンダーを作ることが多いですね

アニメ用ベンダー
サウンド用ベンダー
矢印でテクスチャを変えていくベンダー
雑誌配布用のベンダー
マージン中抜きベンダー などなど
ベンダーに限った話じゃないですけど、こういったシステム系オブジェクトの設定方法って、しばらくすると忘れてしまってることが多いですよね^^;
あれれ?どうやって設定するんだっけ??って、あわてて設定方法を書いたノートカードを探しても、持ち物がグチャグチャでけっきょく見つからない(>_<) こんな経験ないですか??? えっ私だけ^^;;?
というわけで、設定はとにかく簡単に!! いちいち説明書を読まなくても、「次は~~をしてください」という感じで毎回チャットで
説明が表示されるようにしました。
アニメ用とサウンド用は、商品名と販売価格をノートに記入してもらって、それを読み取る形にしたんですけど、今から思うともっと簡単な方法があったのに・・・・・ザンネン

【メモ】
「 商品名 , 販売価格 」みたいな形で商品名に価格も併記してもらえば、これをllGetInventoryNameで読み取って、
あとはList処理すると、ノートカードは不要ですよね^^
②各種チップ・ジャー
チップジャーの機能といっても
・チップをもらったときにIMで連絡
・中間マージンの設定
・表示色の設定
まぁ、こんなもんですかねえ

あと、表示内容も
・チップジャーの持ち主
・今までの総額
・今までの最高額ともらった相手の名前
・略歴
これぐらいかな^^;
あんまりひねりようがないですね

【メモ】
色の設定に関してあれこれと調べていたら、いろいろなことが分かったんですけどね、なんせたくさんありすぎて・・・・
小ネタどころではなくなるので、これはまた次回にでも^^
③噴水
Mikoさんに、噴水つくって~~~ って頼まれたんですけどね・・・
えっ??SLの噴水ってどんなのだっけ???パーティクル???
パーティクルだったら面倒だからイヤだなぁ~~

というわけで、作り方を参考にするためにあちこちの噴水を見学することにしました。
"fountain"で検索したら、そのものズバリ 『Fountain Shop』というお店がありました^^
ここです↓
http://slurl.com/secondlife/SkyBeam%20FirstLand/169/164/24
いろいろな種類が置いてあったんですけど、パーティクルだけじゃないみたいで、
水の形をプリムで作ってテクスチャを動かすパターンが主流みたいですね。

スクリプトの実験をするんだったらボックスを1つ出せば十分なので、
実は今まで、SL内でプリムを使ってオブジェクトを作ったことってあんまり無いんですよね

そういった造形作業はほとんどMikoさん任せだったし、自分で何かを作るとしてもスカルプ使っちゃうし・・・^^;;
というわけで、久しぶりのBuildです。
水の部分はトーラスから作っていったんですけど、プロフィール・カットなんて初めて使いましたよ

で、とりあえずこんなのが出来上がりました^^ ↓

次回に続く・・・・
2008年04月27日
実用品 製作メモ2
(実況中継調なので、意味もなく長いですよ^^;; お暇なときにどうぞ)
さて突然ですけど、
プロフィールのSS(スナップショット)を表示させる装置って、最近SL内でよく見かけません?
例えば、お店に入ろうとしたら自分のプロフのSSが表示されていたり、椅子に座ったら表示されたり^^
あれってどんな仕組みなんだろ?? ってずっと疑問だったんですよねぇ^^
SLで使うスクリプト(LSL)には、そんな関数はないので、たぶん外部のwebページの情報を取り込むんだろうなぁって^^:
困ったことに、私って、SLを始めるまでコンピュータのプログラミングなんてものをやったことなかったので、
LSL以外のことはまったく分からないんですよ

だから、半分あきらめていたんですけどね・・・・
先日、その装置を作って欲しいとの注文をいただきました

実は冷や汗たらたら

634CREWさんの『STARDOM』というclubなんですけど、
DJブースに座った(立った?)人のプロフSSを 後ろにあるモニターに映し出したい とのことらしいんですよ^^
さぁて、困った困った

(あっ そうそう^^; ここから先はスクリプトの話なので、興味ない方には意味不明な文章ですスミマセン)
まずは、プロフのSSに関する情報が載っているwebページを探さねば!!
で、いろいろと調べること約30分
http://world.secondlife.com/resident/各アバターのUUID
というアドレスが、各アバターのプロフが表示されるページだという情報をGet!!
↓ ちなみに これが私の情報^^

このページの情報を、LSLを使ってSL内に取り込めばいいわけですよ!!たぶんね
で、登場するのが
llHTTPRequest(string url,list parameters,string body)という関数であろうかと^^
もちろん、初めて使う関数なので、wikiやMakapuで調べること約20分・・・・
う~~ん、まったく分からんゎ(><)

string url が、さっきのhttp://world.secondlife.com/resident/~ というアドレスだってことは分かるんですよ。
問題は list parameters でして・・・・
HTTP_METHODとかHTTP_MIMETYPEとかHTTP_VERIFY_CERTって何??
さらには、それを"GET","POST","PUT","DELETE"って??
あまりにも分からない単語ばかりなので笑ってしまいました

まぁいつものことですし、ぜんぜん気にしてないんですけどね^^
いつも通り、テキトーにやっちゃうことにしましたよ

wikiにname2keyのサンプルが載っていたので、マネして [HTTP_METHOD,”GET"]でいってみましょう!
まぁHTTPのMETHODをGETするんでしょう、たぶん^^;;
string bodyもよく分からないので、とりあえずは空白にしてと・・・・
で、このllHTTPRequest関数を受け取るのが
http_response(key request_id,integer status,list metadata,string body)
というイベントだそうです。
そろそろwikiの英語を読むのも疲れてきたので、さらにテキトー度アップ!!
とりあえず、返ってきたstring bodyをllSayで読み上げてみることに・・・・・・
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Fujiko Miklos</title>
<script src="http://s3.amazonaws.com/world.secondlife.com/js/search.js" type="text/javascript" charset="utf-8"></script>
<meta name="description" content="Fujiko Miklos - å½¼æ°åéä¸" />
<!-- Generated 2008-04-27T02:48:14Z -->
</head>
<body>
<div id="wrapper">
<script type="text/javascript" charset="utf-8">
document.writeln(header);
</script>
<div id="content">
<img alt=”profile image” src="http://secondlife.com/app/image/6dc7feab-8ba4-8250-c1c9-e9b68b9f1497/1" class="parcelimg" />
<!--PERSON NAME-->
<h1 class="resident"><span class="syscat">Resident:</span>
<span>Fujiko Miklos</span>
</h1>
なんか、こんなのが表示されました^^;;
もちろん何のことだかサッパリです

あとで、物知りのAbさんやMyukaさんに聞いたところによりますと、HTMLというwebページ表示用の言語だそうです。
そういえば、このSLMaMeブログを書くときも、デザインモードにしなければ <span>とか表示されてますよね^^
しかし、そのときはそんなこととはつゆ知らず、半泣きになりながらこの暗号を解読しようとしてたんですよ^^;;
で、この意味不明な呪文と格闘すること約1分!!みじかっ

きゃぁ~~ 18行目に"profile image”という文字がありますですよ!!
さらには、次の行にUUIDらしき文字がぁ~~っ!! (上の赤いとこです)
はやる気持ちを抑えつつ ドキドキ
期待に胸膨らませつつ ワクワク
このUUIDで指定したテクスチャを表示させてみると・・・・
わ~~~~い


どうやら私の予想はあってたみたいです

大成功でーーーーす(^_^)v
ここまで分かれば、あとはカンタン!!
↓ これが完成品です


634CREWさん ごめんなさい(>_<)
ブログ用にこのSSを撮るために、勝手にお店に上がり込んじゃいました^^;;
634CREWさんの お店 『STARDOM』 は こちら ↓
http://slurl.com/secondlife/Mogu/240/128/0
ぜひ、どうぞ^^
2008年04月21日
♪ラララ ライッ
jijiさんがラララライ体操のアニメを作ってくれたので、ヘアバンドに仕込むスクリプトを書いてみました

「カレーライスが食べた~~い」 と言うと
ライ?
ライ?
♪ ライライライ!

とまぁ こんな感じで踊り出すんですよ^^ しゃべった言葉の中に含まれる「ライ」に反応するようになってます。
もちろん、ヘアバンドをつけている人はみんな反応して、シンクロでダンスを踊ります

これがなかなか評判がいいみたいでして^^
身内だけで盛り上がれたら いいなぁ~ ぐらいに思ってただけなんですけどね
らい?
らい?
♪ ライライライ!

♪ ラララライカラライカラ 行け行け GO!GO!
ウゥゥゥゥゥ…ガシーン!
ではまた らい週~~~~^^
らい?
らい?
Mikoさんのお店に置いてありますので よろしければどうぞ^^
もちろん無料ですよ~~

http://slurl.com/secondlife/Woraksan/24/186/82