ソラマメブログ

2008年02月21日

【講座】誰でもできるLSL IF 質問


LSL 講座 リンク

こなさんより質問いただきましたので、回答させていただきます^^


llTargetOmega に渡している引数




例文からみると (<1,0,0>,PI,.5) の部分。 それぞれどういう意味なのでしょうか。
それとも意味を気にすることなく「そういうものだから」と入力するものなのでしょうか?


大変いい質問です。
説明を簡略化させるために、省いた部分でした。
質問をいただけたので、解説します^^

ソースの該当の部分はこちらですね。


llTargetOmega(<1,0,0>, PI, .5);


この関数に渡している値の意味を考えて見ましょう。

llTargetOmega をクリックすると、次のような構文が出てきます。

llTargetOmega(vector axis, float spinrate, float gain)

括弧の中の名前は引数の名前ですね。

axis = <1,0,0>
spinrate = PI
gain = .5

と、設定してあります。
もう一歩踏み込んで、下の LSL Portal 英 という部分をクリックしましょう。
リンデン公式の LSL 解説がでてきます。

同じ構文と、その下に関数の解説、引数の説明が書いてあります。

Rotates the object around axis at spinrate * llVecMag(axis) in radians per second with strength gain.

  • vector axis – arbitrary axis to rotate the object around

  • float spinrate – rate of rotation in radians per second

  • float gain – needs to be non-zero



jvnは英語が苦手なので、辞書をひきながら意味をなんとなく捉えてみましょう。

vector axis
 オブジェクトを回転させるための、任意の軸

float spinrate
 回転率 [ラディアス/秒]

float gain
 0じゃない値が必要


axis



1つめは、回転の軸を示します。
<1,0,0> はこなさんのお察しのとおり x,y,z の値です。

これは、こう考えてください。

 0,0,0 の点と
 1,0,0 の点を結んだ線

軸に長さは関係ないので、長さは無視します。

そうすると、X軸(オブジェクトをつくるときに出てくる赤い線のこと)
がでてきますね?

この軸を中心にして回転するといってるようです。

この引数が一番難しいです。

<0,1,0>

とか

<0,0,1>

を軸に指定すると、回る方向がどうなるか 考えて見ましょう。
実際にやったらどう回転しましたか??

<1,1,0> とか設定すると、どういう回転になるでしょうか。

まるで数学みたいな話しですが、数学です。
でも、LSLはわからなかったら実際に試して実験することができます。
これは勉強をするためにはとてもいい点です。
数学の授業ではなかなかそうはいきませんでしたよね。
ぜひいろいろ考えて実際の動きとくらべてみてください。


spinrate



回転率 [ラディアス/秒]

とあります。
ここには、1秒当たりに回転する角度を指定しなさい、って意味ですね。
1秒に360度まわるなら、360?
そう書きたいのはヤマヤマなんですがぐっとがまんです><

ここでは ラディアス で度を示しなさい、となっています。
ラディアスというのは 180度を パイで示す角度指定方法です。
パイって3.1415.。。。。。 ってやつですね。
最近の小学生は 3 と習います。 なげかわしい。

ここで設定している PI はそういうわけで、180度という意味です。

1秒間に180度回転する速さでまわす!
ってわけですね。

1秒間に360度回転させたい場合は、こう書きます。


llTargetOmega(<1,0,0>,PI*2,.5);


* は掛け算です。
PI*2 は 180度 ×2 なので 360度ということになります。

ではでは、1秒間に90度まわしたいときは、どう指定すればよいでしょう?
割り算は / とかきます。
1/2 は 0.5 ですね。

まぁ、正確にどのくらいの速さでまわしたいってことはあまりありませんよね。
私は、値を適当にセットしてみて、気分的に早かったり遅かったりしたら調整しています。

なので、こういうことがわかるようになっておきましょう。

1秒間に360度まわすときと
1秒間に180度まわすときは、どちらが早いでしょうか?

これさえわかれば、2*PI にしたり 0.5*PI にしたり、0.45*PI にしたりして、調整できますね^^
いちいち何度っていうのはあまり考えなくても大丈夫になります。


gain



3つめの説明は馬鹿にしてますね。

強さを示すようですが、「0以外でないといけない」としか書いていません。

jvnも意味がよくわからないので、適当な値をいつもいれています。
今回いれた.5 は 0.5 の意味です。


よくある変数の名前




FGってなに?




あとinteger FGの「FG」っていう単語の意味はなんでしょうか?


これは、フラグ の意味です。
0か1か示すのに、旗をイメージしてこの名前がついています。
旗が揚がっていれば1、さがっていれば0。
なので、慣れている人がみれば、 FG=TRUE となっていなくても、
FG には 0か1しか入らないのだな、とわかることができます。


そのほか、よくある変数名



変数名は自分の好きな名前で、もちろんかまわないのですが
LSLを書くたびにルールが変わると自分のためにもわかりにくいので、
自分ルールを決めちゃいましょう。

FG 以外によくありそうな変数名を思いつくまま列挙してみます。

integer KIND
 種類

integer NUM
 数

integer IDX
 インデックス
 何番目の~ というのを示す

string MESSAGE
 チャットで話す言葉か
 チャットから受信した言葉

うーん もっとたくさんあるんですが、全部書いても頭にはいりませんね><
LSL IncSearch でざーっとみると、関数の引数名がいろいろ書いてあると思います。
こういうのを見て意味をいろいろ考えて見ましょう。
そうすると、自然とどういう名前が適当かみえてくるんじゃないでしょうか^^

ちなみに、FG で検索したらでてきませんでした。
FLAG なら出てきます。

あまり略称使うのはよくないですね。
気をつけます。


以上で質問の答えになったでしょうか?

ここのところ、まだわからないという点がありましたら 聞いてください。

また、有識者の方も そこは違うだろ というつっこみや補足がありましたら
トラバなりコメントなりぜひしてください^^

LSL 講座 リンク

タグ :LSL初級質問

この記事へのトラックバックURL

http://jvn.slmame.com/t149427
この記事へのコメント
わわ、丁寧に解説本当にありがとうございます!

関数をクリックして表示される説明文は見ていたのですが、日本語の説明文のところしか見ていなくて、llTargetOmega(vector axis, float spinrate, float gain)といった、特に(vector axis, float spinrate, float gain)のようなカッコのところはぜんぜんみてませんでした。
英語があまり得意でないので、その文字が意味の成す文章だということを無意識に認識してなかったようです。
ちゃんとそこで内容について説明してたのですね・・いやはやお恥ずかしい (///o///)ゞ

PIの謎も解けましたし、FGの謎も解けました!
NUMはNumber(数字)だろうなって思っていたので、FGにもなにか意味があるのかな?と思ってたので、わかってすっきりです。Flag、なるほど!
ギャルゲーでも「フラグ立てるって」いいますものね!(ちょっと違!?w)

超超初心者なわたしの為に丁寧な説明、本当にありがとうございました!
Posted by こな at 2008年02月21日 20:38
わかっていただけてよかったです^^

英語、飛ばして読んでしまう気持ちよくわかりますw
なんだか無意識に飛ばしてしまうんですよね~ww

ゲームでよくいう「フラグを立てる」もおっしゃるとおり同じ意味ですw
最近は漫画でも 「こいつ、死亡フラグたった」 とかって言うようですね。
コンピュータが一般化されてきたことかなぁ、とうれしくおもいますw

これからも遠慮せずにご質問くださいね^^
Posted by Jvn WriterJvn Writer at 2008年02月21日 20:48
おお
スクリュー  リンクしたら
X回転になったしまったのを、きこうとおもったらもう書いてあるじゃ

さすがJVN~~~~

でもさ  なんでリンクすると回転軸がかわるのよ  ヽ(`Д´)ノ
Posted by ティナ at 2008年02月22日 11:59