https://wiki.secondlife.com/w/api.php?action=feedcontributions&user=Naoya+Bellic&feedformat=atom
Second Life Wiki - User contributions [en]
2024-03-29T08:49:14Z
User contributions
MediaWiki 1.36.1
https://wiki.secondlife.com/w/index.php?title=LlGetAnimationOverride/ja&diff=1180681
LlGetAnimationOverride/ja
2013-08-10T13:14:57Z
<p>Naoya Bellic: 新規作成</p>
<hr />
<div>{{LSL_Function/ja<br />
|inject-1=<br />
|inject-2=<br />
{{LSL_Function/permission/ja|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_TRIGGER_ANIMATION}}<br />
|func_id=?|func_sleep=0.0|func_energy=?<br />
|func=llGetAnimationOverride|sort=GetAnimationOverride<br />
|p1_type=string|p1_name=anim_state|p1_desc=アニメーションの状態<br />
|func_footnote<br />
|return_type=string<br />
|return_text=指定したアニメーションの状態({{LSLPT|anim_state}})で使われているアニメーションの名前<br />
|spec<br />
|caveats<br />
|constants={{LSL Animation States/ja}}<br />
|examples<br />
|helpers<br />
|also_functions={{LSL DefineRow||{{LSLG/ja|llSetAnimationOverride}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llResetAnimationOverride}}|}}<br />
|also_tests<br />
|also_events<br />
|also_articles={{LSL DefineRow||{{LSLG/ja|Internal Animations|組み込みアニメーション}}|常に使用可能な組み込みアニメーションのリスト}}<br />
|notes<br />
|cat1=Animation<br />
|cat2=Animation/Override<br />
|cat3<br />
|cat4<br />
|history = リリース日 [[ Release_Notes/Second_Life_Server/13#13.04.12.273874 | 12/04/2013 ]]<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Template:LSL_Constants/KeyframedMotion/ja&diff=1180524
Template:LSL Constants/KeyframedMotion/ja
2013-08-05T13:31:54Z
<p>Naoya Bellic: 新規作成</p>
<hr />
<div>{{#if:{{{table|}}}<noinclude>1</noinclude>|<br />
{{{!}} {{Prettytable|style=margin: 0px 0px 10px 1pt;}}}}<br />
{{!}}- id='{{anchorencode:Success/Failure Flag}}' {{#if:{{{table|}}}<noinclude>1</noinclude>|{{Hl2}}}}<br />
! colspan="2" {{!}} {{LSLPT|オプション}} フラグ<br />
! colspan="2" {{!}} {{GetSet|{{{1|}}}|戻り値|追加パラメータ}}<br />
! colspan="6" {{!}} 説明<br />
{{!}}-<br />
{{!}}-<br />
{{LSL ConstTB|KFM_COMMAND|integer|0|b=[&nbsp;|e=&nbsp;]|s=rowspan="1"|s1=id="KFM_COMMAND"|s=rowspan=4|c={{GetSet|{{{1|}}}|取得|設定}}するコマンド}}<br />
{{!}} colspan="2" rowspan=4 {{!}} [ [[integer]]&nbsp;{{LSL Param|command}} ]<br />
{{!}} colspan="6" {{!}} {{#var:comment}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_CMD_PLAY|integer|0|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_CMD_STOP|integer|1|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_CMD_PAUSE|integer|2|m=3|c=?}}<br />
{{!}}-<br />
<!--{{LSL ConstTB|KFM_CMD_SET_MODE|integer|3|m=3|c=?}}--><br />
{{!}}-<br />
{{!}}-<br />
{{LSL ConstTB|KFM_MODE|integer|1|b=[&nbsp;|e=&nbsp;]|s=rowspan="1"|s1=id="KFM_MODE"|s=rowspan=5|c={{GetSet|{{{1|}}}|取得|設定}}する再生モード}}<br />
{{!}} colspan="2" rowspan=5 {{!}} [ [[integer]]&nbsp;{{LSL Param|mode}} ]<br />
{{!}} colspan="6" {{!}} {{#var:comment}}{{PBR}}初期値は {{LSL Const|KFM_FORWARD|integer|0}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_FORWARD|integer|0|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_LOOP|integer|1|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_PING_PONG|integer|2|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_REVERSE|integer|3|m=3|c=?}}<br />
{{!}}-<br />
{{!}}-<br />
{{LSL ConstTB|KFM_DATA|integer|2|b=[&nbsp;|e=&nbsp;]|s=rowspan="1"|s1=id="KFM_DATA"|s=rowspan=3|c=...を{{GetSet|{{{1|}}}|取得|設定}}する}}<br />
{{!}} colspan="2" rowspan=3 {{!}} [ [[integer]]&nbsp;{{LSL Param|fields}} ]<br />
{{!}} colspan="6" {{!}} {{#var:comment}}{{PBR}}初期値は ({{LSL Const|KFM_ROTATION|integer|0x1}} | {{LSL Const|KFM_TRANSLATION|integer|0x2}})<br />
{{!}}-<br />
{{LSL ConstTB|KFM_ROTATION|integer|0x1|m=3|c=?}}<br />
{{!}}-<br />
{{LSL ConstTB|KFM_TRANSLATION|integer|0x2|m=3|c=?}}<br />
{{!}}-<br />
{{#if:{{{table|}}}<noinclude>1</noinclude>|{{!}}} }}<br />
<noinclude><br />
{| {{Prettytable}}<br />
{{LSL_Constants/KeyframedMotion/ja}}<br />
|}<br />
{| class="sortable" {{Prettytable}}<br />
{{LSL_Constants/KeyframedMotion/ja|sortable=*}}<br />
|}<br />
{{LSL_Constants/KeyframedMotion/ja|table=*|sortable=*}}<br />
</noinclude></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlSetAnimationOverride/ja&diff=1180517
LlSetAnimationOverride/ja
2013-08-03T14:36:53Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL_Function/ja<br />
|inject-2=<br />
{{LSL_Function/permission/ja|PERMISSION_OVERRIDE_ANIMATIONS}}<br />
{{LSL_Function/inventory/ja|anim|uuid=false|type=animation}}<br />
|func_id=?|func_sleep=0.0|func_energy=?<br />
|func=llSetAnimationOverride|sort=SetAnimationOverride<br />
|p1_type=string|p1_name=anim_state|p1_desc=上書きされるアニメーションの状態<br />
|p2_type=string|p2_name=anim|p2_desc=&#32;か、[[組み込みアニメーション]]の名前|p2_hover=&#32;か、組み込みアニメーションの名前<br />
|func_footnote=Note:アニメーションの上書きはリログをすることを除いて継続されます。<br />
|func_desc=指定したアニメーション({{LSLPT|anim}})を与えられたアニメーションの状態({{LSLPT|anim_state}})のときに再生します。 <br />
|spec<br />
|caveats=*アニメーションの上書きはリログをすることを除いて、スクリプトのリセット、スクリプトの削除、装着物の取り外し、他の地域へ渡ったりテレポートしても継続します。<br />
* "Sit on Ground"状態は他に上書きを設定してもデフォルトのアニメーションが再生されます。ビューワの正しい挙動です。<br />
* 連続でループ再生するアニメーションを設定したとき、いくつかの状態の挙動についてはまだ未定義で、挙動が変わるかもしれません。それらの状態とは "PreJumping"、"Landing"、"Soft Landing" そして "Standing Up" です。<br />
*オブジェクトに座っていても PERMISSION_OVERRIDE_ANIMATIONS 権限は暗黙の承認がされません。<br />
|constants={{LSL Animation States/ja}}<br />
|examples=<lsl>// Override the Sit, Stand and Walk animations<br />
// 1. place this script and your animations in a prim<br />
// 2. edit the animation names in the script to your animation's names<br />
// 3. attach the prim to your avatar<br />
<br />
string gMySit = "chop_sit";<br />
string gMyStand = "FStand _02";<br />
string gMyWalk = "Kort gang F v4.1";<br />
<br />
default<br />
{<br />
attach(key id)<br />
{<br />
if ( id ) llRequestPermissions(id , PERMISSION_OVERRIDE_ANIMATIONS);<br />
else if ( llGetPermissions() & PERMISSION_OVERRIDE_ANIMATIONS ) llResetAnimationOverride("ALL");<br />
}<br />
run_time_permissions(integer perms)<br />
{<br />
if ( perms & PERMISSION_OVERRIDE_ANIMATIONS )<br />
{<br />
llSetAnimationOverride( "Sitting", gMySit);<br />
llSetAnimationOverride( "Standing", gMyStand);<br />
llSetAnimationOverride( "Walking", gMyWalk);<br />
}<br />
}<br />
}</lsl><br />
|helpers<br />
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAnimationOverride}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llResetAnimationOverride}}|}}<br />
|also_tests<br />
|also_events<br />
|also_articles={{LSL DefineRow||{{LSLG/ja|Internal Animations|組み込みアニメーション}}|常に使用可能な組み込みアニメーションのリスト}}<br />
|notes<br />
|cat1=Animation<br />
|cat2=Animation/Override<br />
|cat3<br />
|cat4<br />
|history = リリース日 [[ Release_Notes/Second_Life_Server/13#13.04.12.273874 | 12/04/2013 ]]<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Template:LSL_Animation_States/ja&diff=1180516
Template:LSL Animation States/ja
2013-08-03T14:36:02Z
<p>Naoya Bellic: 新規作成</p>
<hr />
<div>{{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}<br />
{{!}}+{{{title|}}}<br />
{{!}}-{{Hl2}}<br />
!値<br />
!説明<br />
!初期値<br />
{{!}}-<br />
{{#if:{{{all|<noinclude>*</noinclude>}}}|<br />
{{!}} "ALL"<br />
{{!}} 全ての上書きを{{LSLG/ja|llResetAnimationOverride|リセット}}するときに使います。<br />
{{!}}<br />
}}<br />
{{!}}-<br />
{{!}}"Crouching"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"CrouchWalking"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Falling Down"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Flying"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"FlyingSlow"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Hovering"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Hovering Down"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Hovering Up"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Jumping"<br />
{{!}}ジャンプして空中にいる間。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Landing"<br />
{{!}}ジャンプから着地するとき。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"PreJumping"<br />
{{!}}ジャンプをし始めるとき。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Running"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Sitting"<br />
{{!}}オブジェクトに座っているとき。(オブジェクトとリンクされているとき)<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Sitting on Ground"<br />
{{!}}座っているが、オブジェクトとリンクされていないとき{{Footnote|1=アベターのコンテキストメニュー "座る" は地形上、オブジェクト上、空中でさえ、どこからでもその場に座ることを許可します。 }}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Standing"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Standing Up"<br />
{{!}}長い距離を落下したあと。硬着陸を指すこともあります。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Striding"<br />
{{!}}アバターがオブジェクトの角に引っかかっているときや、他のアバターの上にいるとき。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Soft Landing"<br />
{{!}}短い距離を落下したあと。<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Taking Off"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Turning Left"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Turning Right"<br />
{{!}}<br />
{{!}}<br />
{{!}}-<br />
{{!}}"Walking"<br />
{{!}}<br />
{{!}}<br />
{{!}}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlSetAnimationOverride/ja&diff=1180515
LlSetAnimationOverride/ja
2013-08-03T13:55:39Z
<p>Naoya Bellic: 新規作成。"LSL Animation States/ja" が未作成のため、英語版を掲載。</p>
<hr />
<div>{{LSL_Function/ja<br />
|inject-2=<br />
{{LSL_Function/permission/ja|PERMISSION_OVERRIDE_ANIMATIONS}}<br />
{{LSL_Function/inventory/ja|anim|uuid=false|type=animation}}<br />
|func_id=?|func_sleep=0.0|func_energy=?<br />
|func=llSetAnimationOverride|sort=SetAnimationOverride<br />
|p1_type=string|p1_name=anim_state|p1_desc=上書きされるアニメーションの状態<br />
|p2_type=string|p2_name=anim|p2_desc=&#32;か、[[組み込みアニメーション]]の名前|p2_hover=&#32;か、組み込みアニメーションの名前<br />
|func_footnote=Note:アニメーションの上書きはリログをすることを除いて継続されます。<br />
|func_desc=指定したアニメーション({{LSLPT|anim}})を与えられたアニメーションの状態({{LSLPT|anim_state}})のときに再生します。 <br />
|spec<br />
|caveats=*アニメーションの上書きはリログをすることを除いて、スクリプトのリセット、スクリプトの削除、装着物の取り外し、他の地域へ渡ったりテレポートしても継続します。<br />
* "Sit on Ground"状態は他に上書きを設定してもデフォルトのアニメーションが再生されます。ビューワの正しい挙動です。<br />
* 連続でループ再生するアニメーションを設定したとき、いくつかの状態の挙動についてはまだ未定義で、挙動が変わるかもしれません。それらの状態とは "PreJumping"、"Landing"、"Soft Landing" そして "Standing Up" です。<br />
*オブジェクトに座っていても PERMISSION_OVERRIDE_ANIMATIONS 権限は暗黙の承認がされません。<br />
|constants={{LSL Animation States}}<br />
|examples=<lsl>// Override the Sit, Stand and Walk animations<br />
// 1. place this script and your animations in a prim<br />
// 2. edit the animation names in the script to your animation's names<br />
// 3. attach the prim to your avatar<br />
<br />
string gMySit = "chop_sit";<br />
string gMyStand = "FStand _02";<br />
string gMyWalk = "Kort gang F v4.1";<br />
<br />
default<br />
{<br />
attach(key id)<br />
{<br />
if ( id ) llRequestPermissions(id , PERMISSION_OVERRIDE_ANIMATIONS);<br />
else if ( llGetPermissions() & PERMISSION_OVERRIDE_ANIMATIONS ) llResetAnimationOverride("ALL");<br />
}<br />
run_time_permissions(integer perms)<br />
{<br />
if ( perms & PERMISSION_OVERRIDE_ANIMATIONS )<br />
{<br />
llSetAnimationOverride( "Sitting", gMySit);<br />
llSetAnimationOverride( "Standing", gMyStand);<br />
llSetAnimationOverride( "Walking", gMyWalk);<br />
}<br />
}<br />
}</lsl><br />
|helpers<br />
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAnimationOverride}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llResetAnimationOverride}}|}}<br />
|also_tests<br />
|also_events<br />
|also_articles={{LSL DefineRow||{{LSLG/ja|Internal Animations|組み込みアニメーション}}|常に使用可能な組み込みアニメーションのリスト}}<br />
|notes<br />
|cat1=Animation<br />
|cat2=Animation/Override<br />
|cat3<br />
|cat4<br />
|history = リリース日 [[ Release_Notes/Second_Life_Server/13#13.04.12.273874 | 12/04/2013 ]]<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=%E5%90%84%E7%A8%AE%E5%88%B6%E9%99%90&diff=1180058
各種制限
2013-07-18T06:41:20Z
<p>Naoya Bellic: アバターとアニメーション</p>
<hr />
<div>{{Multi-lang|Limits|/ja}}<br />
== 概要{{anchor|Summary}} ==<br />
{{RightToc}}<br />
Second Life ビューワとシミュレータは分業で、Second Life を動作させるデータを把握しています。ビューワの仕事は:<br />
<br />
* オブジェクトの位置を操作する<br />
* 速度やその他物理情報を取得し、簡単な物理計算を行い、どのオブジェクトがどこに行ったかを把握する<br />
<br />
シミュレータの仕事は:<br />
<br />
* 物理計算エンジンを動かす<br />
* 衝突を検知する<br />
* あらゆるものがどこに行ったかを把握する<br />
* なんらかの変更が行われると、コンテンツの位置を更新情報とともにビューワに送信する<br />
<br />
制限はこれらのコンポーネントが一緒に動くのに必要なものです。下のリストに '''インワールド・エクスペリエンスに影響する Second Life の数値上の制限''' の概要を多く載せています。時を経るにつれ変わる可能性のあるものもありますので、何か間違い・古い記述を発見したら、ちょっと時間を割いて更新してください。<br />
<br />
{{KBcaution|1=このページで言及されている内容は Linden Lab 公式ビューワでの制限です。[[Third_Party_Viewer_Directory|サードパーティビューワでによって異なる場合があります]]。制限の引用元や実証は Linden Lab からは提供されていません。また、不確かな憶測については [[Talk:Limits|議論ページで会話してください]]。絶対的な制限でないデータは書き加えないでください。そして、インワールド・エクスペリエンスに事実上影響がないあいまいなトリビアは書き加えないでください。}}<br />
<br />
== [[アバター]]{{anchor|Avatar}} ==<br />
<br />
* '''装備部位の最大数''' - アバター本体に 30 箇所、[[HUD]] を 8 個<br />
** アバターを右クリックして、'''取り外す''' > '''HUD''' または '''取り外す''' で一覧を見られます。<br />
** Viewer 2.4 で [[multiple attachments|同一箇所に複数のアタッチメントを装着する]] ことが正式に可能となりました。このため、全部で 38 個のオブジェクトを装着できるようになりました。また、これらは全て同じ場所に装着することができるようになっています。<br />
* '''スロット当たりの服レイヤー数の上限''' - 5 (アルファとタトゥーレイヤーを含めての値です)<br />
* '''補助装備無しで飛行できる最高高度''' - 安定して滞空できるのは高度およそ 5,064 m です。<br />
** 無制限に高高度まで上昇できる飛行用装備を簡単に入手できます。[[flight limit|飛行に関する制限]]と以下の[[#Navigation|ナビゲーション項]]も参照してください。<br />
* '''一般的な靴の大きさ''' - 殆どの婦人靴は、サイズ 0 (ゼロ) の足に合うよう作られています。紳士靴は一般にサイズ 14 です。<br />
** 自分の足のサイズは、メニューから 編集 > 容姿 と進み、形 タブ > 両脚 で確認できます。<br />
* '''アバター名の最大長''' - ファーストネームが 31 文字、ラストネームが 31 文字、(間のスペースを含めると) 全体で 63 文字です。<br />
* '''{{LSLGC/ja|Username|ユーザーネーム}}の最大長''' - 全て小文字で、'.' も含めて 63 文字です。(例; firstname.lastname)<br />
** 古いアカウントのユーザーネームは小文字のファーストネームとラストネームの組み合わせで、間はピリオド(.)で区切られています。(例; lilmix.pixelmaid)<br />
** 最近のアカウントのユーザーネームは単に名前だけです。(ピリオドはありません)(例; john1234) - '''最大長'''は 31 文字です。<br />
** 最近のアカウントのユーザーネームの{{LSLGC|Legacy Name}}は、常にラストネームがResidentになります。よって、新しいアバターのLegacy Nameは最長で40文字になります。(空白とラストネームの'Resident'を含めてです)<br />
* '''[[Display_Names/ja|表示名]]の最小長''' - 最短で 1 文字です<br />
* '''表示名の最大長''' - 31 文字です。<br />
** 表示名はユニコード文字、空白、一部の記号を含めることができます。<br />
* '''アバターの最大速度''' - 250 m/s (アタッチメントの助けだけで)<br />
* '''最大テレポート速度'''<br />
** '''Server 1.27.1''' - 15 秒間で 10 回<br />
** '''Server 1.27.0''' - 15 秒間で 3 回<br />
<br />
== [[Animation/ja|アニメーション]] ==<br />
<br />
{| class="sortable" width="100%" {{Prettytable}}<br />
|- {{Hl2}}<br />
! '''カテゴリー'''<br />
! '''制限項目'''<br />
! '''下限'''<br />
! '''上限'''<br />
! '''コメント'''<br />
! '''もっと見る'''<br />
|-<br />
||[[Animation/ja|アニメーション]]<br />
||アニメーションの長さ<br />
| {{no|n/a}}<br />
| {{yes|30.0秒}}<br />
| {{yes|長さとサイズ、どちらか先に越えたほうに制限されます}}<br />
| {{no|n/a}}<br />
|-<br />
||[[Animation/ja|アニメーション]]<br />
||アニメーションのサイズ<br />
| {{no|n/a}}<br />
| {{yes|120k bytes}}<br />
| {{yes|長さとサイズ、どちらか先に越えたほうに制限されます}}<br />
| {{no|n/a}}<br />
|-<br />
||[[Animation/ja|アニメーション]]<br />
||アニメーションの優先度<br />
| {{yes|0}}<br />
| {{yes|4, カスタムツールを使うと 5}}<br />
| {{no|n/a}}<br />
| {{yes|[[Animation_Priority]]}}<br />
|-<br />
||[[Animation/ja|アニメーション]]<br />
||アニメーション当たりの関節数<br />
| {{no|n/a}}<br />
| {{yes|32}}<br />
| {{no|n/a}}<br />
| {{no|n/a}}<br />
|}<br />
<br />
== 制作{{anchor|Building}} ==<br />
<br />
* '''[[プリム]]の各辺の最長 ([[ヒュージ プリム]]は除く)''' - 10x10x10m<br />
* '''プリムの各辺の最短''' - 0.01x0.01x0.01m<br />
* '''ひとまとめにリンク可能なプリムの最大数''' - 256<br />
** SL Server 1.26 以前は 255 でした。<br />
* '''リンク可能な最大距離''' - [[Linkability Rules/ja|リンクの可否に関する規則]] を参照してください。<br />
* '''物理オブジェクトで使用可能なプリムの最大数''' - 32<br />
** これ以上リンクしようとすると、"Can't enable physics for objects with more than 32 primitives (物理オブジェクトを 32 個以上のプリムで構成することはできません)" あるいは "Object has too many primitives -- its dynamics have been disabled. (オブジェクトのプリム数が多すぎます。物理属性は無効にされました)" と表示されます。<br />
** この制限には、物理属性を持った乗り物の運転手と乗客も含まれます。すなわち、4 人乗りの車を作るならば、車自体に使えるのは 28 プリムまでです。<br />
** 1.38 以前のサーバでは、座っているアバターは 1 プリムとカウントされていました。1.40.2 からは本当のプリムにだけ制限が適用されます。<br />
* '''rez が可能な最高高度''' - 4,096 m<br />
** バージョン 1.20 以前は 768 m が最高でした。<br />
* '''プリム名の最大長''' - UTF8 [[string/ja|文字列で]] 63 バイト<br />
** 注意: アバター名の全体の文字数制限と全く同じです。<br />
* '''プリムの説明の最大長''' - UTF8 [[string/ja|文字列]] で 127 バイト<br />
** Note: <br />
* '''一時的なプリムの生存時間''' - 約 60 秒<br />
* '''一時的なプリムのの最大数''' - 通常のプリムの最大数 - 現在の通常プリムの数 + (0.5 * 通常のプリムの最大数 + 400 と 1000 のうちの小さいほう)<br />
** 出典 [http://forums-archive.secondlife.com/8/cd/305651/1.html Andrew Linden's February 2009 discussion])<br />
* '''([[llSetText/ja|llSetText]] や [[PRIM_TEXT/ja|PRIM_TEXT]] を通して設定できる) フローティングテキストの最大長''' - UTF8 [[string/ja|文字列で]] 254 バイト<br />
<br />
== チャット (テキスト) ==<br />
<br />
* '''ささやきが届く距離''' - 10 m<br />
* '''通常チャットが届く距離''' - 20 m<br />
* '''叫びが届く距離''' - 100 m<br />
** おおまかな目安: あなたがデフォルトのズーム設定 (ビュー メニュ > 表示をリセット) をしていて、近くの別のアバター名を見られるならば、その人はあなたのチャット内容を見ることができます。アバター名が全く見られないほどに離れているならば、叫ばない限り、その人はあなたの話を聞けません。<br />
** ジェスチャーの「チャット」ステップで叫んだりささやいたりできません。<br />
** ジェスチャーの「置換」の内容は、Viewer 2 ではささやいたり叫んだりできます。「置換」のテキストボックスのいちばん最初に、それぞれ <code>/whisper</code> と <code>/shout</code> を書き、それに続けてジェスチャーを発生させる文字列を書きます。(ただし、両方書いてしまったり、途中に <code>/whisper</code> や <code>/shout</code> を書いてしまったりすると、"/whisper" や "/shout" がそのまま表示されてしまいます。)Viewer 1 では <code>/whisper</code> や <code>/shout</code> は何の効果もなく、常にそのまま表示されます。<br />
* '''チャット メッセージの最大長''' - シングルバイトで 1023 バイト<br />
** これは IM ←→ eメール間のやり取りにも当てはまります。<br />
*** 受信者がオフラインであると、IMを電子メール([EMAIL])へ送信機能が設定されていると、(編集 > 環境設定 (もしくは Ctrl-P) 、コミュニケーションタブに行き、「IMを電子メール([EMAIL])へ送信」チェックボックスにチェックを入れる) 、オフラインメッセージをアカウントに関連づけられたメールボックスに直接送信します。オフラインメッセージが電子メールで受信されると、メッセージ対して返信を電子メールで行うことができます。正しく電子メールで返信を送ることができるのは、シングルバイトで 1023 バイトまでに制限されています。<br />
* '''Capped''' - オフライン中に受信不能にならないで受信できるメッセージの最大数 ([[インスタントメッセージ|IM]]、アイテムの送付、グループ通知、グループの招待も含まる) は 25 です。<br />
** 送信者は相手が最大数に達して受信不能になっているかどうかを知ることはできません。<br />
* オフライン中にメールとして転送されてきた IM に返信する場合は、受信から 5 日の間に行なわなければなりません。<sup>[<span class="plainlinks">[https://blogs.secondlife.com/community/features/blog/2007/02/06/im-to-e-mail-return-addresses-changing blog]</span>]</sup><br />
* '''IM''' は 31 日間保存されたのち、削除されます。例えば誰かがあなたに IM を送り、あなたのログインがその 33 日後だった場合、あなたはそれを目にすることは出来ません。<br />
** この通りであることを Torley は Kelly に確認しました。<br />
<br />
== ジェスチャー{{anchor|Gestures}} ==<br />
<br />
* '''ショートカットキー割り当て''' - 33 の一意のコンビネーション、F2 ~ F12 が Shift または Ctrl と組み合わせて使えるため。<br />
* '''チャットステップの最大長''' - シングルバイトで 127 文字<br />
* '''最大待機時間''' - 3600 秒 (1 時間)<br />
<br />
== [[Groups|グループ]]{{anchor|Group}} ==<br />
<br />
* '''一人が所属できるグループの最大数''' - 42<br />
** グループにおける役割は、一種のサブ グループです。多くの場合、新しいグループを作るかわりに、役割を活用できます。<br />
* '''グループ人数の最少数''' - 2<br />
** 48 時間に亘ってメンバーが一人以下のグループは解散 (削除) されます。ただしグループがまだ土地を所有している場合は例外です。<br />
* '''グループ内で設定できる役割の最大数''' - 10 (削除不能の "Owners" と "Everyone" を含みます。)<br />
* '''グループ名の最大長''' - シングルバイトで 35 文字<br />
* '''グループタイトルの最大長''' - シングルバイトで 20 文字<br />
* '''グループ通知の最大長''' - シングルバイトで 512 文字<br />
<br />
== [[Inventory|インベントリ]]{{anchor|Inventory}} ==<br />
<br />
* '''フォルダに入れて送付可能なアイテムの最大数''' - 42<br />
** フォルダ自身もアイテムとして数えます。これはパケットサイズの制限に起因するものであり、『銀河ヒッチハイクガイド』の "生命と宇宙と万物に関する究極の答え" を気取っているわけではありません。<br />
* '''ノートカードの一行の最大長''' - 制限はありませんが、スクリプトで読み取れるのは先頭から 255 バイトまでです。<br />
* '''ノートカードの最大サイズ''' - 65,536 バイト <br />
* '''ライブラリのアイテム数''' - 2010-06-17 現在 1,248 個<br />
** [[How_does_the_Library_work|ライブラリを隠して]]全体数の差分を検証しました。<br />
<br />
== [[土地]]{{anchor|Land}} ==<br />
<br />
* '''区画の最大面積''' - 65,536 m²<br />
** リージョン全体、あるいはワールドマップ上の一区画に相当<br />
* '''区画の最小面積''' - 16 m²<br />
* '''区画の名前の最大長''' - シングルバイトで 63 文字<br />
* '''区画の説明の最大長''' - 255 文字<br />
* '''リージョン名の長さ''' - Linden コンシェルジュポリシーでは、3 文字以上、25 文字以下。(空白文字も含む) [[Linden Lab公認:プライベート地域(リージョン)に名前をつける際のガイドライン]] を参照してください。<br />
** ごく稀に、[http://slurl.com/secondlife/Q/129/128/24/ Q] のような例外があります。<br />
* '''"NO ENTRY" の赤線の高度の最大''' - 地面から 768 m<br />
** これはあなたが名指しで BAN されている場合です。単に区画がパブリックアクセスでないか、特定の住人/グループにのみ許可されている場合は、50 m になります。<br />
* '''[[土地#Region|リージョン]]に置けるプリムの最大数:'''<br />
** フルリージョン - 15,000<br />
** [[土地#Homestead|ホームステッド]] - 3,750<br />
** [[土地#Openspace|オープンスペース]] - 750<br />
* '''自動返却の最長期間''' - 0 (ゼロ、返却なしを意味する) を除けば、999,999 分<br />
* '''土地の編集:'''<br />
** ほぼ全てのメインランドの地面は ± 4 m まで上下できます。<br />
*** メインランドで土地の編集ができない場所があります。具体的には Bay City Regions, Blumfield, Boardman, Brown, De Haro, Nautilus City Regions, Nova Albion Regions, Shermerville Regions, West Haven などは土地の編集が不可です。<br />
** Da Boom のようないくつかの非常に古いリージョンの地面は ± 40 m まで上下できます。<br />
** プライベートアイランドの地面は土地所有者か[[Estate Manager|エステート マネージャ]]によって ± 100 m まで上下できます。<br />
* '''水面の最高高度''' - インワールドの設定項目を使って 100 m (メインランドの制限), RAW ファイルのアップロードで 255 m<br />
** リージョンの水面高は普通 20 m です。隣接したリージョン同士は同じ水面高を保つべきです。さもないと、見た目がちぐはぐになってしまいます。<br />
* '''最大標高''' - インワールドの設定項目を使って 255 m (メインランドの制限), RAW ファイルのアップロードで 510 m<br />
* '''その他の制限''' - エステート マネージャは最大 10 名、"許可された住人" は 500 名、"許可されたグループ" は 63 組、"禁止された住人" は 500 名です。<br />
** メニューから 世界 > 地域/不動産 > 不動産 タブで確認できます。<br />
* '''メインランドで同時に居られるアバター数'''<br />
** フルリージョン - 100 - LindenLab はずっと 40 に設定していましたが、土地によって違います。ミーティングエリアによっては 60 以上の設定になっています。近年のサーバパフォーマンス向上により、リージョンに 60 名以上いてもパフォーマンス上の問題はありません。ただし、{{JIRA|SVC-3895}} で説明されているような問題はあります。<br />
** [[Land#Homestead|ホームステッド]] - 20<br />
** [[Land#Openspace|オープンスペース]] - 10<br />
* '''プライベートアイランドで同時に居られるアバター数:'''<br />
** フルリージョン - 100<br />
** [[土地#Homestead|ホームステッド]] - 20<br />
** [[土地#Openspace|オープンスペース]] - 10<br />
* '''フリーズできる最長時間''' - 土地所有者は住人を 30 秒まで [[Freeze|フリーズ]]できます。土地を所有するグループに所属するメンバーもこの権限を持つことができます。<br />
* '''「全カテゴリ」検索結果に載る土地の最低面積:''' 144 m² <br />
* '''「イベント」検索結果に載る土地の最低面積:''' 512 m²<br />
* '''「イベント」に掲載される高度の上限:''' 768 m ({{JIRA|WEB-814}})<br />
* '''[[World Map|世界地図]] に載るオブジェクトの最大高度:''' 400.005m<br />
* '''[[Classic clouds|雲]] の層''' - 約 150-225m, ただしパーティクルの先がこれを突き抜けて見えることがあります。<br />
<br />
== その他{{anchor|Misc.}} ==<br />
<br />
* '''[http://secondlife.com/currency/describe-limits.php 課金と売買の制限]''' - [http://secondlife.com/whatis/economy-market.php LindeX] currency exchange limits を見てください。<br />
* '''コミュニケーション ボタン > フレンド タブでの同時選択の最大数''' - 最大 20 名を同時に選択して、パーミションの変更、削除、会議への招待などを行うことができます。<br />
<br />
== ナビゲーション{{anchor|Navigation}} ==<br />
<br />
[[File:Max Alt.jpg|thumb|right|435px|'''Height counter error above 2147483647 meters''']]<br />
* '''絶対高度の制限''' - [http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing 2147483647]&nbsp;=&nbsp;2<sup>31</sup>&nbsp;−&nbsp;1 メートルで、高度カウンタが巻き戻ります。高度は浮動小数点数の精度の限界によると思われるグラフィックエラーのためにこれよりも下になるでしょう。<br />
* '''正の高度にテレポートできる [[SLurl]] の Z 座標の最大値''' - 2147483583<br />
** これは、精度問題と思われるものにより、上記の '''絶対高度の制限''' より低いです。2147483583 より高い値はなんでも、2147483647 より大きい何かに繰り上げられ、その結果 [http://ja.wikipedia.org/wiki/%E7%AE%97%E8%A1%93%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%95%E3%83%AD%E3%83%BC オーバーフロー] が発生します。その一方で、2147483583 は 2147483520 に切り捨てられます (以下参照)。<br />
* '''SLurl でテレポートできる最大高度''' - 2147483520 m<br />
<br />
== プロフィール{{anchor|Profile}} ==<br />
<br />
7 ビット ASCII 文字は 1 バイトにエンコードされます。国際文字はもっと多くのバイトを必要とするかもしれません。手で入力する代わりに貼り付けるときは、下の最大数より 1 バイト多く入力することができます。<br />
<br />
* '''セカンドライフ タブの "情報" 欄''' - 510 バイト<br />
* '''ピック タブ''' - 計 10 個まで、それぞれ最大 1022 バイト<br />
* '''リアルライフ タブの "情報" 欄''' - 253 バイト<br />
* '''クラシファイド タブ''' - それぞれ x バイトで 100 リスト<br />
* '''私の記録''' - 1022 バイト<br />
<br />
== 負荷{{anchor|Performance}} ==<br />
<br />
* '''ビューワの FPS''' - 一般に 15 以上ならば良好です。値が大きいほど動作が軽快です。メニューの ヘルプ > ラグ メータ で確認可能で、さらに詳しい情報は、やはりメニューの ビュー > 統計バー で見られます。<br />
* '''[[アバター描画コスト]]''' - [[Avatar Rendering Cost|ここに全部載ってるよ!]]<br />
<br />
== スクリプト{{anchor|Scripting}} ==<br />
<br />
* '''スクリプトが禁止されている土地でスクリプトが動作する高さ''' - 地形メッシュの上 50 m。コントロールを取得したスクリプトオブジェクトは地上に降りても動作を継続します。<br />
* '''スクリプトを実行できる最大の高さ''' - オブジェクトが rez できたりアタッチできたりする限り無制限です。<br />
* '''スクリプトのソースコードの最大長''' - シングルバイトで 65536 文字<br />
* スクリプトに関する特定の制約は、'''[[LSL Portal/ja|LSL ポータル]]''' のそれぞれの関数のページを見てください。<br />
<br />
== テクスチャ{{anchor|Textures}} ==<br />
<br />
* '''プロフィールや、場所などの画像の [http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%AF%94 アスペクト比]''' — 以下はいずれも UI サイズ (編集メニュー > 環境設定 > 一般タブ > UI サイズ) が 1.000 の場合です。<br />
<br />
=== 1.x 系ビューワ{{anchor|1.x Series Viewers}} ===<br />
<br />
(オフィシャルビューワ 1.23.5 までと、ほとんどの [[Alternate viewers|サードパーティ・ビューワ]])<br />
* '''検索 > 全て での "クラシファイド広告", "場所", "人々" で表示される画像''' - 4:3 (256x192 ピクセル)<br />
* '''検索 > 場所, クラシファイド広告 で表示される画像''' - 約7:5 (398x282 ピクセル)<br />
* '''検索 > 土地 で表示される画像''' - 約7:5 (358x252 ピクセル)<br />
* '''プロフィール > セカンドライフ で表示される画像''' - 約4:3 (178x133 ピクセル)<br />
* '''プロフィール > ピック で表示される画像''' - 約16:9 (288x162 ピクセル)<br />
* '''プロフィール > リアルライフ で表示される画像''' - 1:1 (133x133 ピクセル)<br />
* '''プロフィール > クラシファイド広告 で表示される画像''' - 約3:2 (206x137 ピクセル)<br />
* '''プロフィール > ウェブ で表示される画像''' - 1:1 (400x400 ピクセル)<br />
* スクロールバーで右端を 15 ピクセル取られます。<br />
* '''土地情報 > オプション で表示される画像''' - 約3:2 (178x117 ピクセル)<br />
* '''グループ情報 > 一般 で表示される "グループ記章"''' - 1:1 (126x126 ピクセル)<br />
** 画像によっては共有されるものがあるため (例えば、 検索 > 全てと、検索 > 土地、土地についてと、 > オプション などで同じ画像を使いまわす) 、作成に工夫が必要です。<br />
** [[Texture_aspect_ratios|画像を編集するときにテクスチャのアスペクト比を修正する方法を学びましょう。]]<br />
<br />
=== 2.x 系ビューワ{{anchor|2.x Series Viewers}} ===<br />
<br />
* '''検索 > クラシファイド広告 サムネイル''' - 4:3 (60x45 ピクセル)<br />
* '''検索 > クラシファイド広告 詳細表示の画像''' - 約4:3 (252x188 ピクセル)<br />
* '''検索 > クラシファイド広告 詳細表示 > Profile''' - 17:7 (272x112 ピクセル)<br />
* '''検索 > 人々''' - 4:3 (188x141 ピクセル)<br />
* '''検索 > 場所 サムネイル''' - 約4:3 (45x34 ピクセル)<br />
* '''検索 > 場所 詳細表示の画像''' - 5:3 (250x150 ピクセル)<br />
* '''プロフィール > セカンドライフ で表示される画像''' - 約1:1 (100x99 ピクセル)<br />
* '''プロフィール > ピック サムネイル''' - 8:5 (88x55 ピクセル)<br />
* '''プロフィール > ピック 詳細表示の画像''' - 約5:3 (285x172 ピクセル)<br />
** '''土地情報 > オプション で表示される画像''' - 約20:13 (193x125 ピクセル)<br />
* '''場所 > もっと詳しく''' - 約11:7 (272x173 ピクセル)<br />
<br />
=== ビューワ共通{{anchor|All Viewers}} ===<br />
<br />
* '''テクスチャの最大サイズ''' - 1024x1024 ピクセル<br />
** Second Life のテクスチャはすべて [http://ja.wikipedia.org/wiki/2%E3%81%AE%E5%86%AA%E4%B9%97 2 のべき乗] のサイズに変更されます (例えば, 128, 256, 512)。<br />
** インワールドのテクスチャに最大 2048x2048 のものがあります。これは、以前は制限がより緩かったためです。<br />
** テクスチャのサイズは可能な限り小さくすることをお勧めします。というのも大きな画像はそれだけメモリを消費し、表示も遅いからです。<br />
<br />
[[Category:Creation/ja]] [[Category:Tutorials/ja]] [[Category:Lists/ja]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=User_talk:Naoya_Bellic&diff=1176940
User talk:Naoya Bellic
2013-02-23T18:16:18Z
<p>Naoya Bellic: about the documents of quaternion and rotation</p>
<hr />
<div>== quaternion keyword got lost in translation ==<br />
<br />
There is a translation issue with [[クォータニオン]]. It wasn't obvious in the [[quaternion|English article]] what was meant and it got lost in translation. <code>quaternion</code> is actually a keyword. I would fix the problem but I do not read or speak Japanese, I've fixed the English article to make it more obvious what was meant. Thank you for your work on the LSL Portal. -- '''[[User:Strife_Onizuka|Strife]]''' <sup><small>([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])</small></sup> 21:52, 21 February 2013 (PST)<br />
<br />
* Thank you for telling about English document was changed. I re-translated [[クォータニオン]] ([[quaternion/ja]]) page. -- [[User:Naoya Bellic|Naoya Bellic]] 15:17, 22 February 2013 (PST)<br />
<br />
I'm sorry to bother you again. This is what is meant. You can use rotation or quaternion, both are valid LSL.<br />
<lsl><br />
rotation a = <0,0,0,1>;<br />
quaternion b = <0,0,0,1>;<br />
//a == b<br />
</lsl><br />
-- '''[[User:Strife_Onizuka|Strife]]''' <sup><small>([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])</small></sup> 21:33, 22 February 2013 (PST)<br />
<br />
* (I didn't know "quaternion b;" can compile. It is amazing !) Now, the documents of [[quaternion]] and [[rotation]] are '''mathematical''' (Definition, How to calculate, Relation with vector, etc... are written as quaternions are extended complex numbers.). We should create "LSL quaternion" page and add infomation "LSL rotation" page '''as LSL data types'''. {{LSLG|Vector|Page of the Vector}} may be helpful. They need that ''"it's a set of four float values", "dot access is supported", "operators", "easy examples" and "useful snippets" ''. -- [[User:Naoya Bellic|Naoya Bellic]] 10:16, 23 February 2013 (PST)</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlClearPrimMedia/ja&diff=1176918
LlClearPrimMedia/ja
2013-02-23T00:39:36Z
<p>Naoya Bellic: サンプル追加</p>
<hr />
<div>{{Issues/SVC-4939}}{{LSL_Function/face/ja|face|notall=*}}{{LSL_Function/ja<br />
|func_id=352|func_sleep=1.0|func_energy=10.0|mode<br />
|func=llClearPrimMedia|return_type=integer<br />
|p1_type=integer|p1_name=face|p1_desc<br />
|func_footnote=<br />
|func_desc=指定された '''面''' のメディアと全ての {{HoverText|パラメタ|llSetPrimMediaParams で指定されたパラメタ}} をクリア (消去) します。<br />
|return_text=操作の成功失敗を表す STATUS_* フラグ<br />
|spec=<br />
|caveats<br />
|constants={{LSL Constants/ReturnStatus/ja|table=*|sortable=*}}<br />
|examples=<br />
<lsl><br />
// when dropping this script into a prim<br />
// it will remove all set media-on-a-prim<br />
// on all sides of the prim containing the script<br />
// and then the script will delete itself<br />
<br />
<br />
<br />
publish_returned_status_flag(integer inputLink, integer inputFace, integer inputStatus)<br />
{<br />
/* if (inputInteger == 0) */ string outputStatus = "STATUS_OK";<br />
if (inputStatus == 1000) outputStatus = "STATUS_MALFORMED_PARAMS";<br />
else if (inputStatus == 1001) outputStatus = "STATUS_TYPE_MISMATCH";<br />
else if (inputStatus == 1002) outputStatus = "STATUS_BOUNDS_ERROR";<br />
else if (inputStatus == 1003) outputStatus = "STATUS_NOT_FOUND";<br />
else if (inputStatus == 1004) outputStatus = "STATUS_NOT_SUPPORTED";<br />
else if (inputStatus == 1999) outputStatus = "STATUS_INTERNAL_ERROR";<br />
else if (inputStatus == 2001) outputStatus = "STATUS_WHITELIST_FAILED";<br />
<br />
// PUBLIC_CHANNEL has the integer value 0<br />
llSay(PUBLIC_CHANNEL, "llClearLinkMedia(link " + (string)inputLink<br />
+ ", face " + (string)inputFace + ") = " + outputStatus + ";");<br />
}<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
integer link = llGetLinkNumber();<br />
integer numOfSides = llGetLinkNumberOfSides(link);<br />
integer face;<br />
<br />
do<br />
{<br />
integer clearMediaSucceeded = llClearPrimMedia(face);<br />
publish_returned_status_flag(link, face, clearMediaSucceeded);<br />
<br />
++face;<br />
}<br />
while (face < numOfSides);<br />
<br />
string thisScript = llGetScriptName();<br />
llRemoveInventory(thisScript);<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions=<br />
{{LSL DefineRow||[[llSetPrimMediaParams/ja|llSetPrimMediaParams]]}}<br />
{{LSL DefineRow||[[llGetPrimMediaParams/ja|llGetPrimMediaParams]]}}<br />
|also_tests<br />
|also_events=<br />
|also_articles=<br />
|notes<br />
|deepnotes<br />
|history=<br />
*{{SVN|2816|rev=134947|trunk=*|anchor=|ver=|ser=}}<br />
*{{JIRA|SVC-4939}}<br />
|cat1=Prim Media<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlClearLinkMedia/ja&diff=1176917
LlClearLinkMedia/ja
2013-02-23T00:34:05Z
<p>Naoya Bellic: サンプル追加</p>
<hr />
<div>{{Issues/SVC-7422}}{{LSL_Function/face/ja|face|notall=*}}{{LSL_Function/link/ja|link|nogroup=*}}{{LSL_Function/ja<br />
|func_id=?|func_sleep=0.0|func_energy=0.0|mode<br />
|func=llClearLinkMedia|return_type=integer<br />
|p1_type=integer|p1_name=link|p1_desc<br />
|p2_type=integer|p2_name=face|p2_desc<br />
|func_footnote=<br />
|func_desc=指定された'''リンク番号'''の'''面''' のメディアと全ての {{HoverText|パラメタ|llSetPrimMediaParams で指定されたパラメタ}} をクリア (消去) します。<br />
|return_text=操作の成功失敗を表す STATUS_* フラグ<br />
|spec=<br />
|caveats<br />
|constants={{LSL Constants/ReturnStatus/ja|table=*|sortable=*}}<br />
|examples=<br />
<lsl><br />
// when dropping this script into an object<br />
// it will remove all set media-on-a-prim<br />
// on all sides of every prim and then<br />
// the script will delete itself<br />
<br />
<br />
<br />
<br />
integer GetPrimCount()<br />
{<br />
if(llGetAttached())<br />
return llGetNumberOfPrims();<br />
<br />
return llGetObjectPrimCount(llGetKey());<br />
}<br />
<br />
publish_returned_status_flag(integer inputLink, integer inputFace, integer inputStatus)<br />
{<br />
/* if (inputInteger == 0) */ string outputStatus = "STATUS_OK";<br />
if (inputStatus == 1000) outputStatus = "STATUS_MALFORMED_PARAMS";<br />
else if (inputStatus == 1001) outputStatus = "STATUS_TYPE_MISMATCH";<br />
else if (inputStatus == 1002) outputStatus = "STATUS_BOUNDS_ERROR";<br />
else if (inputStatus == 1003) outputStatus = "STATUS_NOT_FOUND";<br />
else if (inputStatus == 1004) outputStatus = "STATUS_NOT_SUPPORTED";<br />
else if (inputStatus == 1999) outputStatus = "STATUS_INTERNAL_ERROR";<br />
else if (inputStatus == 2001) outputStatus = "STATUS_WHITELIST_FAILED";<br />
<br />
// PUBLIC_CHANNEL has the integer value 0<br />
llSay(PUBLIC_CHANNEL, "llClearLinkMedia(link " + (string)inputLink<br />
+ ", face " + (string)inputFace + ") = " + outputStatus + ";");<br />
}<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
integer numOfPrims = GetPrimCount();<br />
integer numOfSides;<br />
<br />
integer link;<br />
integer face;<br />
<br />
if (1 < numOfPrims)<br />
link = 1;<br />
<br />
do<br />
{<br />
numOfSides = llGetLinkNumberOfSides(link);<br />
face = 0;<br />
do<br />
{<br />
integer clearLinkMediaSuccessFlag = llClearLinkMedia(link, face);<br />
publish_returned_status_flag(link, face, clearLinkMediaSuccessFlag);<br />
<br />
++face;<br />
}<br />
while (face < numOfSides);<br />
<br />
if (numOfPrims == 1)<br />
jump continue;<br />
<br />
++link;<br />
}<br />
while (link <= numOfPrims);<br />
<br />
@continue;<br />
<br />
string thisScript = llGetScriptName();<br />
llRemoveInventory(thisScript);<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions=<br />
{{LSL DefineRow||[[llSetPrimMediaParams/ja|llSetPrimMediaParams]]}}<br />
{{LSL DefineRow||[[llGetPrimMediaParams/ja|llGetPrimMediaParams]]}}<br />
{{LSL DefineRow||[[llClearPrimMedia/ja|llClearPrimMedia]]}}<br />
|also_tests<br />
|also_events=<br />
|also_articles=<br />
|notes<br />
|deepnotes<br />
|history=*Scheduled for [[Beta/Magnum|RC Magnum]] channel, week of August 3, 2011.<br />
|cat1=Prim Media<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE&diff=1176916
Category:LSL サンプルが必要なもの
2013-02-23T00:26:18Z
<p>Naoya Bellic: 色付け</p>
<hr />
<div>{{Multi-lang|Category:LSL Needs Example|/ja}}<br />
{{LSL Header{{#var:lang}}|ml=*}}{{LSLC{{#var:lang}}|}}<br />
このカテゴリの中の記事には、例をつける必要があります。例をつけるには、'examples' の値として見えるままの複数行の文字列を設定してください。<br />
<br />
例: [[llFrand]] (定義中のパラメタの順序は、表示に全く影響ありません)<br />
<nowiki> {{LSL_Function/ja<br />
|sort=Frand<br />
|func=llFrand<br />
|func_id=8<br />
|func_sleep=0.0<br />
|func_energy=10.0<br />
|p1_type=float<br />
|p1_name=mag<br />
|p1_desc=Any valid float value<br />
|return_type=float<br />
|return_text=that is pseudo random number in the range [0.0,mag) or (mag, 0.0].<br />
|spec=returns a pseudo random number in range [0.0, mag) or (mag, 0.0], depending upon the sign of mag.<br />
|caveats<br />
</nowiki><font style="color:red;"><nowiki>|examples=<lsl>default<br />
{<br />
touch_start(integer total_number)<br />
{<br />
// When touched, say "Heads" with probability 0.5, <br />
// otherwise, say "Tails."<br />
if ( llFrand(1.) < .5)<br />
llSay(0, "Heads");<br />
else<br />
llSay(0, "Tails");<br />
}<br />
}</lsl></nowiki></font><nowiki><br />
|func_helpers<br />
|also<br />
|notes=<br />
The random number generator is not a source of entropy.<br />
<br />
The sequence of random numbers are shared across the entire process, and not independently seeded.<br />
Therefore, the pseudo random number generation is not suitable for any application which requires <br />
completely predictable or completely unpredictable results.<br />
|cat1=Math<br />
|cat2<br />
|cat3<br />
}}</nowiki></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlApplyRotationalImpulse/ja&diff=1176915
LlApplyRotationalImpulse/ja
2013-02-23T00:06:42Z
<p>Naoya Bellic: サンプル追加</p>
<hr />
<div>{{LSL_Function/ja<br />
|func_id=73|func_sleep=0.0|func_energy=10.0<br />
|func=llApplyRotationalImpulse<br />
|p1_type=vector|p1_name=force<br />
|p2_type=integer|p2_name=local|p2_desc=真偽値が{{LSLG/ja|TRUE}}の場合は[[Viewer coordinate frames/ja#Local|ローカル]]角度を使用し、{{LSLG/ja|TRUE}}の場合は[[Viewer coordinate frames/ja#Region|リージョン]]角度を使用します。<br />
|func_desc=オブジェクトに回転の衝撃を加えます。<br />
|func_footnote<br />
|return_text<br />
|spec<br />
|caveats=オブジェクトは物理属性にしてください。<br />
|constants<br />
|examples=<lsl><br />
default<br />
{<br />
state_entry()<br />
{<br />
llApplyRotationalImpulse(<0,5,0>,TRUE); //Rotates object.<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions=*{{LSLG/ja|llApplyImpulse}}<br />
|also_events<br />
|also_tests<br />
|also_articles<br />
|notes<br />
|permission<br />
|negative_index<br />
|cat1=Physics<br />
|cat2=Movement<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlAngleBetween/ja&diff=1176914
LlAngleBetween/ja
2013-02-23T00:05:23Z
<p>Naoya Bellic: サンプル追加</p>
<hr />
<div>{{Issues/SVC-2424}}{{LSL_Function/ja<br />
|func_id=174|func_sleep=0.0|func_energy=10.0<br />
|func=llAngleBetween|sort=AngleBetween<br />
|return_type=float<br />
|p1_type=rotation|p1_name=a|p1_desc=rotation 値 A<br />
|p2_type=rotation|p2_name=b|p2_desc=rotation 値 B<br />
|func_footnote<br />
|return_text=2 つの rotation 値 '''a''', '''b''' 間の角度<br />
|spec<br />
|caveats<br />
|examples=<br />
<lsl><br />
default<br />
{<br />
touch_start(integer num_detected)<br />
{<br />
rotation currentRootRotation = llGetRootRotation();<br />
float angle = llAngleBetween(ZERO_ROTATION, currentRootRotation);<br />
<br />
// PUBLIC_CHANNEL has the integer value 0<br />
llSay(PUBLIC_CHANNEL,<br />
"llAngleBetween(ZERO_ROTATION, " + (string)currentRootRotation + ") = " + (string)angle);<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions={{LSL DefineRow||{{LSLG/ja|llRotBetween}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llRot2Angle}}|同様の機能で軸角度形式を求める}}<br />
|also_events<br />
|also_tests<br />
|also_articles<br />
|notes<br />
|deepnotes=<lsl>float AngleBetween(rotation a, rotation b)<br />
{<br />
return 2.0 * llAcos((a.x * b.x + a.y * b.y + a.z * b.z + a.s * b.s)<br />
/ llSqrt((a.x * a.x + a.y * a.y + a.z * a.z + a.s * a.s)<br />
* (b.x * b.x + b.y * b.y + b.z * b.z + b.s * b.s)));<br />
}</lsl><br />
|cat1=Math/3D<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=User_talk:Naoya_Bellic&diff=1176913
User talk:Naoya Bellic
2013-02-22T23:17:38Z
<p>Naoya Bellic: </p>
<hr />
<div>== quaternion keyword got lost in translation ==<br />
<br />
There is a translation issue with [[クォータニオン]]. It wasn't obvious in the [[quaternion|English article]] what was meant and it got lost in translation. <code>quaternion</code> is actually a keyword. I would fix the problem but I do not read or speak Japanese, I've fixed the English article to make it more obvious what was meant. Thank you for your work on the LSL Portal. -- '''[[User:Strife_Onizuka|Strife]]''' <sup><small>([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])</small></sup> 21:52, 21 February 2013 (PST)<br />
<br />
* Thank you for telling about English document was changed. I re-translated [[クォータニオン]] ([[quaternion/ja]]) page. -- [[User:Naoya Bellic|Naoya Bellic]] 15:17, 22 February 2013 (PST)</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3&diff=1176912
クォータニオン
2013-02-22T23:14:24Z
<p>Naoya Bellic: 英語版の変更に伴った変更</p>
<hr />
<div>{{Multi-lang|Quaternion|/ja}}<br />
{{#vardefine:ml-cat|/LSL}}{{Help/ja|Glossary=*}}<br />
{{LSL Header/ja}}{{LSLC|Types}}{{LSLC|Keywords|quaternion}}<br />
==クォータニオン==<br />
<br />
<code>クォータニオン</code>はLSLのコンパイラで回転を表現するものとして定義されており、<code>{{LSLG/ja|rotation}}</code>と言い換えることもできます。<br />
<br />
<br />
<br />
== 定義と詳細: ==<br />
<br />
クォータニオンは複素数を一般化したもので、19世紀半ばにウィリアム・ローワン・ハミルトンによって考案されました。複素数は実数 a と純虚数 bi の和です。i は次のように定義されます。<br />
<br />
i<sup>2</sup> = -1<br />
<br />
四元数を構築するため、次の仮定のもとに一般的な虚数単位 j と k を導入します。<br />
<br />
j<sup>2</sup> = -1; k<sup>2</sup> = -1; ijk = -1<br />
<br />
これらの基礎的な定義から、一般化された虚数単位の積についての関係を導くことができます。<br />
<br />
ij = k; jk = i; ki = j<br />
<br />
さらに、<br />
<br />
ji = -k; kj = -i; ik = -j<br />
<br />
つまり、クォータニオンの乗算は交換可能ではありません。交換可能でない演算は今でこそ行列代数やベクトルおよびテンソル解析でよく知られている特徴ですが、発明当時、この考え方は革命的でした。 <br />
<br />
クォータニオンの一般的な形は<br />
<br />
Q = a + bi + cj + dk<br />
<br />
ここで a、b、c は通常の実数です。クォータニオンの加算は簡単で、同類項をまとめるだけです。<br />
<br />
(a + bi + cj + dk) + (e + fi + gj + hk) = (a+e) + (b+f)i + (c+g)j + (d+h)k<br />
<br />
2つのクォータニオンの積は上述の積の関係を用いて求めることができます。虚数単位は交換可能でないので i、j、k の順序はそのままにしておきましょう。<br />
<br />
QR = (a + bi + cj + dk)(e + fi + gj + hk) =<br />
<br />
ae + afi + agj + ahk +<br />
bei - bf + bgij + bhik +<br />
cej + cfji - cg + chjk +<br />
dek + dfki + dgkj - dh<br />
<br />
=<br />
ae + afi + agj + ahk +<br />
bei - bf + bgk - bhj +<br />
cej - cfk - cg + chi +<br />
dek + dfj - dgi - dh<br />
<br />
= (ae - bf - cg - dh) + (af + be + ch - dg)i + (ag - bh + ce + df)j + (ah + bg - cf + de)k<br />
<br />
(そして、あなたは複素数の乗算は面倒だと思うでしょう!)<br />
<br />
今、私たちは相似な共役複素数を定義することができます。(*表記を使用しますが、他の表記も一般的です)<br />
<br />
Q* = a - bi - cj - dk<br />
<br />
クォータニオンと、その共役複素数の積は:<br />
<br />
QQ* = (a + bi + cj + dk)(a - bi - cj - dk) =<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>) + (-ab + ba - cd + dc)i + (-ac + bd + ca - db)j + (-ad - bc + cb + da)k<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>)<br />
<br />
これはユークリッドノルムの2乗のように見えます。3つの組(b、c、d)をベクトル V とすると、この2乗されたノルムは書き直すことができ、<br />
<br />
QQ* = a<sup>2</sup> + ||V||<sup>2</sup><br />
<br />
なので、1つ目の項 a はクォータニオンのスカラー部または実部、3つの組(b、c、d)はベクトル部と呼ばれます。<br />
<br />
== クォータニオンと回転: ==<br />
<br />
私たちがクォータニオンに関心がある理由は、Second Life が回転を表わすために使用しているからです。どのように行われているのでしょうか? 具体的にベクトル V = (b,c,d)、実部がゼロのクォータニオンで考えてみましょう。<br />
<br />
Q(V) = 0 + bi + cj + dk<br />
<br />
他のクォータニオンをQを掛けた場合、一般的に実部はゼロではありません。私たちはベクトルをベクトルではないクォータニオンに変換しました。回転にはとても見えませんね。でも、片方からあるクォータニオン z を掛け、その反対から z の逆数 z<sup>-1</sup> を掛けると、実部がゼロの結果を得ることができます。<br />
<br />
Re[zQ(V)z<sup>-1</sup>] = 0<br />
<br />
-- すなわちベクトルからベクトルへの写像です。このことを確認するには、積の計算式から、2つのクォータニオンの積の実部は乗算の順序に対して不変であることに注目して、<br />
<br />
Re[QR] = Re[RQ].<br />
<br />
したがって、写像中の1番目と(2番目*3番目)のクォータニオンについて、実部を変えることなく順序を変えることができます。<br />
<br />
Re[z(Q(V)z<sup>-1</sup>)] = Re[(Q(V)z<sup>-1</sup>)z] = Re[Q(V)(z<sup>-1</sup>z)] = 0<br />
<br />
よって Q の実部がゼロのとき、クォータニオンの乗算でも結合法則を満たすことが分かりました。あるクォータニオンを左から掛け、さらに右からその逆数を掛けることは、z とその共役複素数を掛けるこの演算ですよね。線形代数に詳しい読者は、回転行列による対角化に似ていることに気付くのではないでしょうか。 <br />
<br />
では、あるクォータニオンとその共役なクォータニオンを掛けた結果、元のクォータニオンに戻るための条件は何でしょうか?<br />
<br />
zQz<sup>-1</sup> = Q ゆえに zQ = Qz<br />
<br />
(これは最初の式の両辺に右から z を掛けることで簡単に示せます。) いつの間にクォータニオンが交換可能になったのでしょう? クォータニオンの積の式から、実部は交換可能であることが分かっていて、i の項については、<br />
<br />
(af + be + ch - dg)i + ... = (eb + fa + gd - hc)i + ...<br />
<br />
この乗算は ch - dg = 0 または c/d = g/h のとき交換可能です。すなわち、両方のクォータニオンのベクトル部のjk-平面における勾配が一致するときです。何も i が特別なわけではなく、ij-平面、ik-平面についても同様です。つまり2つのクォータニオンのベクトル部が同じ向き、言い換えると同一直線上にあるときに交換可能です。<br />
<br />
このことを示すのは難しくなく、共役複素数は線形で(合計してから複素共役を取っても、複素共役を取ってから合計しても同じです)、共役を取っても Q のベクトル部の大きさは変わらないことは明らかです。軸がベクトルと一致する場合に限り、ベクトルの大きさを変えない一次変換とはどのようなものでしょうか? それは……もちろん回転です。つまり Q に z と z の共役複素数を掛けたものは、Q のベクトル部を z のベクトル部を軸として回転させたものだったのです。<br />
<br />
簡単な例で試してみましょう。ベクトル V = (1,0,0) と、対応するクォータニオン Q = 0 + i を考えます。z軸周りの回転を表すクォータニオン z は a + ck と書けるので、共役複素数は、<br />
<br />
Q' = (a + ck)(i)(a + ck)<sup>-1</sup><br />
<br />
z の逆数とは何でしょう? これはクォータニオン z の大きさが 1 となるように a と c を選ぶことによって、逆数と共役複素数が同じであることが簡単に分かります。<br />
<br />
len(z) = 1 = zz* ゆえに z* = z<sup>-1</sup> <br />
<br />
よって、書き直すと<br />
<br />
Q' = (a + ck)(i)(a - ck) = (a + ck)(ai + cj) = a<sup>2</sup>i + acj + caj - c<sup>2</sup>i = (a<sup>2</sup>- c<sup>2</sup>)i + 2acj<br />
<br />
<br />
条件から<br />
<br />
a<sup>2</sup>+ c<sup>2</sup> = 1 <br />
<br />
ゆえに、ある角度θを用いて書くと a = cos(θ/2), b = sin(θ/2) (1/2を掛けた理由はもうすぐわかります。)<br />
<br />
i と j の項はそれぞれ下記を満たします。<br />
<br />
cos<sup>2</sup>(θ/2) - sin<sup>2</sup>(θ/2) = cos(θ)<br />
<br />
かつ<br />
<br />
2 cos(θ/2) sin(θ/2) = sin(θ)<br />
<br />
<br />
これは確かに k (z) 軸周りにθだけ回転させた回転を表しています。一般化すると、ベクトル V を軸 A = (b,c,d) (正規化されていると仮定します。つまり ||A|| = 1 です。)周りに角度θだけ回転させるクォータニオンは<br />
<br />
z = cos(θ/2) + sin(θ/2)A = cos(θ/2) + sin(θ/2){bi + cj + dk}<br />
<br />
すると、 Q = 0 + V の共役複素数と z について、<br />
<br />
Q' = zQz*<br />
<br />
ベクトル部だけを抜き出すと<br />
<br />
Q' = 0 + V'<br />
<br />
V' の正体はベクトル V を回転させたものです。 <br />
<br />
<br />
Second Life では、回転を表わすクォータニオンは浮動小数点数4つで表現されます。最初の3つがベクトル部で、最後の1つがスカラー部です。つまり Q = <Q.x, Q.y, Q.z, Q.s> となっています。 Second Lifeの地域における方角について、東西方向がx軸、南北方向がy軸、上下方向がz軸となっています。x は 虚軸の i 軸への、y は j への、z は k への写像でしたね。これは右手系座標であることがわかります。右手系座標とは右手と方向付けが同じで、手を開いて x 軸のプラスの方角(東の方角)へ向けたとき、曲げた指が y 軸のプラス(北の方角)を向き、親指を手のひらの成す平面と曲げた指に垂直に立てると z 軸のプラス(上方向)を向きます。回転角はラジアン単位で -π から π (パイ)までと決められています。つまり反時計回り(正の向き - x 軸のプラス側(東)から y 軸のプラス側(北)を通って x 軸のマイナス側(西)へ向かう向き)に半回転、または時計回り(負の向き - x 軸のプラス側(東)から y 軸のマイナス側(南)を通って x 軸のマイナス側(西)へ向かう向き)に半回転まで回転させることができ、回転角が3.141ラジアンもしくは180度のときには2つの向きによる回転は同じ結果になります。例えば西を向いている面を z 軸周りに反時計回りで90度回転させる(南を向く) rotation は、<br />
<br />
<0, 0, 0.707, 0.707><br />
<br />
sinπ/4 と cosπ/4 (π/4 は回転角の半分) は両方とも 1/2<sup>0.5</sup> だからです。 <br />
<br />
[[Image:example_rotation.jpg]]<br />
<br />
<br />
同じく、回転させて東に向けるには、<br />
<br />
<0, 0, 1, 0> と <0, 0, -1, 0> のどちらでもいいです。<br />
<br />
オブジェクトを右に傾ける(x 軸の周りに反時計回りで回転させる)、例えば90度傾けるには、<br />
<br />
<0.707, 0, 0, 0.707><br />
<br />
同じ角度、前に倒す(y 軸周りに時計回りで回転させる)には、<br />
<br />
<0, -0.707, 0, 0.707><br />
<br />
重要なのは、ベクトルの写像はクォータニオンによる回転と一対一対応しないということです。例えば下の図は x 軸から y 軸への何通りかの回転です。異なる回転は最終的な(y と z に)垂直な方向の向きが異なる結果になります。 <br />
<br />
<br />
[[Image:Alternate_rotations.jpg]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=While/ja&diff=1176877
While/ja
2013-02-21T08:36:23Z
<p>Naoya Bellic: LSOの場合について追加</p>
<hr />
<div>{{Multi-lang}}<br />
{{LSL_Conditional/ja<br />
|statement=while<br />
|statement_header<br />
|statement_desc=いずれのステートメントが空でも可能です。<br />
|statement_end=loop<br />
|statement_end_desc=シングルステートメントでもブロックステートメントでも空のステートメントのいずれも可能です。<br />
|p1_name=condition|p1_desc=これが実行されてtrueであれば '''loop''' が実行されます。<br />
|constants<br />
|spec<br />
|caveats<br />
|examples=<pre>//シングルステートメント<br />
integer a = 0;<br />
integer b = 10;<br />
while(a < b)<br />
llOwnerSay((string)(a++));<br />
</pre><br />
<pre>//ブロックステートメント<br />
integer a = 0;<br />
integer b = 10;<br />
while(a < b)<br />
{<br />
llOwnerSay((string)a);<br />
++a;<br />
}<br />
</pre><br />
<pre>//空のステートメント<br />
integer a = 0;<br />
integer b = 10;<br />
while(a++ < b);<br />
</pre><br />
|helpers<br />
|also_header<br />
|also_functions<br />
|also_tests<br />
|also_articles<br />
|also_footer<br />
|notes={{LSLG|do-while/ja|do-while}} のループは while ループや {{LSLG|for/ja|for}} ループより LSO においては速いです。<br />
|mode<br />
|deprecated<br />
|cat1=Conditional<br />
|cat2=Flow Control<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB&diff=1176876
Category:LSL ベクトル
2013-02-21T08:27:36Z
<p>Naoya Bellic: リンク修正</p>
<hr />
<div>{{Multi-lang|Category:LSL Vector|/ja}}<br />
{{LSL Header{{#var:lang}}|ml=*}}{{LSLC{{#var:lang}}|}}<br />
{{LSLC/ja|Types}}<br />
==Vector==<br />
<br />
vectorは3個の{{LSLGC|Float/ja|float}}の値のセットを含むデータ[[:Category:LSL Types/ja|型(type)]]です。<br />
<br />
===成分===<br />
各要素は変数名の後に .x、.y、.zを付加することにより個別にアクセスできます。<br />
<lsl>vector vec;<br />
float x = vec.x;<br />
float y = vec.y;<br />
float z = vec.z;</lsl> <br />
<br />
===用途===<br />
vector型は次のデータを保持するために使うことができます:<br />
* 位置: x, y, zの単位はm(メートル)<br />
* 速度: x, y, zはスピードをあらわします。<br />
* {{LSLGC|Color|色}}: Redはx、Greenはy、Blueはz<br />
<br />
===演算子===<br />
vector型は次の操作をサポートしています:<br />
* 加算、"+" 演算子<br />
* 減算、"-" 演算子<br />
* 乗算 (内積)、 "*" 演算子<br />
* 外積、"%" 演算子<br />
<br />
vector型は[[クォータニオン]]の乗算または除算によって回転させることができます。<br />
<br />
===例===<br />
<pre><br />
vector test=<1.0, 2.0, 3.0>;<br />
llOwnerSay((string)test.z); // 3.0を出力する<br />
</pre><br />
<br />
===便利なスニペット===<br />
<lsl>integer IsVector(string s)<br />
{<br />
list split = llParseString2List(s, [" "], ["<", ">", ","]);<br />
if(llGetListLength(split) != 7)//we must check the list length, or the next test won't work properly.<br />
return 0;<br />
return !((string)((vector)s) == (string)((vector)((string)llListInsertList(split, ["-"], 5))));<br />
//it works by trying to flip the sign on the Z element of the vector,<br />
//if it works or breaks the vector then the values won't match.<br />
//if the vector was already broken then the sign flip will have no affect and the values will match<br />
//we cast back to string so we can catch negative zero which allows for support of ZERO_VECTOR<br />
}//Strife Onizuka</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LSL_Editing_Primer/ja&diff=1176875
LSL Editing Primer/ja
2013-02-21T08:22:13Z
<p>Naoya Bellic: </p>
<hr />
<div>{{Multi-lang}}<br />
{{LSL Header/ja}}<br />
<br />
__TOC__<br />
<br />
wikiにあるLSLポータルエリアには理解しやすい書式と編集を容易にするための幾つかのテンプレートがあります。<br />
<br />
== 一般的なテンプレート ==<br />
<br />
幾つかの共通テンプレートがあり、最も使われるテンプレート名は入力を簡単にするために短くなっています。<br />
<br />
{|{{Prettytable}}<br />
!書き方<br />
!説明<br />
!解説<br />
|-<br />
|<nowiki>{{</nowiki>[[Template:LSLC|LSLC]]<nowiki>|カテゴリ|ソート}}</nowiki><br />
|グループにページを加えます<br/><nowiki>[[Category:LSL name|name]]</nowiki>の代わりにつかわれます<br/>ソートは補助的なものです<br />
|<br />
|-<br />
|<nowiki>{{</nowiki>[[Template:LSLGC|LSLGC]]<nowiki>|カテゴリ|テキスト}}</nowiki><br />
|LSL カテゴリにリンクします<br/><nowiki>[[:Category:LSL category|text]]</nowiki>の代わりにつかいます<br/>もし'''テキスト'''が抜けている場合、'''カテゴリ'''になります<br />
|<nowiki>{{LSLGC|Math/3D|3D演算関数}}</nowiki><br/>{{LSLGC|Math/3D|3D演算関数}}<br/><nowiki>{{LSLGC|Math}}</nowiki><br/>{{LSLGC|Math}}<br/><br />
|-<br />
|<nowiki>{{</nowiki>[[Template:HoverText|HoverText]]<nowiki>|単語|解説}}</nowiki><br />
|マウスカーソルを合わせたときに、'''解説'''の部分が表示されます。<br />
|<nowiki>{{HoverText|猿|哺乳類}}</nowiki><br/>{{HoverText|猿|哺乳類}}<br />
|-<br />
|<nowiki>{{</nowiki>[[Template:LSL Header|LSL_Header]]<nowiki>}}</nowiki><br />
|テンプレートしては用いられません。カテゴリや、ここのようなページ用です。<br />
|<nowiki>{{LSL Header}}</nowiki><br />
|-<br />
|<nowiki>{{</nowiki>[[Template:LSL Hex|LSL_Hex]]<nowiki>|16進法|数字}}</nowiki><br />
|16進法用に、数字を用いた短い簡易説明を表示します。<br/>もし'''数字'''が抜けているか空の場合、'''数字'''は16進法から計算されます。<br />
|<nowiki>{{LSL Hex|0x100|256}}</nowiki><br/>{{LSL Hex|0x100|256}}<br/><nowiki>{{LSL Hex|0x100}}</nowiki><br/>{{LSL Hex|0x100}}<br />
|-<br />
|<nowiki>{{</nowiki>[[Template:!|!]]<nowiki>}}</nowiki><br />
|テンプレートのパラメータが抜けている時のために、{{HoverText|<nowiki>|</nowiki>|vertical pipe}} の代わりにつかわれます。 <br />
|<nowiki>{{!}}</nowiki><br/><nowiki>|</nowiki><br />
|-<br />
|<nowiki>{{</nowiki>[[Template:=|=]]<nowiki>}}</nowiki><br />
|テンプレートのパラメータで同一であるという証明が必要な場合のために=の代わりに使われます。<br />
|<nowiki>{{=}}</nowiki><br/><nowiki>=</nowiki><br />
|}<br />
<br />
==表の組み方==<br />
<br />
MediaWikiの欠点のひとつは、テンプレート用のパラメータのテーブルの組み込みが困難なことです。これには幾つか方法があります。<br />
# <nowiki><table> & </table>, <tr> & </tr>, <th> & </th>, <td> & </td></nowiki> タグを使ってHTMLで表を書く。もしこの方法をとるなら、適切にタグを閉じなければなりません。(そうでなければ、MediaWiki は奇妙なことをするでしょう)<br />
# 表にMediaWiki の文法を使い、全ての '|' を<nowiki>'{{!}}'</nowiki>を置き換える。<br />
# <nowiki><div></div></nowiki> タグで、テーブルの回り込みをする。(常に動作するわけではありません)<br />
*MediaWikiで適切な表示にするために必要なだけ空白を使う方法もあります。<br />
<br />
<br />
<br />
{|{{Prettytable}}<br />
|+ '''HTMLでの方法'''<br />
!実行前<br />
!実行後<br />
!実際の表<br />
|-<br />
|<pre>{|{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
|- <br />
| [[PERM_ALL]]<br />
| {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
| 移動/編集/複製/譲渡 権<br />
|- <br />
| [[PERM_COPY]]<br />
| {{LSL Hex|0x00008000|32768}}<br />
| 複製権<br />
|- <br />
| [[PERM_MODIFY]]<br />
| {{LSL Hex|0x00004000|16384}}<br />
| 編集権<br />
|- <br />
| [[PERM_MOVE]]<br />
| {{LSL Hex|0x00080000|524288}}<br />
| 移動権<br />
|- <br />
| [[PERM_TRANSFER]]<br />
| {{LSL Hex|0x00002000|8192}}<br />
| 譲渡権<br />
|}<br />
</pre><br />
|<pre><br />
<table {{Prettytable}}><tr><br />
<th> 権限</th><br />
<th> 値</th><br />
<th> 解説</th><br />
</tr><tr><br />
<td> [[PERM_ALL]]</td><br />
<td> {{LSL Hex|0x7FFFFFFF|2147483647}}</td><br />
<td> 移動/編集/複製/譲渡 権</td><br />
</tr><tr><br />
<td> [[PERM_COPY]]</td><br />
<td> {{LSL Hex|0x00008000|32768}}</td><br />
<td> 複製権</td><br />
</tr><tr><br />
<td> [[PERM_MODIFY]]</td><br />
<td> {{LSL Hex|0x00004000|16384}}</td><br />
<td> 編集権</td><br />
</tr><tr><br />
<td> [[PERM_MOVE]]</td><br />
<td> {{LSL Hex|0x00080000|524288}}</td><br />
<td> 移動権</td><br />
</tr><tr><br />
<td> [[PERM_TRANSFER]]</td><br />
<td> {{LSL Hex|0x00002000|8192}}</td><br />
<td> 譲渡権</td><br />
</tr></table><br />
</pre><br />
|<br />
テーブル内にテーブル:<br />
<table {{Prettytable}}><tr><br />
<th> 権限</th><br />
<th> 値</th><br />
<th> 解説</th><br />
</tr><tr><br />
<td> [[PERM_ALL]]</td><br />
<td> {{LSL Hex|0x7FFFFFFF|2147483647}}</td><br />
<td> 移動/編集/複製/譲渡 権</td><br />
</tr><tr><br />
<td> [[PERM_COPY]]</td><br />
<td> {{LSL Hex|0x00008000|32768}}</td><br />
<td> 複製権</td><br />
</tr><tr><br />
<td> [[PERM_MODIFY]]</td><br />
<td> {{LSL Hex|0x00004000|16384}}</td><br />
<td> 編集権</td><br />
</tr><tr><br />
<td> [[PERM_MOVE]]</td><br />
<td> {{LSL Hex|0x00080000|524288}}</td><br />
<td> 移動権</td><br />
</tr><tr><br />
<td> [[PERM_TRANSFER]]</td><br />
<td> {{LSL Hex|0x00002000|8192}}</td><br />
<td> 譲渡権</td><br />
</tr></table><br />
テンプレートパラメータを併せたテーブル:<br />
<div><br />
{{Simple|in=<table {{Prettytable}}><tr><br />
<th> 権限</th><br />
<th> 値</th><br />
<th> 解説</th><br />
</tr><tr><br />
<td> [[PERM_ALL]]</td><br />
<td> {{LSL Hex|0x7FFFFFFF|2147483647}}</td><br />
<td> 移動/編集/複製/譲渡 権</td><br />
</tr><tr><br />
<td> [[PERM_COPY]]</td><br />
<td> {{LSL Hex|0x00008000|32768}}</td><br />
<td> 複製権</td><br />
</tr><tr><br />
<td> [[PERM_MODIFY]]</td><br />
<td> {{LSL Hex|0x00004000|16384}}</td><br />
<td> 編集権</td><br />
</tr><tr><br />
<td> [[PERM_MOVE]]</td><br />
<td> {{LSL Hex|0x00080000|524288}}</td><br />
<td> 移動権</td><br />
</tr><tr><br />
<td> [[PERM_TRANSFER]]</td><br />
<td> {{LSL Hex|0x00002000|8192}}</td><br />
<td> 譲渡権</td><br />
</tr></table>}}</div><br />
|}<br />
<br />
{|{{Prettytable}}<br />
|+'''パイプ置換法'''<br />
!実行前<br />
!実行後<br />
!実際の表<br />
|-<br />
|<pre>{|{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
|- <br />
| [[PERM_ALL]]<br />
| {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
| 移動/編集/複製/譲渡 権<br />
|- <br />
| [[PERM_COPY]]<br />
| {{LSL Hex|0x00008000|32768}}<br />
| 複製権<br />
|- <br />
| [[PERM_MODIFY]]<br />
| {{LSL Hex|0x00004000|16384}}<br />
| 編集権<br />
|- <br />
| [[PERM_MOVE]]<br />
| {{LSL Hex|0x00080000|524288}}<br />
| 移動権<br />
|- <br />
| [[PERM_TRANSFER]]<br />
| {{LSL Hex|0x00002000|8192}}<br />
| 譲渡権<br />
|}<br />
</pre><br />
|<pre>{{{!}}{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
{{!}}- <br />
{{!}} [[PERM_ALL]]<br />
{{!}} {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
{{!}} 移動/編集/複製/譲渡 権<br />
{{!}}- <br />
{{!}} [[PERM_COPY]]<br />
{{!}} {{LSL Hex|0x00008000|32768}}<br />
{{!}} 複製権<br />
{{!}}- <br />
{{!}} [[PERM_MODIFY]]<br />
{{!}} {{LSL Hex|0x00004000|16384}}<br />
{{!}} 編集権<br />
{{!}}- <br />
{{!}} [[PERM_MOVE]]<br />
{{!}} {{LSL Hex|0x00080000|524288}}<br />
{{!}} 移動権<br />
{{!}}- <br />
{{!}} [[PERM_TRANSFER]]<br />
{{!}} {{LSL Hex|0x00002000|8192}}<br />
{{!}} 譲渡権<br />
{{!}}}<br />
</pre><br />
|<br />
テーブルの中にテーブル:<br />
{{{!}}{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
{{!}}- <br />
{{!}} [[PERM_ALL]]<br />
{{!}} {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
{{!}} 移動/編集/複製/譲渡 権<br />
{{!}}- <br />
{{!}} [[PERM_COPY]]<br />
{{!}} {{LSL Hex|0x00008000|32768}}<br />
{{!}} 複製権<br />
{{!}}- <br />
{{!}} [[PERM_MODIFY]]<br />
{{!}} {{LSL Hex|0x00004000|16384}}<br />
{{!}} 編集権<br />
{{!}}- <br />
{{!}} [[PERM_MOVE]]<br />
{{!}} {{LSL Hex|0x00080000|524288}}<br />
{{!}} 移動権<br />
{{!}}- <br />
{{!}} [[PERM_TRANSFER]]<br />
{{!}} {{LSL Hex|0x00002000|8192}}<br />
{{!}} 譲渡権<br />
{{!}}}<br />
テンプレートパラメータを併せたテーブル:<br />
<div><br />
{{Simple|in={{{!}}{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
{{!}}- <br />
{{!}} [[PERM_ALL]]<br />
{{!}} {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
{{!}} 移動/編集/複製/譲渡 権<br />
{{!}}- <br />
{{!}} [[PERM_COPY]]<br />
{{!}} {{LSL Hex|0x00008000|32768}}<br />
{{!}} 複製権<br />
{{!}}- <br />
{{!}} [[PERM_MODIFY]]<br />
{{!}} {{LSL Hex|0x00004000|16384}}<br />
{{!}} 編集権<br />
{{!}}- <br />
{{!}} [[PERM_MOVE]]<br />
{{!}} {{LSL Hex|0x00080000|524288}}<br />
{{!}} 移動権<br />
{{!}}- <br />
{{!}} [[PERM_TRANSFER]]<br />
{{!}} {{LSL Hex|0x00002000|8192}}<br />
{{!}} 譲渡権<br />
{{!}}}}}<br />
</div><br />
|}<br />
<br />
{|{{Prettytable}}<br />
|+'''Divタグ使用''' (常の動作するとはかぎりません)<br />
!実行前<br />
!実行後<br />
!実際の表<br />
|-<br />
|<pre>{|{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
|- <br />
| [[PERM_ALL]]<br />
| {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
| 移動/編集/複製/譲渡 権<br />
|- <br />
| [[PERM_COPY]]<br />
| {{LSL Hex|0x00008000|32768}}<br />
| 複製権<br />
|- <br />
| [[PERM_MODIFY]]<br />
| {{LSL Hex|0x00004000|16384}}<br />
| 編集権<br />
|- <br />
| [[PERM_MOVE]]<br />
| {{LSL Hex|0x00080000|524288}}<br />
| 移動権<br />
|- <br />
| [[PERM_TRANSFER]]<br />
| {{LSL Hex|0x00002000|8192}}<br />
| 譲渡権<br />
|}<br />
</pre><br />
|<pre><div><br />
{|{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
|- <br />
| [[PERM_ALL]]<br />
| {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
| 移動/編集/複製/譲渡 権<br />
|- <br />
| [[PERM_COPY]]<br />
| {{LSL Hex|0x00008000|32768}}<br />
| 複製権<br />
|- <br />
| [[PERM_MODIFY]]<br />
| {{LSL Hex|0x00004000|16384}}<br />
| 編集権<br />
|- <br />
| [[PERM_MOVE]]<br />
| {{LSL Hex|0x00080000|524288}}<br />
| 移動権<br />
|- <br />
| [[PERM_TRANSFER]]<br />
| {{LSL Hex|0x00002000|8192}}<br />
| 譲渡権<br />
|}<br />
</div><br />
</pre><br />
|<br />
テーブルの中にテーブル:<br />
<div><br />
{|{{Prettytable}}<br />
! 権限<br />
! 値<br />
! 解説<br />
|- <br />
| [[PERM_ALL]]<br />
| {{LSL Hex|0x7FFFFFFF|2147483647}}<br />
| 移動/編集/複製/譲渡 権<br />
|- <br />
| [[PERM_COPY]]<br />
| {{LSL Hex|0x00008000|32768}}<br />
| 複製権<br />
|- <br />
| [[PERM_MODIFY]]<br />
| {{LSL Hex|0x00004000|16384}}<br />
| 編集権<br />
|- <br />
| [[PERM_MOVE]]<br />
| {{LSL Hex|0x00080000|524288}}<br />
| 移動権<br />
|- <br />
| [[PERM_TRANSFER]]<br />
| {{LSL Hex|0x00002000|8192}}<br />
| 譲渡権<br />
|}<br />
</div><br />
|}<br />
<br />
==関数==<br />
一般的なテンプレート以外に、関数の詳細専用のテンプレートがあります。<br />
<br />
[[Template:LSL Function/ja|LSL_Function]]<br/><br />
このテンプレートは、いくつかのセクションを含んだ関数ドキュメントの構成を規定します。<br />
<br />
*情報を削除しないでください。<br />
*変数の順番は気にしないでください。<br />
*変数が多くても省くことは控えるべきです。<br />
*必要ではない未使用変数が含まれていても、先々の実装を見越して残しておくべきです。<br />
<br />
*全てのテンプレートは頭に記述してください。<br />
*セクションを追加すべきと思うなら、[[LSL Function Style]] に追加してください。(そして簡単なテンプレートを併せてください。)<br />
文法と要素の詳細な説明のために、[[Template:LSL Function/ja|LSL_Function]]を参照してください。<br />
<br />
{|{{Prettytable}}<br />
!ベース<br />
!例: [[llFrand]]<br />
|-<br />
|<pre><br />
{{LSL_Function/ja<br />
|func<br />
|func_id<br />
|func_sleep<br />
|sort<br />
|func_desc<br />
|func_footnote<br />
|return_type<br />
|return_text<br />
|p1_type|p1_name|p1_desc<br />
|p2_type|p2_name|p2_desc<br />
|p3_type|p3_name|p3_desc<br />
|p4_type|p4_name|p4_desc<br />
|p5_type|p5_name|p5_desc<br />
|p6_type|p6_name|p6_desc<br />
|p7_type|p7_name|p7_desc<br />
|p8_type|p8_name|p8_desc<br />
|p9_type|p9_name|p9_desc<br />
|p10_type|p10_name|p10_desc<br />
|p11_type|p11_name|p11_desc<br />
|p12_type|p12_name|p12_desc<br />
|constants<br />
|spec<br />
|caveats<br />
|examples<br />
|helpers<br />
|also_header<br />
|also_functions<br />
|also_tests<br />
|also_articles<br />
|also_events<br />
|also_footer<br />
|notes<br />
|mode<br />
|deprecated<br />
|permission<br />
|negative_index<br />
|cat1<br />
|cat2<br />
|cat3<br />
|cat4<br />
|cat5<br />
|cat6<br />
|location<br />
}}<br />
</pre><br />
|<pre><br />
{{LSL_Function/ja<br />
|sort=Frand<br />
|func=llFrand<br />
|func_id=8<br />
|func_sleep=0.0<br />
|func_energy=10.0<br />
|p1_type=float<br />
|p1_name=mag<br />
|p1_desc=いくつかの適正なfloat値<br />
|return_type=float<br />
|return_text=0.0からmagの範囲での擬似的にランダムな数値<br />
|spec=0.0からmag以下の範囲での擬似的にランダムな数値を返します。<br />
|caveats=このランダムな数値生成はあまり精密ではありません。<br />
|examples=<lsl><br />
default<br />
{<br />
touch_start(integer total_number)<br />
{<br />
// タッチしたとき、確率0.5で"Heads"と言い、<br />
// そのほかの場合は"Tails"といいます。 <br />
if ( llFrand(1.) < .5)<br />
llSay(0, "Heads");<br />
else<br />
llSay(0, "Tails");<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_header<br />
|also_functions<br />
|also_tests<br />
|also_events<br />
|also_articles<br />
|also_footer<br />
|notes=<br />
このランダムな数値生成はあまり精密ではありません。<br />
<br />
連続でのランダムな数値は、経過処理が共通しており、独立したものではありません。<br />
そのため、この擬似的にランダムな数字は、完全に予測可能なもしくは完全にランダムな結果が必要とする利用法には適していません。<br />
|cat1=Math<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}<br />
</pre><br />
|}<br />
<br />
==イベント==<br />
一般的なテンプレート以外に、イベントの詳細専用のテンプレートがあります。<br />
<br />
[[Template:LSL Event|LSL_Event]]<br />
いくつかのセクションを含んだ関数ドキュメントの構成を規定します。<br />
このテンプレートはいくつかのセクションを含んだ、イベントに関する文書を一通り書くための構成を規定します。使用されないセクションは通常は表示されません。<br />
<br />
文法と要素の詳細な説明のために、[[Template:LSL Event|LSL_Event]] を参照してください。<br />
<br />
==定数==<br />
定数の詳細専用のテンプレートがあります。<br />
<br />
[[Template:LSL Constant/ja|LSL_Constant]]<br />
このテンプレートはいくつかのセクションを含んだ、定数に関する文書を一通り書くための構成を規定します。使用されないセクションは通常は表示されません。<br />
<br />
文法と要素の詳細な説明のために、[[Template:LSL Constant/ja|LSL_Constant]] を参照してください。</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LSL_%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB&diff=1176691
LSL ポータル
2013-02-12T02:31:19Z
<p>Naoya Bellic: 「LSL カテゴリー」修正</p>
<hr />
<div>{{Multi-lang|1=LSL_Portal|2=/ja}} {{LSL Header/ja}} __NOTOC__<br />
== Second Life LSL ポータルへようこそ! ==<br />
LSL とは "リンデン スクリプト言語" (Linden Scripting Language) の略で、これは SL のオブジェクト (アバターの装備や HUD も含めて) の様々なふるまいを実現するために使われます。<br />
<br />
これは{{LL|SL}}のスクリプト言語である{{HoverText|LSL|Linden Scripting Language}}について、正確で開かれた情報の提供を目指しているコミュニティです。<br/><br />
あらゆるレベルのスクリプト作成者の助けになることを目指しています。<br />
<br />
自由に編集と追加を行ってください。(Wiki の編集については) [[Help:Contents/ja|Wiki ヘルプ]] を参照してください。[[How to choose a wiki]]も併せて参照しましょう。著作権の扱いが正当だと確信できない限り、他所で掲載されている情報をここへ転載しないでください。詳細は [[Talk:LSL Portal]] を参照してください。<br />
<br />
LSLを習得したいのであれば[[LSL Tutorial/ja|LSLチュートリアル]]を試してみましょう。<br />
<br />
----<br />
<br />
<div id="box"><br />
{| width="100%" rules="all" style="border-width: 0px; border-spacing: 5px;"<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" width="30%"|<br />
<br />
== LSL ポータル ==<br />
<div style="padding: 0.5em"><br />
* [[LSL Editing Primer/ja|LSL 編集入門]] - wikiの編集のしかた<br />
* [[LSL Portal Guidelines/ja|ポータルガイドライン]] - wikiですべきこと<br />
* [[LSL Portal To-do/ja|ポータル To-Do]] - wikiの編集がもっとも必要なところ<br />
* [[LSL Portal Translation Project|LSL ポータル翻訳プロジェクト]] - 翻訳の調整<br />
<br />
</div><br />
|height="1" width="30%" rowspan="2"|<br />
<br />
== LSL&nbsp;言語&nbsp;リファレンス ==<br />
<div style="padding: 0.5em"><br />
* {{LSLGC/ja|Constants}}<br />
* {{LSLGC/ja|Events}}<br />
* {{LSLGC/ja|Flow Control}}<br />
** {{LSLG/ja|for}}<br />
** {{LSLG/ja|if}}<br />
** {{LSLG/ja|while}}<br />
** {{LSLG/ja|do-while}}<br />
** {{LSLG/ja|jump}}<br />
** {{LSLG/ja|return}}<br />
** {{LSLG/ja|state}}<br />
* {{LSLGC/ja|Functions}}<br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja}}#mw-pages (page 1: A~L)]</span><br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja|from=L}}#mw-pages (page 2: L~V)]</span><br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja|from=V}}#mw-pages (page 3: V~Z)]</span><br />
** <span class="plainlinks">[[:Category:LSL_Functions/ID/ja|(内部 ID 順)]]</span><br />
* [[LSL 演算子|演算子]]<br />
* [[状態]]<br />
* {{LSLGC/ja|Types}}<br />
** {{LSLG/ja|integer}}<br />
** {{LSLG/ja|float}}<br />
** {{LSLG/ja|string}}<br />
** {{LSLG/ja|key}}<br />
** {{LSLG/ja|list}}<br />
** {{LSLG/ja|vector}}<br />
** {{LSLG/ja|rotation}}<br />
* [[LSL 変数|変数]]<br />
* [[LSL エラー|エラー]]<br />
</div><br />
|height="1" width="25%" rowspan="5"|<br />
<br />
== {{LSLGC/ja||LSL カテゴリー}} ==<br />
<div style="padding: 0.5em"><br />
{| border="0" cellspacing="0" cellpadding="0"<br />
|-valign="top"<br />
|width="50%"|<br />
* {{LSLGC/ja|Alpha}}<br />
* {{LSLGC/ja|Animation}}<br />
* {{LSLGC/ja|Attachment}}<br />
* {{LSLGC/ja|Avatar}}<br />
* {{LSLGC/ja|Camera}}<br />
* {{LSLGC/ja|Collision}}<br />
* {{LSLGC/ja|Color}}<br />
* {{LSLGC/ja|Controls}}<br />
* {{LSLGC/ja|Communications}}<br />
* {{LSLGC/ja|Dataserver}}<br />
* {{LSLGC/ja|Face}}<br />
* {{LSLGC/ja|Group}}<br />
* {{LSLGC/ja|Inventory}}<br />
* {{LSLGC/ja|Light}}<br />
* {{LSLGC/ja|Link}}<br />
* {{LSLGC/ja|List}}<br />
* {{LSLGC/ja|Math}}<br />
* {{LSLGC/ja|Needs Example}}<br />
* {{LSLGC/ja|Permissions}}<br />
* {{LSLGC/ja|Physics}}<br />
* {{LSLGC/ja|Prim}}<br />
* {{LSLGC/ja|Rotation}}<br />
* {{LSLGC/ja|Script}}<br />
* {{LSLGC/ja|Sensor}}<br />
* {{LSLGC/ja|Sound}}<br />
* {{LSLGC/ja|Text}}<br />
** {{LSLGC/ja|Chat}}<br />
** {{LSLGC/ja|Notecard}}<br />
** {{LSLGC/ja|String}}<br />
* {{LSLGC/ja|Teleport}}<br />
* {{LSLGC/ja|Texture}}<br />
* {{LSLGC/ja|Time}}<br />
* {{LSLGC/ja|Vehicle}}<br />
* {{LSLGC/ja|Video}}<br />
* {{LSLGC/ja|World}}<br />
|width="50%"|<br />
* {{LSLGC/ja|Avatar}}<br />
** {{LSLGC/ja|Animation}}<br />
** {{LSLGC/ja|Attachment}}<br />
** {{LSLGC/ja|Camera}}<br />
** {{LSLGC/ja|Controls}}<br />
** {{LSLGC/ja|Sit}}<br />
* {{LSLGC/ja|Communications}}<br />
** {{LSLGC/ja|Chat}}<br />
** {{LSLGC/ja|Dialog}}<br />
** {{LSLGC/ja|HTTP}}<br />
** {{LSLGC/ja|XML-RPC}}<br />
* {{LSLGC/ja|Detected}}<br />
** {{LSLGC/ja|Collision}}<br />
** {{LSLGC/ja|Touch}}<br />
** {{LSLGC/ja|Sensor}}<br />
* {{LSLGC/ja|Functions}}<br />
** {{LSLGC/ja|God Mode}}<br />
* {{LSLGC/ja|Inventory}}<br />
** {{LSLGC/ja|Creator}}<br />
** {{LSLGC/ja|Notecard}}<br />
** {{LSLGC/ja|Owner}}<br />
* {{LSLGC/ja|Media}}<br />
** {{LSLGC/ja|Prim Media}}<br />
** {{LSLGC/ja|Sound}}<br />
** {{LSLGC/ja|Video}}<br />
* {{LSLGC/ja|Movement}}<br />
** {{LSLGC/ja|Physics}}<br />
*** {{LSLGC/ja|Damping}}<br />
*** {{LSLGC/ja|Hover}}<br />
** {{LSLGC/ja|Rotation}}<br />
* {{LSLGC/ja|Object}}<br />
** {{LSLGC/ja|Link}}<br />
** {{LSLGC/ja|Vehicle}}<br />
* {{LSLGC/ja|Permissions}}<br />
** {{LSLGC/ja|Permissions/Asset|アセット}}<br />
** {{LSLGC/ja|Permissions/Script|スクリプト}}<br />
* {{LSLGC/ja|Prim}}<br />
** {{LSLGC/ja|Effects}}<br />
*** {{LSLGC/ja|Particles}}<br />
*** {{LSLGC/ja|Light}}<br />
** {{LSLGC/ja|Face}}<br />
*** {{LSLGC/ja|Alpha}}<br />
*** {{LSLGC/ja|Color}}<br />
*** {{LSLGC/ja|Texture}}<br />
* {{LSLGC/ja|Region}}<br />
** {{LSLGC/ja|Ground}}<br />
** {{LSLGC/ja|Parcel}}<br />
** {{LSLGC/ja|Security}}<br />
** {{LSLGC/ja|Time}}<br />
* {{LSLGC/ja|Script}}<br />
** {{LSLGC/ja|Error}}<br />
*** {{LSLGC/ja|Error/Math|演算エラー}}<br />
** {{LSLGC/ja|Keywords}}<br />
** {{LSLGC/ja|Math}}<br />
** {{LSLGC/ja|Types}}<br />
|}<br />
</div><br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1"|<br />
<br />
== デベロッパーリソース ==<br />
<div style="padding: 0.5em"><br />
* [[:Category:ユーザ定義関数|ユーザ定義関数]]<br />
* [[LSL Protocol/ja|プロトコル変換]]<br />
----<br />
* [[:Category:LSL Mentors|LSL メンター]]<br />
* [[:Category:LSL Teachers|LSL の先生]]<br />
* [[LSL_Help|ヘルプ]] (英語)<br />
----<br />
* [[LSL Write Once Debug Everywhere/ja|色々な場所でのLSLのデバッグ]]<br />
* [[LSL_Alternate_Editors/ja | 環境別オフワールドエディタ]]<br />
----<br />
* [[LSL Tutorial/ja|チュートリアル集]]<br />
* [[:Category:LSL サンプル|例集]]<br />
* [[LSL Style Guide/ja|スタイルガイド]]<br />
* [[LSL Script Efficiency/ja|効率化]]<br />
* [[LSL Script Memory/ja|容量]]<br />
* [[LSL Hacks | LSL Script Hacks]]<br />
* [[LSL Benchmarking Scripts/ja |ベンチマークスクリプト]]<br />
----<br />
* [[:Category:LSL Categorized Library|カテゴリー別ライブラリ]] (英語)<br />
* [[:Category:LSL Library/ja|ライブラリ]]<br />
----<br />
* [[LSL Test Harness/ja | インワールドテスト装置]]<br />
* [[LSL Useful Function WishList/ja|実用的な関数の要望一覧]]<br />
</div><br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" colspan="2"|<br />
{{LSL News|LSL ニュース (英語) }}<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" colspan="2"|<br />
{{LSL Bugs|LSL バグと修正パッチ (英語) }}<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|colspan="2"|<br />
<br />
== 他のLSL Wiki ==<br />
<div style="padding: 0.5em"><br />
* [http://www.lslwiki.net/lslwiki/ lslWiki] (オリジナル)<br />
<br />
=====OpenSim=====<br />
* [http://inworldz.com/izwiki/index.php/Scripting_Wiki InWorldz] - LSL Portal の派生<br />
* [http://wiki.spoton3d.com/scripting/contents SpotON3D] - LSL Portal の派生<br />
</div><br />
<br />
== スナップショットミラー ==<br />
<div style="padding: 0.5em;"><br />
</div><br />
|}<br />
</div><br />
[[Category:Portals/ja]]<br />
[[Category:Creation/ja]]<br />
{{LSLC/ja|}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Rotation/ja&diff=1176565
Rotation/ja
2013-02-06T04:21:08Z
<p>Naoya Bellic: リンク修正</p>
<hr />
<div>{{Multi-lang}}<br />
{{LSL Header/ja}}{{RightToc}}<br />
=Rotation=<br />
LSL の'''rotation'''型は3Dでの方位を表すのに用いられます。(型名を'''太字'''で書くように心がけています。)方位あるいは3Dアングルは{{LSLG/ja|quaternion|クォータニオン}}と呼ばれる数学的オブジェクトによって表されます。クォータニオンは4つの数値から成ると考えることができ、3つがオブジェクトの向いている方向を表し、4つめがその方向の周りでのオブジェクトの右か左への傾きを表します。クォータニオンを用いる主な利点は、[http://en.wikipedia.org/wiki/Gimbal_Lock ジンバルロック]の影響を受けないことです。<br />
<br />
クォータニオン数学の込み入った内部処理は{{LSLG/ja|quaternion|クォータニオン}}を参照してください。 <br />
<br />
rotationに関連する関数とイベントの一覧は{{LSLG/ja|Rotation Synopsis|Rotation Synopsis}}を参照してください。<br />
<br />
{{LSLG/ja|texture|テクスチャ}}の項にテクスチャの回転に関しての情報があります。<br />
<br />
==その他の表現==<br />
回転を表す他の手段は、<X,Y,Z>の3つからなる数値を、オブジェクトの各軸回りの回転量({{LSLG/ja|radians|ラジアン}})として用いることです。これは例えばエディットウィンドウで用いられていて、人々が思い描くのがわりと容易です。この3つの数値は'''vector'''であって'''rotation'''型では無いことに注意してください。ですがそれらは同じ情報を表すことができます。これは回転のオイラー角表現と呼ばれます。<br />
<br />
3番目の方法は、前方、上方、そして左側を指す3つのvectorを用いることです。実際には3つのうち2つのみが必要で、3つめの値は2つから求めます。<br />
<br />
回転を合成できるなどのもっともな理由があるので、4つの数値からなる'''rotation'''は優れているのですが、初心者が理解するのはより難しいです。幸いにも、実際の''rotation''の内部表現で何かすることはめったに必要ありませんし、また簡単にこれらの間を変換する関数があります。<br />
<br />
==右手ルール==<br />
LSLでは全ての回転が'''右手ルール'''に沿って行われています。右手で人差し指をx軸の正方向へ伸ばしてみてください。中指を人差し指から直角に伸ばすと、y軸の正方向を指します。そして親指を両指から直角に伸ばすとz軸の正方向を指します。あなたがオブジェクトを編集するとき、3色の軸の矢印は各軸(X: 赤, Y: 緑, Z: 青)の正方向を示します。<br />
<br />
http://ja.wikipedia.org/wiki/右手の法則<br />
<br />
さて、右手はまだ戻さないでください。正方向の回転の向きを求めるという別の使い道があります。右手を握り、親指を立てて好きな軸の正方向を指します。あなたの他の指は正方向の回転の向きに曲がります。x,y,z軸周りの回転は特に乗り物において、しばしばロール、ピッチ、ヨーとして示されます。<br />
<br />
http://ja.wikipedia.org/wiki/ローリング ・ http://ja.wikipedia.org/wiki/ピッチング ・ http://ja.wikipedia.org/wiki/ヨーイング<br />
<br />
==Rotationの合成==<br />
'''Rotation'''を合成するには、'''掛け算'''と'''割り算'''の演算子を用います。'''rotation'''への足し算もしくは引き算の演算子は予期する動作にはならないので、使おうとはしないでください。'''掛け算'''の演算子は<br />
正方向の回転に、'''割り算'''の演算子は負方向の回転に用いられます。X.s = -X.sのようにして成分sを直接反転させて回転を反転させることもできます。<br />
他の{{LSLG/ja|float|float}}のような型と異なり、計算の順番([http://ja.wikipedia.org/wiki/%E4%BA%A4%E6%8F%9B%E6%B3%95%E5%89%87 非可換])は重要です。<br />
その理由は簡単です:回転させる順番はRLにおいても重要です。例えば、あなたが4枚の羽根のついたダーツを持っていたとして、その尾部を原点とし、狙う方向を正のX方向としてX軸上に置き、羽根をZ軸とY軸上に沿わせて、ダーツの軸とその軸が一直線に並んだ状態を回転<0, 0, 0>とします。これをX軸回りに45度、Y軸周りに30度、異なった順番で回転させてみます。<br />
<br />
まずX軸回りに45度回転させた後ではダーツはまだX軸方向を向いていて動いていない。羽根は45度、その軸で回転する。次に、Y軸回りの30度回転はXZ平面上でX軸から30度の方向にダーツを動かす。(回転の右手ルールが、Y回りの正方向への小さな回転は位置を下げることを意味するのを覚えていてください)ダーツは回り始めたのと同じ垂直面上で30度下がることになる。しかし、それ自身の長い軸で回るので羽根はもう上下しません。<br />
<br />
別のやり方として最初にY軸周りに30度回転するとダーツはXZ平面上で回転しますが、X軸上にはダーツがもう無いのに注目してください。そのX軸と空間上のX軸はもう並ぶことはありません。今、X軸での45度回転はダーツの先端をX軸の正領域に沿った軸による30度の円錐に合わせて、その尾部で45度右斜め上へ旋回させる。あなたがX軸から見下ろしていると、それはX軸の下から30度の位置から右斜め上へ、XZ平面の外でXY平面の第一象限の下の位置へ回転するようにダーツの羽根は旋回します。<br />
<br />
これは明らかに最初の回転とは異なった結果ですが、回転の順番だけが変化しただけです。<br />
<br />
一定の回転を行うために、ラジアンでX,Y,Zの角度を要素とする{{LSLG/ja|vector}}(オイラー角と呼ばれる)を作成し、{{LSLG/ja|llEuler2Rot|llEuler2Rot}}関数を使ってそれを'''rotation'''に変換して'''rotation'''値を定義する必要があります。あなたは回転を直接作成することもできます。実数部は回転角の1/2のcosです。ベクトルの部分は正規化した回転軸に回転角の1/2のsinを掛けたものです。<br />
rotationから{{LSLG/ja|vector|vector}}のオイラー角回転へは{{LSLG/ja|llRot2Euler|llRot2Euler}}を使います。<br />
<br />
'''NOTE:'''LSLでの角度はラジアンであって度ではありませんが、組み込み定数[[#RAD_TO_DEG|RAD_TO_DEG]] と [[#DEG_TO_RAD|DEG_TO_RAD]]を使うことで簡単に変換できます。X軸周りの30度の'''rotation'''に対して以下のように使うこともできます:<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation rot30X ||= {{LSLG/ja|llEuler2Rot}}(<30, 0,0> * DEG_TO_RAD);||// 度をラジアンに変換してから、{{LSLG/ja|vector|vector}}をrotationのrot30xに代入します。<br />
|-<br />
|{{LSLG/ja|vector}} vec30X ||= {{LSLG/ja|llRot2Euler}}(rot30X );||// rotationから{{LSLG/ja|vector|vector}}へ逆変換します。(値はラジアンとなるでしょう。)<br />
|}<br />
</div></div><br />
<br />
==オイラーベクトルでの回転の順番==<br />
<br />
上述の議論より1つ以上の軸で回転する場合、それらの回転する順番が重要となるのは明らかです。''オイラー''の議論ではこれはちょっと少しごまかしました。3つの軸周りの個々の回転は総合的な''回転''を定義します。しかし、それでは疑問が浮かびます: どんな軸の順番で回転しているのか? その答えはグローバル座標系では'''Z,Y,X'''です。オブジェクトを''オイラー''表現を用いて1つ以上の軸で同時に回転させたい場合、現在の''オイラー''{{LSLG/ja|vector|vector}}をZ, Y, X回転の順に決定し、回転の合成またはオブジェクトへ回転を適用させるための'''rotation'''を得るために{{LSLG/ja|llEuler2Rot|llEuler2Rot}}関数を使います。<br />
<br />
==ローカル vs グローバル(ワールド)rotation==<br />
<br />
ワールドの'''rotation'''とオブジェクト自体のローカルの'''rotation'''とを区別することは重要です。エディタでは、あなたは一方からもう片方へと切り替えることができます。 スクリプトではあなたは要求する振る舞いを得るために一方から他方へと変換しなければなりません。<br />
<br />
'''ローカル'''の回転は、オブジェクトがワールド内でどんな回転をしているかに関わらないオブジェクト自身の前後、左右、上下に当てはめられた軸周りでの回転です。'''グローバル'''の回転は南北、東西、上下のワールドの軸周りでの回転です。あなたはプリムの回転の違いを見ることができ、編集やローカルとグローバルの軸の設定を色のついた矢印が変わるの注意しながら変更することができます。<br />
<br />
LSLでは'''ローカル'''と'''グローバル'''の回転の違いは、ステートメント内で'''rotation'''が評価される順番の違いとなります。<br />
<br />
これは、30度の一定の'''rotation'''をオブジェクトの最初の'''rotation'''(myRot)の左側につけることで'''ローカル'''での30度の回転を行います。それは上述のダーツをその長軸の周りに30度にねじる最初の例の最初の操作に似ています。<br />
<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation localRot = ||rot30X * myRot;||// ワールドの回転に一定の回転をかけることでローカルの回転を行う。<br />
|}<br />
</div></div><br />
<br />
'''グローバル'''の回転をするためには同じ'''rotation'''を使いますが、順番は逆にしてください。これはダーツが上昇回転してワールドのX軸周りに右に回る2番目の例の2番目の操作に似ています。この場合、既存のrotation(myRot)はグローバルのX軸の周りで30度回転します。<br />
<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation globalRot || = myRot * rot30X;||// 一定の回転をワールドの回転にかけることでグローバルの回転を行う。<br />
|}<br />
</div></div><br />
<br />
==rotationの結合について考える他の方法==<br />
<br />
あなたは'''ローカル'''と'''グローバル'''の違いについて、括弧以外は左から右へと評価されるという'''rotation'''の評価順序から考えてみたいかもしれません。<br />
<br />
localRotの場合は、<0, 0, 0>から始まって、rot30Xが最初に行われ、ワールドのX軸回りにプリムが回転し、回転の始まる時点からローカルとグローバルの軸はオブジェクトのローカルのX軸に沿った同一の回転をします。<br />
そして、2つめの'''rotation'''であるmyRotは、プリムをオリジナルのrotationで回転させましたが、さらにX軸の回転が焼きつきます。<br />
これは、プリムの回転がそのX軸に沿ってYとZの'''rotation'''が変わらないローカル回転のようになります。<br />
<br />
globalRotの場合は、再び<0, 0, 0>から始まって、まずオブジェクトがオリジナルのrotation(myRot)で回転しますが、オブジェクトの軸とワールドの軸はもはや一致しません!そして、2つめの'''rotation'''であるrot30xは、まさにローカルの場合と同様に、オブジェクトをワールドのX軸回りに30度回転しますが、その効果はオブジェクトをワールドのX軸に沿って円錐を回転させます。オブジェクトのX軸とワールドのX軸はこの時点では一致しません。プリムはワールドのX軸の沿って30度回転するように見えます。そのため'''global''' rotationのようになります。<br />
<br />
'''rotation'''の割り算は、反対方向のrotationにする効果があり、330度のrotationによる掛け算は、30度の'''rotation'''による割り算と同じです。<br />
<br />
==rotationを使う==<br />
<br />
'''rotation R'''のそれぞれの要素には'''R.x, R.y, R.zとR.s''' (R.w'''ではありません''')からアクセスできます。スカラ部分のR.sは回転角の2分の1のコサインです。ベクタ部分(R.x,R.y,R.z)は正規化した回転軸と回転角の2分の1のサインの積です。x,y,z要素の符号を反転することにより(または、sの符号を反転させることにより)逆の'''rotation'''を作ることができます。余談ですが、{{LSLG/ja|float|float}}値の格納場所として'''rotation'''を使うことも可能です。各'''rotation'''は4つの{{LSLG/ja|float|float}} 値を格納し、'''rotation'''から成る{{LSLG/ja|list|list}}は{{LSLG/ja|float|float}}の集まりの{{LSLG/ja|list|list}}よりもさらに効率的ですが中身を覗くのはコストが高いでしょう。<br />
<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation rot30X ||= {{LSLG/ja|llEuler2Rot}}(<30, 0,0> * [[#DEG_TO_RAD|DEG_TO_RAD]] );||// rotation定数を作成する<br />
|-<br />
|rotation rotCopy ||= rot30X;||// rotCopyに4つのfloat要素全てをコピーします<br />
|-<br />
|float X ||= rotCopy.x;||// rotationの個々の要素を出力します<br />
|-<br />
|float Y ||= rotCopy.y;||<br />
|-<br />
|float Z ||= rotCopy.z;||<br />
|-<br />
|float S ||= rotCopy.s;||<br />
|-<br />
|rotation anotherCopy ||= <X, Y, Z, S>;||// 要素から他のrotationを作ります<br />
|}<br />
</div></div><br />
<br />
<br />
ゼロ回転の組み込み定数として[[#ZERO_ROTATION|ZERO_ROTATION]]があり、'''rotation R'''を反転させたい場合は[[#ZERO_ROTATION|ZERO_ROTATION]]を'''R'''で割ります。上記の注意として、これはまずゼロ位置への回転となり、そして除算なので元の'''rotation'''の反対向きへの回転となり、その結果逆回転します。<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation rot330X ||= <-rot30X.x, -rot30X.y, -rot30X.z, rot30X.s>;||// 回転の反転 - 注意 要素sの符号は反転していません<br />
|-<br />
|rotation another330X ||= [[#ZERO_ROTATION|ZERO_ROTATION]] / rot30X;||// 除算による回転の反転、rot330Xと同じ結果となります<br />
|-<br />
|rotation yetanother330X ||= <rot30X.x, rot30X.y, rot30X.z, -rot30X.s>;||// まったく同じではありませんが同じ結果となります。<br />
|}<br />
</div></div><br />
<br />
==単一またはルートプリム vs リンクプリム vs アタッチメント ==<br />
<br />
単一またはリンクプリムの回転について語る理由として、どんなビークル全体の回転があっても対応してドアが動くという望ましい動きするビークルのドアなどのためです。グローバルな回転でこれを行える間はそれはとても退屈でしょう。通常、プリムが扱える座標系には単独、{{LSLG/ja|linkset}}の一部、{{LSLG/ja|attachment}}の一部の3つがあります。プリム単独のとき、すなわち{{LSLG/ja|linkset}}ではない場合は、ルートプリムのように振舞います; {{LSLG/ja|attachment}}の一部の場合は、それは異なった少し壊れている振る舞いをします。<br />
<br />
{{LSLRotGetSet/ja}}<br />
<br />
==Vectorの回転==<br />
<br />
LSLでは{{LSLG/ja|vector|vector}}を回転させるのは回転の中心がオブジェクトの中心ではないオブジェクトを弧や円状に動かしたいときにとても役立ちます。<br />
<br />
これはとても複雑に思えますが、これにはここで目にするより多くのことがあります。上述の[[#Combining Rotations|ダーツ]]に関する議論を思い出して、物理的なダーツを元点がダーツの尾部にありダーツの先端の位置をX,Y,Z要素とする{{LSLG/ja|vector|vector}}に置き換えてみてください。ダーツの尾部回りの回転はダーツの先端をダーツの尾部を中心とした弧に沿って動かします。まさに同様にプリムの中心からずれを表す{{LSLG/ja|vector|vector}}の回転は同じ弧を通りプリムを回転させます。これは{{LSLG/ja|vector|vector}}によりプリムの中心からずれた位置の周りでのオブジェクトの回転に見えます。<br />
<br />
<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation rot6X ||= {{LSLG/ja|llEuler2Rot}}(<30, 0, 0> * [[#DEG_TO_RAD|DEG_TO_RAD]] );||// [[Viewer_coordinate_frames/ja#Local|local]]のX軸回りに30度するrotationの定数を作成する<br />
|-<br />
|vector offset ||= <0, 1, 0>;||// [[Viewer_coordinate_frames/ja#Local|local]]のY方向へ正の向きで1mのオフセットを作成する<br />
|-<br />
|vector rotatedOffset || = offset * rot6X;||// rotationによる動きを得るためにオフセットを回転する<br />
|-<br />
|vector newPos || = {{LSLG/ja|llGetPos}}() + (offset - rotatedOffset) * {{LSLG/ja|llGetRot}}();||// 回転したオフセット分だけプリムの位置を動かします<br />
|-<br />
|rotation newRot|| = rot6X * {{LSLG/ja|llGetRot}}();||// オフセット点を向くために回転を変更します<br />
|}<br />
</div></div><br />
<lsl><br />
//-- same as:<br />
llSetPrimitiveParams( [PRIM_POSITION, llGetPos() + (gPosOffset - gPosOffset * gRotArc) * llGetRot(),<br />
PRIM_ROTATION, gRotArc * llGetRot()] );<br />
</lsl><br />
'''注意:''' これによる移動はプリムを地下や10m以上移動させる結果にもなることを忘れないでください。<br />
<br />
オブジェクトの現在の向きに対応した点を得る(rezzorsなどに使います)<br />
<div id="box"><div style="padding: 0.5em"><br />
{| cellpadding=0 cellspacing=0<br />
|-<br />
|rotation rotFacing ||= {{LSLG/ja|llGetRot}}();||// オブジェクトの現在のrotationを得る<br />
|-<br />
|vector offset ||= <0, 0, 1>;||// [[Viewer_coordinate_frames/ja#Local|local]]のZ方向へ正の向きに1mのオフセットを作成する<br />
|-<br />
|vector rotatedOffset || = offset * rotFacing;||// 対応するオブジェクトの回転へオフセットを回転する<br />
|-<br />
|vector correctOffset || = {{LSLG/ja|llGetPos}}() + rotatedOffset;||// ローカルオフセットの[[Viewer_coordinate_frames/ja#Region|region]]上の位置を得る<br />
|}<br />
</div></div><br />
<lsl><br />
//-- same as:<br />
vector correctOffset = llGetPos() + offset * llGetRot();<br />
</lsl><br />
<br />
==便利なスニペット==<br />
<lsl>integer IsRotation(string s)<br />
{<br />
list split = llParseString2List(s, [" "], ["<", ">", ","]);<br />
if(llGetListLength(split) != 9)//リスト長のチェックをしないと次のテストが正しく動きません<br />
return 0;<br />
return !((string)((rotation)s) == (string)((rotation)((string)llListInsertList(split, ["-"], 7))));<br />
//it works by trying to flip the sign on the S element of the rotation,<br />
//if it works or breaks the rotation then the values won't match.<br />
//if the rotation was already broken then the sign flip will have no affect and the values will match<br />
//we cast back to string so we can catch negative zero which allows for support of <0,0,0,0><br />
}//Strife Onizuka</lsl><br />
<br />
==定数==<br />
=== [[ZERO_ROTATION/ja|ZERO_ROTATION]] ===<br />
ZERO_ROTATION = <0.0, 0.0, 0.0, 1.0>;<br/><br />
オイラー角の<0.0, 0.0, 0.0>に相当するrotation定数<br />
=== [[DEG_TO_RAD/ja|DEG_TO_RAD]] ===<br />
DEG_TO_RAD = 0.01745329238f;<br/><br />
角度(°)から乗算でラジアン角を得るときのfloat定数<br />
<br />
=== [[RAD_TO_DEG/ja|RAD_TO_DEG]] ===<br />
RAD_TO_DEG = 57.29578f;<br/><br />
ラジアン角から乗算で角度(°)を得るときのfloat定数<br />
<br />
{{LSLC/ja|Types}}<br />
{{LSLC/ja|Math}}<br />
{{LSLC/ja|Math/3D}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81%E3%83%A1%E3%83%B3%E3%83%88&diff=1176564
Category:LSL アタッチメント
2013-02-06T04:02:43Z
<p>Naoya Bellic: 定数群追加</p>
<hr />
<div>{{Multi-lang|Category:LSL Attachment}}{{LSL Header/ja}}<br />
{{LSLC/ja|}}<br />
{{LSL_Constants_Attachment/ja|nc=*|ni=*}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3&diff=1176501
クォータニオン
2013-02-04T09:50:05Z
<p>Naoya Bellic: </p>
<hr />
<div>{{Multi-lang|Quaternion|/ja}}<br />
{{#vardefine:ml-cat|/LSL}}{{Help/ja|Glossary=*}}<br />
{{LSL Header/ja}}{{LSLC|Types}}{{LSLC|Keywords|quaternion}}<br />
==クォータニオン==<br />
<br />
クォータニオンはLSLのコンパイラでrotationと同じ意味でサポートされており、{{LSLG/ja|rotation}}と同義です。<br />
<br />
<br />
<br />
== 定義と詳細: ==<br />
<br />
クォータニオンは複素数を一般化したもので、19世紀半ばにウィリアム・ローワン・ハミルトンによって考案されました。複素数は実数 a と純虚数 bi の和です。i は次のように定義されます。<br />
<br />
i<sup>2</sup> = -1<br />
<br />
四元数を構築するため、次の仮定のもとに一般的な虚数単位 j と k を導入します。<br />
<br />
j<sup>2</sup> = -1; k<sup>2</sup> = -1; ijk = -1<br />
<br />
これらの基礎的な定義から、一般化された虚数単位の積についての関係を導くことができます。<br />
<br />
ij = k; jk = i; ki = j<br />
<br />
さらに、<br />
<br />
ji = -k; kj = -i; ik = -j<br />
<br />
つまり、クォータニオンの乗算は交換可能ではありません。交換可能でない演算は今でこそ行列代数やベクトルおよびテンソル解析でよく知られている特徴ですが、発明当時、この考え方は革命的でした。 <br />
<br />
クォータニオンの一般的な形は<br />
<br />
Q = a + bi + cj + dk<br />
<br />
ここで a、b、c は通常の実数です。クォータニオンの加算は簡単で、同類項をまとめるだけです。<br />
<br />
(a + bi + cj + dk) + (e + fi + gj + hk) = (a+e) + (b+f)i + (c+g)j + (d+h)k<br />
<br />
2つのクォータニオンの積は上述の積の関係を用いて求めることができます。虚数単位は交換可能でないので i、j、k の順序はそのままにしておきましょう。<br />
<br />
QR = (a + bi + cj + dk)(e + fi + gj + hk) =<br />
<br />
ae + afi + agj + ahk +<br />
bei - bf + bgij + bhik +<br />
cej + cfji - cg + chjk +<br />
dek + dfki + dgkj - dh<br />
<br />
=<br />
ae + afi + agj + ahk +<br />
bei - bf + bgk - bhj +<br />
cej - cfk - cg + chi +<br />
dek + dfj - dgi - dh<br />
<br />
= (ae - bf - cg - dh) + (af + be + ch - dg)i + (ag - bh + ce + df)j + (ah + bg - cf + de)k<br />
<br />
(そして、あなたは複素数の乗算は面倒だと思うでしょう!)<br />
<br />
今、私たちは相似な共役複素数を定義することができます。(*表記を使用しますが、他の表記も一般的です)<br />
<br />
Q* = a - bi - cj - dk<br />
<br />
クォータニオンと、その共役複素数の積は:<br />
<br />
QQ* = (a + bi + cj + dk)(a - bi - cj - dk) =<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>) + (-ab + ba - cd + dc)i + (-ac + bd + ca - db)j + (-ad - bc + cb + da)k<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>)<br />
<br />
これはユークリッドノルムの2乗のように見えます。3つの組(b、c、d)をベクトル V とすると、この2乗されたノルムは書き直すことができ、<br />
<br />
QQ* = a<sup>2</sup> + ||V||<sup>2</sup><br />
<br />
なので、1つ目の項 a はクォータニオンのスカラー部または実部、3つの組(b、c、d)はベクトル部と呼ばれます。<br />
<br />
== クォータニオンと回転: ==<br />
<br />
私たちがクォータニオンに関心がある理由は、Second Life が回転を表わすために使用しているからです。どのように行われているのでしょうか? 具体的にベクトル V = (b,c,d)、実部がゼロのクォータニオンで考えてみましょう。<br />
<br />
Q(V) = 0 + bi + cj + dk<br />
<br />
他のクォータニオンをQを掛けた場合、一般的に実部はゼロではありません。私たちはベクトルをベクトルではないクォータニオンに変換しました。回転にはとても見えませんね。でも、片方からあるクォータニオン z を掛け、その反対から z の逆数 z<sup>-1</sup> を掛けると、実部がゼロの結果を得ることができます。<br />
<br />
Re[zQ(V)z<sup>-1</sup>] = 0<br />
<br />
-- すなわちベクトルからベクトルへの写像です。このことを確認するには、積の計算式から、2つのクォータニオンの積の実部は乗算の順序に対して不変であることに注目して、<br />
<br />
Re[QR] = Re[RQ].<br />
<br />
したがって、写像中の1番目と(2番目*3番目)のクォータニオンについて、実部を変えることなく順序を変えることができます。<br />
<br />
Re[z(Q(V)z<sup>-1</sup>)] = Re[(Q(V)z<sup>-1</sup>)z] = Re[Q(V)(z<sup>-1</sup>z)] = 0<br />
<br />
よって Q の実部がゼロのとき、クォータニオンの乗算でも結合法則を満たすことが分かりました。あるクォータニオンを左から掛け、さらに右からその逆数を掛けることは、z とその共役複素数を掛けるこの演算ですよね。線形代数に詳しい読者は、回転行列による対角化に似ていることに気付くのではないでしょうか。 <br />
<br />
では、あるクォータニオンとその共役なクォータニオンを掛けた結果、元のクォータニオンに戻るための条件は何でしょうか?<br />
<br />
zQz<sup>-1</sup> = Q ゆえに zQ = Qz<br />
<br />
(これは最初の式の両辺に右から z を掛けることで簡単に示せます。) いつの間にクォータニオンが交換可能になったのでしょう? クォータニオンの積の式から、実部は交換可能であることが分かっていて、i の項については、<br />
<br />
(af + be + ch - dg)i + ... = (eb + fa + gd - hc)i + ...<br />
<br />
この乗算は ch - dg = 0 または c/d = g/h のとき交換可能です。すなわち、両方のクォータニオンのベクトル部のjk-平面における勾配が一致するときです。何も i が特別なわけではなく、ij-平面、ik-平面についても同様です。つまり2つのクォータニオンのベクトル部が同じ向き、言い換えると同一直線上にあるときに交換可能です。<br />
<br />
このことを示すのは難しくなく、共役複素数は線形で(合計してから複素共役を取っても、複素共役を取ってから合計しても同じです)、共役を取っても Q のベクトル部の大きさは変わらないことは明らかです。軸がベクトルと一致する場合に限り、ベクトルの大きさを変えない一次変換とはどのようなものでしょうか? それは……もちろん回転です。つまり Q に z と z の共役複素数を掛けたものは、Q のベクトル部を z のベクトル部を軸として回転させたものだったのです。<br />
<br />
簡単な例で試してみましょう。ベクトル V = (1,0,0) と、対応するクォータニオン Q = 0 + i を考えます。z軸周りの回転を表すクォータニオン z は a + ck と書けるので、共役複素数は、<br />
<br />
Q' = (a + ck)(i)(a + ck)<sup>-1</sup><br />
<br />
z の逆数とは何でしょう? これはクォータニオン z の大きさが 1 となるように a と c を選ぶことによって、逆数と共役複素数が同じであることが簡単に分かります。<br />
<br />
len(z) = 1 = zz* ゆえに z* = z<sup>-1</sup> <br />
<br />
よって、書き直すと<br />
<br />
Q' = (a + ck)(i)(a - ck) = (a + ck)(ai + cj) = a<sup>2</sup>i + acj + caj - c<sup>2</sup>i = (a<sup>2</sup>- c<sup>2</sup>)i + 2acj<br />
<br />
<br />
条件から<br />
<br />
a<sup>2</sup>+ c<sup>2</sup> = 1 <br />
<br />
ゆえに、ある角度θを用いて書くと a = cos(θ/2), b = sin(θ/2) (1/2を掛けた理由はもうすぐわかります。)<br />
<br />
i と j の項はそれぞれ下記を満たします。<br />
<br />
cos<sup>2</sup>(θ/2) - sin<sup>2</sup>(θ/2) = cos(θ)<br />
<br />
かつ<br />
<br />
2 cos(θ/2) sin(θ/2) = sin(θ)<br />
<br />
<br />
これは確かに k (z) 軸周りにθだけ回転させた回転を表しています。一般化すると、ベクトル V を軸 A = (b,c,d) (正規化されていると仮定します。つまり ||A|| = 1 です。)周りに角度θだけ回転させるクォータニオンは<br />
<br />
z = cos(θ/2) + sin(θ/2)A = cos(θ/2) + sin(θ/2){bi + cj + dk}<br />
<br />
すると、 Q = 0 + V の共役複素数と z について、<br />
<br />
Q' = zQz*<br />
<br />
ベクトル部だけを抜き出すと<br />
<br />
Q' = 0 + V'<br />
<br />
V' の正体はベクトル V を回転させたものです。 <br />
<br />
<br />
Second Life では、回転を表わすクォータニオンは浮動小数点数4つで表現されます。最初の3つがベクトル部で、最後の1つがスカラー部です。つまり Q = <Q.x, Q.y, Q.z, Q.s> となっています。 Second Lifeの地域における方角について、東西方向がx軸、南北方向がy軸、上下方向がz軸となっています。x は 虚軸の i 軸への、y は j への、z は k への写像でしたね。これは右手系座標であることがわかります。右手系座標とは右手と方向付けが同じで、手を開いて x 軸のプラスの方角(東の方角)へ向けたとき、曲げた指が y 軸のプラス(北の方角)を向き、親指を手のひらの成す平面と曲げた指に垂直に立てると z 軸のプラス(上方向)を向きます。回転角はラジアン単位で -π から π (パイ)までと決められています。つまり反時計回り(正の向き - x 軸のプラス側(東)から y 軸のプラス側(北)を通って x 軸のマイナス側(西)へ向かう向き)に半回転、または時計回り(負の向き - x 軸のプラス側(東)から y 軸のマイナス側(南)を通って x 軸のマイナス側(西)へ向かう向き)に半回転まで回転させることができ、回転角が3.141ラジアンもしくは180度のときには2つの向きによる回転は同じ結果になります。例えば西を向いている面を z 軸周りに反時計回りで90度回転させる(南を向く) rotation は、<br />
<br />
<0, 0, 0.707, 0.707><br />
<br />
sinπ/4 と cosπ/4 (π/4 は回転角の半分) は両方とも 1/2<sup>0.5</sup> だからです。 <br />
<br />
[[Image:example_rotation.jpg]]<br />
<br />
<br />
同じく、回転させて東に向けるには、<br />
<br />
<0, 0, 1, 0> と <0, 0, -1, 0> のどちらでもいいです。<br />
<br />
オブジェクトを右に傾ける(x 軸の周りに反時計回りで回転させる)、例えば90度傾けるには、<br />
<br />
<0.707, 0, 0, 0.707><br />
<br />
同じ角度、前に倒す(y 軸周りに時計回りで回転させる)には、<br />
<br />
<0, -0.707, 0, 0.707><br />
<br />
重要なのは、ベクトルの写像はクォータニオンによる回転と一対一対応しないということです。例えば下の図は x 軸から y 軸への何通りかの回転です。異なる回転は最終的な(y と z に)垂直な方向の向きが異なる結果になります。 <br />
<br />
<br />
[[Image:Alternate_rotations.jpg]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=%E5%9B%9B%E5%85%83%E6%95%B0&diff=1176500
四元数
2013-02-04T09:44:25Z
<p>Naoya Bellic: リダイレクト</p>
<hr />
<div>#Redirect [[クォータニオン]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Quaternion/ja&diff=1176499
Quaternion/ja
2013-02-04T09:11:20Z
<p>Naoya Bellic: リダイレクト</p>
<hr />
<div>#Redirect [[クォータニオン]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3&diff=1176498
クォータニオン
2013-02-04T09:07:32Z
<p>Naoya Bellic: 新規作成</p>
<hr />
<div>{{Multi-lang|Quaternion|/ja}}<br />
{{#vardefine:ml-cat|/LSL}}{{Help |Glossary=*}}<br />
{{LSL Header}}{{LSLC|Types}}{{LSLC|Keywords|quaternion}}<br />
==クォータニオン==<br />
<br />
クォータニオンはLSLのコンパイラでrotationと同じ意味でサポートされており、{{LSLG/ja|rotation}}と同義です。<br />
<br />
<br />
<br />
== 定義と詳細: ==<br />
<br />
クォータニオンは複素数を一般化したもので、19世紀半ばにウィリアム・ローワン・ハミルトンによって考案されました。複素数は実数 a と純虚数 bi の和です。i は次のように定義されます。<br />
<br />
i<sup>2</sup> = -1<br />
<br />
四元数を構築するため、次の仮定のもとに一般的な虚数単位 j と k を導入します。<br />
<br />
j<sup>2</sup> = -1; k<sup>2</sup> = -1; ijk = -1<br />
<br />
これらの基礎的な定義から、一般化された虚数単位の積についての関係を導くことができます。<br />
<br />
ij = k; jk = i; ki = j<br />
<br />
さらに、<br />
<br />
ji = -k; kj = -i; ik = -j<br />
<br />
つまり、クォータニオンの乗算は交換可能ではありません。交換可能でない演算は今でこそ行列代数やベクトルおよびテンソル解析でよく知られている特徴ですが、発明当時、この考え方は革命的でした。 <br />
<br />
クォータニオンの一般的な形は<br />
<br />
Q = a + bi + cj + dk<br />
<br />
ここで a、b、c は通常の実数です。クォータニオンの加算は簡単で、同類項をまとめるだけです。<br />
<br />
(a + bi + cj + dk) + (e + fi + gj + hk) = (a+e) + (b+f)i + (c+g)j + (d+h)k<br />
<br />
2つのクォータニオンの積は上述の積の関係を用いて求めることができます。虚数単位は交換可能でないので i、j、k の順序はそのままにしておきましょう。<br />
<br />
QR = (a + bi + cj + dk)(e + fi + gj + hk) =<br />
<br />
ae + afi + agj + ahk +<br />
bei - bf + bgij + bhik +<br />
cej + cfji - cg + chjk +<br />
dek + dfki + dgkj - dh<br />
<br />
=<br />
ae + afi + agj + ahk +<br />
bei - bf + bgk - bhj +<br />
cej - cfk - cg + chi +<br />
dek + dfj - dgi - dh<br />
<br />
= (ae - bf - cg - dh) + (af + be + ch - dg)i + (ag - bh + ce + df)j + (ah + bg - cf + de)k<br />
<br />
(そして、あなたは複素数の乗算は面倒だと思うでしょう!)<br />
<br />
今、私たちは相似な共役複素数を定義することができます。(*表記を使用しますが、他の表記も一般的です)<br />
<br />
Q* = a - bi - cj - dk<br />
<br />
クォータニオンと、その共役複素数の積は:<br />
<br />
QQ* = (a + bi + cj + dk)(a - bi - cj - dk) =<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>) + (-ab + ba - cd + dc)i + (-ac + bd + ca - db)j + (-ad - bc + cb + da)k<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>)<br />
<br />
これはユークリッドノルムの2乗のように見えます。3つの組(b、c、d)をベクトル V とすると、この2乗されたノルムは書き直すことができ、<br />
<br />
QQ* = a<sup>2</sup> + ||V||<sup>2</sup><br />
<br />
なので、1つ目の項 a はクォータニオンのスカラー部または実部、3つの組(b、c、d)はベクトル部と呼ばれます。<br />
<br />
== クォータニオンと回転: ==<br />
<br />
私たちがクォータニオンに関心がある理由は、Second Life が回転を表わすために使用しているからです。どのように行われているのでしょうか? 具体的にベクトル V = (b,c,d)、実部がゼロのクォータニオンで考えてみましょう。<br />
<br />
Q(V) = 0 + bi + cj + dk<br />
<br />
他のクォータニオンをQを掛けた場合、一般的に実部はゼロではありません。私たちはベクトルをベクトルではないクォータニオンに変換しました。回転にはとても見えませんね。でも、片方からあるクォータニオン z を掛け、その反対から z の逆数 z<sup>-1</sup> を掛けると、実部がゼロの結果を得ることができます。<br />
<br />
Re[zQ(V)z<sup>-1</sup>] = 0<br />
<br />
-- すなわちベクトルからベクトルへの写像です。このことを確認するには、積の計算式から、2つのクォータニオンの積の実部は乗算の順序に対して不変であることに注目して、<br />
<br />
Re[QR] = Re[RQ].<br />
<br />
したがって、写像中の1番目と(2番目*3番目)のクォータニオンについて、実部を変えることなく順序を変えることができます。<br />
<br />
Re[z(Q(V)z<sup>-1</sup>)] = Re[(Q(V)z<sup>-1</sup>)z] = Re[Q(V)(z<sup>-1</sup>z)] = 0<br />
<br />
よって Q の実部がゼロのとき、クォータニオンの乗算でも結合法則を満たすことが分かりました。あるクォータニオンを左から掛け、さらに右からその逆数を掛けることは、z とその共役複素数を掛けるこの演算ですよね。線形代数に詳しい読者は、回転行列による対角化に似ていることに気付くのではないでしょうか。 <br />
<br />
では、あるクォータニオンとその共役なクォータニオンを掛けた結果、元のクォータニオンに戻るための条件は何でしょうか?<br />
<br />
zQz<sup>-1</sup> = Q ゆえに zQ = Qz<br />
<br />
(これは最初の式の両辺に右から z を掛けることで簡単に示せます。) いつの間にクォータニオンが交換可能になったのでしょう? クォータニオンの積の式から、実部は交換可能であることが分かっていて、i の項については、<br />
<br />
(af + be + ch - dg)i + ... = (eb + fa + gd - hc)i + ...<br />
<br />
この乗算は ch - dg = 0 または c/d = g/h のとき交換可能です。すなわち、両方のクォータニオンのベクトル部のjk-平面における勾配が一致するときです。何も i が特別なわけではなく、ij-平面、ik-平面についても同様です。つまり2つのクォータニオンのベクトル部が同じ向き、言い換えると同一直線上にあるときに交換可能です。<br />
<br />
このことを示すのは難しくなく、共役複素数は線形で(合計してから複素共役を取っても、複素共役を取ってから合計しても同じです)、共役を取っても Q のベクトル部の大きさは変わらないことは明らかです。軸がベクトルと一致する場合に限り、ベクトルの大きさを変えない一次変換とはどのようなものでしょうか? それは……もちろん回転です。つまり Q に z と z の共役複素数を掛けたものは、Q のベクトル部を z のベクトル部を軸として回転させたものだったのです。<br />
<br />
簡単な例で試してみましょう。ベクトル V = (1,0,0) と、対応するクォータニオン Q = 0 + i を考えます。z軸周りの回転を表すクォータニオン z は a + ck と書けるので、共役複素数は、<br />
<br />
Q' = (a + ck)(i)(a + ck)<sup>-1</sup><br />
<br />
z の逆数とは何でしょう? これはクォータニオン z の大きさが 1 となるように a と c を選ぶことによって、逆数と共役複素数が同じであることが簡単に分かります。<br />
<br />
len(z) = 1 = zz* ゆえに z* = z<sup>-1</sup> <br />
<br />
よって、書き直すと<br />
<br />
Q' = (a + ck)(i)(a - ck) = (a + ck)(ai + cj) = a<sup>2</sup>i + acj + caj - c<sup>2</sup>i = (a<sup>2</sup>- c<sup>2</sup>)i + 2acj<br />
<br />
<br />
条件から<br />
<br />
a<sup>2</sup>+ c<sup>2</sup> = 1 <br />
<br />
ゆえに、ある角度θを用いて書くと a = cos(θ/2), b = sin(θ/2) (1/2を掛けた理由はもうすぐわかります。)<br />
<br />
i と j の項はそれぞれ下記を満たします。<br />
<br />
cos<sup>2</sup>(θ/2) - sin<sup>2</sup>(θ/2) = cos(θ)<br />
<br />
かつ<br />
<br />
2 cos(θ/2) sin(θ/2) = sin(θ)<br />
<br />
<br />
これは確かに k (z) 軸周りにθだけ回転させた回転を表しています。一般化すると、ベクトル V を軸 A = (b,c,d) (正規化されていると仮定します。つまり ||A|| = 1 です。)周りに角度θだけ回転させるクォータニオンは<br />
<br />
z = cos(θ/2) + sin(θ/2)A = cos(θ/2) + sin(θ/2){bi + cj + dk}<br />
<br />
すると、 Q = 0 + V の共役複素数と z について、<br />
<br />
Q' = zQz*<br />
<br />
ベクトル部だけを抜き出すと<br />
<br />
Q' = 0 + V'<br />
<br />
V' の正体はベクトル V を回転させたものです。 <br />
<br />
<br />
Second Life では、回転を表わすクォータニオンは浮動小数点数4つで表現されます。最初の3つがベクトル部で、最後の1つがスカラー部です。つまり Q = <Q.x, Q.y, Q.z, Q.s> となっています。 Second Lifeの地域における方角について、東西方向がx軸、南北方向がy軸、上下方向がz軸となっています。x は 虚軸の i 軸への、y は j への、z は k への写像でしたね。これは右手系座標であることがわかります。右手系座標とは右手と方向付けが同じで、手を開いて x 軸のプラスの方角(東の方角)へ向けたとき、曲げた指が y 軸のプラス(北の方角)を向き、親指を手のひらの成す平面と曲げた指に垂直に立てると z 軸のプラス(上方向)を向きます。回転角はラジアン単位で -π から π (パイ)までと決められています。つまり反時計回り(正の向き - x 軸のプラス側(東)から y 軸のプラス側(北)を通って x 軸のマイナス側(西)へ向かう向き)に半回転、または時計回り(負の向き - x 軸のプラス側(東)から y 軸のマイナス側(南)を通って x 軸のマイナス側(西)へ向かう向き)に半回転まで回転させることができ、回転角が3.141ラジアンもしくは180度のときには2つの向きによる回転は同じ結果になります。例えば西を向いている面を z 軸周りに反時計回りで90度回転させる(南を向く) rotation は、<br />
<br />
<0, 0, 0.707, 0.707><br />
<br />
sinπ/4 と cosπ/4 (π/4 は回転角の半分) は両方とも 1/2<sup>0.5</sup> だからです。 <br />
<br />
[[Image:example_rotation.jpg]]<br />
<br />
<br />
同じく、回転させて東に向けるには、<br />
<br />
<0, 0, 1, 0> と <0, 0, -1, 0> のどちらでもいいです。<br />
<br />
オブジェクトを右に傾ける(x 軸の周りに反時計回りで回転させる)、例えば90度傾けるには、<br />
<br />
<0.707, 0, 0, 0.707><br />
<br />
同じ角度、前に倒す(y 軸周りに時計回りで回転させる)には、<br />
<br />
<0, -0.707, 0, 0.707><br />
<br />
重要なのは、ベクトルの写像はクォータニオンによる回転と一対一対応しないということです。例えば下の図は x 軸から y 軸への何通りかの回転です。異なる回転は最終的な(y と z に)垂直な方向の向きが異なる結果になります。 <br />
<br />
<br />
[[Image:Alternate_rotations.jpg]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Quaternion&diff=1176497
Quaternion
2013-02-04T03:48:40Z
<p>Naoya Bellic: correct axis of rotation</p>
<hr />
<div>{{#vardefine:ml-cat|/LSL}}{{Help |Glossary=*}}<br />
{{LSL Header}}{{LSLC|Types}}{{LSLC|Keywords|quaternion}}<br />
==quaternion==<br />
<br />
A keyword supported by the LSL compiler that means the same thing as, and is interchangeable with, {{LSLG|rotation}}.<br />
<br />
<br />
<br />
== Definition and Properties: ==<br />
<br />
Quaternions are a generalization of complex numbers, invented by William Rowan Hamilton in the mid-19th century. Recall that a complex number is the sum of an ordinary real number a and an imaginary number bi, where i is defined by:<br />
<br />
i<sup>2</sup> = -1<br />
<br />
To construct a quaternion we introduce additional generalized imaginary units j and k with the assumptions:<br />
<br />
j<sup>2</sup> = -1; k<sup>2</sup> = -1; ijk = -1<br />
<br />
From these basic definitions it is easy to derive the multiplication relations for these generalized imaginary quantities:<br />
<br />
ij = k; jk = i; ki = j<br />
<br />
and<br />
<br />
ji = -k; kj = -i; ik = -j<br />
<br />
That is, the multiplication of quaternions is not commutative. While non-commutative operations are now a familiar feature of matrix algebra and vector and tensor analysis, at the time of their invention the idea was radical. <br />
<br />
A quaternion is then a number of the form<br />
<br />
Q = a + bi + cj + dk<br />
<br />
where a,b, and c are ordinary real numbers. Adding quaternions is easy enough; one just adds the corresponding multipliers:<br />
<br />
(a + bi + cj + dk) + (e + fi + gj + hk) = ( a+e) + (b+f)i + (c+g)j + (d+h)k<br />
<br />
The result of multiplying two quaternions can be worked out using the product relations above, remembering to preserve the order of terms in i,j,k since the imaginary units do not commute. <br />
<br />
QR = (a + bi + cj + dk)(e + fi + gj + hk) =<br />
<br />
ae + afi + agj + ahk +<br />
bei - bf + bgij + bhik +<br />
cej + cfji - cg + chjk +<br />
dek + dfki + dgkj - dh<br />
<br />
=<br />
ae + afi + agj + ahk +<br />
bei - bf + bgk - bhj +<br />
cej - cfk - cg + chi +<br />
dek + dfj - dgi - dh<br />
<br />
= (ae - bf - cg - dh) + (af + be + ch - dg)i + (ag -bh + ce + df)j + (ah + bg - cf + de)k<br />
<br />
(And you thought multiplying complex numbers was a mess!)<br />
<br />
Now, we can define the analog of a complex conjugate (we'll use the * notation but other notations are also common):<br />
<br />
Q*= a - bi - cj - dk<br />
<br />
The product of a quaternion and its conjugate is:<br />
<br />
QQ* = (a + bi + cj + dk)(a - bi - cj - dk) =<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>) + (-ab + ba - cd + dc)i + (-ac + bd + ca - db)j + (-ad - bc + cb + da)k<br />
<br />
= (a<sup>2</sup> + b<sup>2</sup> + c<sup>2</sup> + d<sup>2</sup>)<br />
<br />
which looks rather like the square of a Euclidean length. If we regard the triplet (b,c,d) as a vector V, we can rewrite this squared length as:<br />
<br />
QQ* = a<sup>2</sup> + ||V||<sup>2</sup><br />
<br />
The first term, a, is thus often referred to as the scalar or sometimes the real part of the quaternion, and the triplet (b,c,d) as the vector part.<br />
<br />
== Quaternions and Rotations: ==<br />
<br />
The reason we care about quaternions is that Second Life uses them to represent rotations. How is this done? Consider the quaternion representation of a vector V = (b,c,d), which is just a quaternion with a zero real part:<br />
<br />
Q(V) = 0 + bi + cj + dk <br />
<br />
If we multiply Q by some other quaternion, in general we will get a non-zero real part; that is, we've transformed the vector into a non-vector quaternion, which doesn't look at all like a rotation. However, if we multiply on one side by a quaternion z, and on the other side by the multiplicative inverse of z, z<sup>-1</sup>, we will get a result with a 0-value real part:<br />
<br />
Re[zQ(V)z<sup>-1</sup>] = 0<br />
<br />
-- that is, we'll map a vector into a vector. To see that this is so, note that from the formula for multiplication, the real part of the product of two quaternions is invariant to the order of multiplication, that is:<br />
<br />
Re[QR] = Re[RQ].<br />
<br />
So we can invert the order of the first and (second*third) quaternions in the mapping without changing the real part:<br />
<br />
Re[z(Q(V)z<sup>-1</sup>)] = Re[(Q(V)z<sup>-1</sup>)z] = Re[Q(V)(z<sup>-1</sup>z)] = 0<br />
<br />
since quaternion multiplication is associative and we assumed that Q has a zero-value real part. This operation of left-multiplying by a quaternion and right-multiplying by its inverse is known as conjugation by z. Readers familiar with matrix algebra will recognize it as similar to the decomposition of a matrix into a rotation and a pure scaling (a diagonal matrix). <br />
<br />
Under what conditions does conjugation of a quaternion give back the original quaternion?<br />
<br />
zQz<sup>-1</sup> = Q implies zQ = Qz<br />
<br />
(which can be easily shown by right-multiplying the first expression by z). When do quaternions commute? From the expression for the product of two quaternions, recalling that the real parts commute in general, we have for example for the part multiplying i:<br />
<br />
(af + be + ch - dg)i + ... = (eb+ fa + gd - hc)i + ...<br />
<br />
in the case where multiplication is commutative. This can only be true if ch - dg = 0 or c/d = g/h: that is, the slope of the vector part in the (j,k) plane is the same for both quaternions. Since there's nothing special about i, this must also be true of the (i,j) and (i,k) planes: that is, the two quaternions must have vector parts that point in the same direction, or in other words, that are collinear.<br />
<br />
It's not too hard to show that conjugation is also linear (that is, the conjugate of the sum is the sum of the conjugates), and it's easy to see that the length of the vector part of Q is preserved under conjugation. What sort of length-conserving linear transformation preserves a vector only when its axis coincides with the vector? Why -- a rotation, of course. So conjugation of Q by z is equivalent to rotating the vector part of Q around the axis defined by the vector part of z. <br />
<br />
Let's try a simple case. Consider the vector V = (1,0,0) and corresponding quaternion Q = 0 + i. To rotate around the z-axis we need a quaternion z of the form a + ck. The conjugation is then:<br />
<br />
Q' = (a+c k)(i)(a + ck)<sup>-1</sup><br />
<br />
What is the inverse of z? It's easy to see that if we choose a and c so that the length of the quaternion is 1, then the inverse is equal to the conjugate:<br />
<br />
len(z) = 1 = zz* implies z* = z<sup>-1</sup> <br />
<br />
so we can write:<br />
<br />
Q' = (a+c k)(i)(a - ck) = (a+c k)(ai + cj) = a<sup>2</sup>i + acj + caj - c<sup>2</sup>i = ( a<sup>2</sup>- c<sup>2</sup>)i + 2acj<br />
<br />
<br />
with the constraint:<br />
<br />
a<sup>2</sup>+ c<sup>2</sup> = 1 <br />
<br />
implying that we can write a = cos(θ/2), b = sin(θ/2) for some angle θ (the reason for the factor of 1/2 will become clear in a moment).<br />
<br />
Now, the terms in i and j become respectively:<br />
<br />
cos<sup>2</sup>(θ/2) - sin<sup>2</sup>(θ/2) = cos(θ)<br />
<br />
and<br />
<br />
2 cos(θ/2) sin(θ/2) = sin(θ)<br />
<br />
<br />
So this indeed represents a rotation of the k (z) axis by the angle θ. We can infer that in the general case, to rotate a vector V around an axis A= (b,c,d) (presumed normalized, that is ||A|| = 1) by an angle θ, we construct the quaternion<br />
<br />
z = cos(θ/2) + sin(θ/2)A = cos(θ/2) + sin(θ/2){bi + cj + dk}<br />
<br />
and then conjugate the quaternion Q = 0 + V with z :<br />
<br />
Q' = zQz*<br />
<br />
from which we extract the vector part:<br />
<br />
Q' = 0 + V'<br />
<br />
V' being the rotated vector V. <br />
<br />
<br />
In Second Life, quaternions representing rotations are given as four floating point numbers. The first three are the vector part, and the last is the scalar part: Q = <Q.x, Q.y, Q.z, Q.s>. In terms of Second Life region directions, the East-West direction is the x-axis, the North-South direction is the y-axis, and the Up-Down direction is the z-axis. Recall that x maps to the imaginary i axis, y to j, and to z to k. We can see that this is a right-handed coordinate system; if you position your right hand such that, without changing it's orientation, your extended fingers point in the plus x direction (East) and flexing your fingers point them in the plus y direction (North), then extending your thumb, in the plane of your palm and perpendicular to you fingers, points it in the plus z direction (Up). Default angles of rotation are defined in radians, from -π (-pi) to π (pi); that is, we can rotate counter-clockwise (in the positive direction - rotating from plus x axis (East) through the plus y axis (North) to the minus x axis (West)) half-way around, or in the clockwise (negative - rotating from plus x axis (East) through minus y axis (South) to minus x axis (West)) direction half-way around, with the two directions giving the same physical result at a rotation angle of 3.141 radians or 180 degrees. Thus a counter-clockwise rotation of a face pointing West, around the z axis by 90 degrees (to point South) is:<br />
<br />
<0, 0, 0.707, 0.707><br />
<br />
since the sine and cosine of π/4 (half of the rotation angle) are both 1/2<sup>0.5</sup>. <br />
<br />
<br />
[[Image:example_rotation.jpg]]<br />
<br />
<br />
Continuing around to point East is either<br />
<br />
<0, 0, 1, 0> or <0, 0, -1, 0><br />
<br />
Tilting an object to the right (that is, rotating it counter-clockwise around the x-axis) by e.g. 90 degrees is described by:<br />
<br />
<0.707, 0, 0, 0.707><br />
<br />
and pitching forward (clockwise around the y-axis) by the same amount is<br />
<br />
<0, -0.707, 0, 0.707>.<br />
<br />
It's important to note that the mapping of a single vector does not uniquely specify the corresponding quaternion rotation. For example, in the figure below we see a number of ways to rotate the x axis into the y axis. Different rotations result in different final orientations of the orthogonal (y and z) directions. <br />
<br />
<br />
[[Image:Alternate_rotations.jpg]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Template:LSLCMap/ja&diff=1176436
Template:LSLCMap/ja
2013-01-30T23:15:11Z
<p>Naoya Bellic: クォータニオン追加</p>
<hr />
<div>{{#switch: {{ucfirst:{{{1|}}}}}<br />
| Alpha=アルファ<br />
| Animation=アニメーション<br />
| Asset=アセット<br />
| Attachment=アタッチメント<br />
| Avatar=アバター<br />
| Avatar/Name=アバター/名前<br />
| Base64=Base64暗号化<br />
| Bump Mapping=凹凸マップ<br />
| Camera=カメラ<br />
| Chat=チャット<br />
| Collision=衝突<br />
| Color=色<br />
| Communications=コミュニケーション<br />
| Conditional=条件文<br />
| Constants=定数<br />
| Controls=コントロール<br />
| Creator=クリエーター<br />
| Damping=ダンピング<br />
| Dataserver=データサーバ<br />
| Deprecated=廃止されたもの<br />
| Detected=検出<br />
| Dialog=ダイアログ<br />
| Effects=エフェクト<br />
| Email=Eメール<br />
| Encoding=エンコード<br />
| Encryption=暗号化<br />
| Error=エラー<br />
| Error/Math=エラー/演算<br />
| Euler=オイラー<br />
| Events=イベント<br />
| Events/ID=イベント/ID<br />
| Examples=サンプル<br />
| Face=面<br />
| Float=浮動小数点数<br />
| Floating Text=フローティングテキスト<br />
| Flow Control=実行制御<br />
| Functions=関数<br />
| God Mode=ゴッドモード<br />
| Grab=つかむ<br />
| Ground=地面<br />
| Group=グループ<br />
| Hover=浮遊<br />
| HTTP=HTTP通信<br />
| HTTP/Client=HTTP通信/クライアント<br />
| HTTP/Server=HTTP通信/サーバ<br />
| Instant Message=インスタントメッセージ<br />
| Integer=整数<br />
| Inventory=持ち物<br />
| Key=キー<br />
| Keywords=キーワード<br />
| Library=ライブラリ<br />
| Light=光<br />
| Link=リンク<br />
| Link Message=リンクメッセージ<br />
| List=リスト<br />
| Math=数学<br />
| Math/3D=数学/3D<br />
| Math/Trigonometry=数学/三角法<br />
| Media=メディア<br />
| Money=お金<br />
| Movement=移動<br />
| Needs Example=サンプルが必要なもの<br />
| Needs Translation/LSL=要翻訳<br />
| Negative Index=負のインデックス<br />
| Notecard=ノートカード<br />
| Object=オブジェクト<br />
| Operators=演算子<br />
| Owner=オーナー<br />
| Parcel=土地<br />
| Particles=パーティクル<br />
| Permissions=権限<br />
| Permissions/Asset=権限/アセット<br />
| Permissions/Script=権限/スクリプト<br />
| Physics=物理<br />
| Pie Menu=パイメニュー<br />
| Pre-release=リリース前のもの<br />
| Prim=プリム<br />
| Prim Media=プリムメディア<br />
| Prim/Materials=プリム/素材<br />
| Quaternion=クォータニオン<br />
| Region=地域<br />
| Requires Permissions=権限を要するもの<br />
| Rotation=回転<br />
| Script=スクリプト<br />
| Security=セキュリティ<br />
| Sensor=センサー<br />
| Shiny=光沢<br />
| Sit=座る<br />
| Sound=音声<br />
| Status=ステータス<br />
| String=文字列<br />
| Teleport=テレポート<br />
| Temporary=臨時<br />
| Text=テキスト<br />
| Texture=テクスチャ<br />
| Time=時間<br />
| Touch=接触<br />
| Tutorials=チュートリアル<br />
| Types=型<br />
| User-Defined Functions=ユーザ定義関数<br />
| Vector=ベクトル<br />
| Vehicle=乗り物<br />
| Video=ビデオ<br />
| Weather=天気<br />
| World=世界<br />
| XML-RPC=XML-RPC通信<br />
| =全体<br />
| #default={{{1|}}}/ja<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Talk:LSL_%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB&diff=1176155
Talk:LSL ポータル
2013-01-15T05:04:55Z
<p>Naoya Bellic: </p>
<hr />
<div>Hello I am just trying to create a Sound Hud in which I woud like to repeat the same sound as a loop.<br />
<br />
Last time I made my HUD, I used LSL=<br />
llTriggerSound, which enables everybody around me hear the same sound at the same time as me. First I used "llPlaySound" which only enabled me to hear myself alone, so I replaced it by llTriggerSound.<br />
<br />
Please will anyone teach me how to do it.<br />
Trigger Sound and yet at the same time <br />
loop the sound as well?<br />
<br />
I would appreciate it very much if you will tell me how to write my scripts.<br />
Thanking you in advance.<br />
<br />
Phyllis Watanabe[[User:Phyllis Watanabe|Phyllis Watanabe]] 04:38, 9 October 2009 (UTC)<br />
<br />
<br />
----<br />
<br />
<br />
[[http://wiki.secondlife.com/wiki/LSL_Portal 英語版ページ]]と合わせようと思っています。現行ページからの変更点は以下になります。<br />
<br />
*'''デベロッパーリソース''' - 追加する3項目を含め、全18項目を英語版に習って6つのセクションに分けます。<br />
**[[http://wiki.secondlife.com/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0 ユーザ定義関数]]を '''LSL 言語 リファレンス''' から移動<br />
***''Category:LSL_User-Defined_Functions/ja'' としてページのコピーを作ります。<br />
**[[http://wiki.secondlife.com/wiki/LSL_Help Help]](英語) へのリンクを追加<br />
***日本語ページが無いため、日本語ページが作られるまでは英語版へのリンクとなります。<br />
**[[http://wiki.secondlife.com/wiki/Category:LSL_Categorized_Library カテゴリー別ライブラリ]](英語) へのリンクを追加<br />
***日本語ページが無いため、日本語ページが作られるまでは英語版へのリンクとなります。<br />
<br />
<br />
*'''LSL 言語 リファレンス''' - 実行制御 ・ 関数 ・ 型 は横ではなく縦に並べ替えます。<br />
**[[http://wiki.secondlife.com/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0 ユーザ定義関数]]へのリンクを除去<br />
***上述の通り、'''デベロッパーリソース'''へ移動します。<br />
<br />
<br />
*'''他のLSL Wiki'''<br />
**[[http://rpgstats.com/wiki/ RPGStats lslWiki]]へのリンクを除去<br />
**Open Simカテゴリーを追加<br />
<br />
<br />
*'''スナップショットミラー'''<br />
**リンクを2つとも除去<br />
<br />
<br />
<del>1か月ほど待って、反対意見が無ければ作業に取り掛かります。 [[User:Naoya Bellic|Naoya Bellic]] 17:26, 11 December 2012 (PST)</del><br /><br />
作業を完了しました。 [[User:Naoya Bellic|Naoya Bellic]] 21:04, 14 January 2013 (PST)</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LSL_%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB&diff=1176154
LSL ポータル
2013-01-15T04:59:12Z
<p>Naoya Bellic: [トーク]の提案通りに編集</p>
<hr />
<div>{{Multi-lang|1=LSL_Portal|2=/ja}} {{LSL Header/ja}} __NOTOC__<br />
== Second Life LSL ポータルへようこそ! ==<br />
LSL とは "リンデン スクリプト言語" (Linden Scripting Language) の略で、これは SL のオブジェクト (アバターの装備や HUD も含めて) の様々なふるまいを実現するために使われます。<br />
<br />
これは{{LL|SL}}のスクリプト言語である{{HoverText|LSL|Linden Scripting Language}}について、正確で開かれた情報の提供を目指しているコミュニティです。<br/><br />
あらゆるレベルのスクリプト作成者の助けになることを目指しています。<br />
<br />
自由に編集と追加を行ってください。(Wiki の編集については) [[Help:Contents/ja|Wiki ヘルプ]] を参照してください。[[How to choose a wiki]]も併せて参照しましょう。著作権の扱いが正当だと確信できない限り、他所で掲載されている情報をここへ転載しないでください。詳細は [[Talk:LSL Portal]] を参照してください。<br />
<br />
LSLを習得したいのであれば[[LSL Tutorial/ja|LSLチュートリアル]]を試してみましょう。<br />
<br />
----<br />
<br />
<div id="box"><br />
{| width="100%" rules="all" style="border-width: 0px; border-spacing: 5px;"<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" width="30%"|<br />
<br />
== LSL ポータル ==<br />
<div style="padding: 0.5em"><br />
* [[LSL Editing Primer/ja|LSL 編集入門]] - wikiの編集のしかた<br />
* [[LSL Portal Guidelines/ja|ポータルガイドライン]] - wikiですべきこと<br />
* [[LSL Portal To-do/ja|ポータル To-Do]] - wikiの編集がもっとも必要なところ<br />
* [[LSL Portal Translation Project|LSL ポータル翻訳プロジェクト]] - 翻訳の調整<br />
<br />
</div><br />
|height="1" width="30%" rowspan="2"|<br />
<br />
== LSL&nbsp;言語&nbsp;リファレンス ==<br />
<div style="padding: 0.5em"><br />
* {{LSLGC/ja|Constants}}<br />
* {{LSLGC/ja|Events}}<br />
* {{LSLGC/ja|Flow Control}}<br />
** {{LSLG/ja|for}}<br />
** {{LSLG/ja|if}}<br />
** {{LSLG/ja|while}}<br />
** {{LSLG/ja|do-while}}<br />
** {{LSLG/ja|jump}}<br />
** {{LSLG/ja|return}}<br />
** {{LSLG/ja|state}}<br />
* {{LSLGC/ja|Functions}}<br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja}}#mw-pages (page 1: A~L)]</span><br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja|from=L}}#mw-pages (page 2: L~V)]</span><br />
** <span class="plainlinks">[{{fullurl:Category:LSL_Functions/ja|from=V}}#mw-pages (page 3: V~Z)]</span><br />
** <span class="plainlinks">[[:Category:LSL_Functions/ID/ja|(内部 ID 順)]]</span><br />
* [[LSL 演算子|演算子]]<br />
* [[状態]]<br />
* {{LSLGC/ja|Types}}<br />
** {{LSLG/ja|integer}}<br />
** {{LSLG/ja|float}}<br />
** {{LSLG/ja|string}}<br />
** {{LSLG/ja|key}}<br />
** {{LSLG/ja|list}}<br />
** {{LSLG/ja|vector}}<br />
** {{LSLG/ja|rotation}}<br />
* [[LSL 変数|変数]]<br />
* [[LSL エラー|エラー]]<br />
</div><br />
|height="1" width="25%" rowspan="5"|<br />
<br />
== {{LSLGC/ja||LSL カテゴリー}} ==<br />
<div style="padding: 0.5em"><br />
{| border="0" cellspacing="0" cellpadding="0"<br />
|-valign="top"<br />
|width="50%"|<br />
* {{LSLGC/ja|Alpha}}<br />
* {{LSLGC/ja|Animation}}<br />
* {{LSLGC/ja|Attachment}}<br />
* {{LSLGC/ja|Avatar}}<br />
* {{LSLGC/ja|Camera}}<br />
* {{LSLGC/ja|Collision}}<br />
* {{LSLGC/ja|Color}}<br />
* {{LSLGC/ja|Controls}}<br />
* {{LSLGC/ja|Communications}}<br />
* {{LSLGC/ja|Dataserver}}<br />
* {{LSLGC/ja|Face}}<br />
* {{LSLGC/ja|Group}}<br />
* {{LSLGC/ja|Inventory}}<br />
* {{LSLGC/ja|Light}}<br />
* {{LSLGC/ja|Link}}<br />
* {{LSLGC/ja|List}}<br />
* {{LSLGC/ja|Math}}<br />
* {{LSLGC/ja|Needs Example}}<br />
* {{LSLGC/ja|Permissions}}<br />
* {{LSLGC/ja|Physics}}<br />
* {{LSLGC/ja|Prim}}<br />
* {{LSLGC/ja|Rotation}}<br />
* {{LSLGC/ja|Script}}<br />
* {{LSLGC/ja|Sensor}}<br />
* {{LSLGC/ja|Sound}}<br />
* {{LSLGC/ja|Text}}<br />
** {{LSLGC/ja|Chat}}<br />
** {{LSLGC/ja|Notecard}}<br />
** {{LSLGC/ja|String}}<br />
* {{LSLGC/ja|Texture}}<br />
* {{LSLGC/ja|Teleport}}<br />
* {{LSLGC/ja|Time}}<br />
* {{LSLGC/ja|Video}}<br />
* {{LSLGC/ja|Vehicle}}<br />
* {{LSLGC/ja|World}}<br />
|width="50%"|<br />
* {{LSLGC/ja|Avatar}}<br />
** {{LSLGC/ja|Animation}}<br />
** {{LSLGC/ja|Attachment}}<br />
** {{LSLGC/ja|Camera}}<br />
** {{LSLGC/ja|Controls}}<br />
** {{LSLGC/ja|Sit}}<br />
* {{LSLGC/ja|Communications}}<br />
** {{LSLGC/ja|Chat}}<br />
** {{LSLGC/ja|HTTP}}<br />
** {{LSLGC/ja|XML-RPC}}<br />
* {{LSLGC/ja|Detected}}<br />
** {{LSLGC/ja|Collision}}<br />
** {{LSLGC/ja|Touch}}<br />
** {{LSLGC/ja|Sensor}}<br />
* {{LSLGC/ja|Functions}}<br />
** {{LSLGC/ja|God Mode}}<br />
* {{LSLGC/ja|Inventory}}<br />
** {{LSLGC/ja|Creator}}<br />
** {{LSLGC/ja|Notecard}}<br />
** {{LSLGC/ja|Owner}}<br />
* {{LSLGC/ja|Media}}<br />
** {{LSLGC/ja|Sound}}<br />
** {{LSLGC/ja|Video}}<br />
* {{LSLGC/ja|Movement}}<br />
** {{LSLGC/ja|Physics}}<br />
*** {{LSLGC/ja|Damping}}<br />
*** {{LSLGC/ja|Hover}}<br />
** {{LSLGC/ja|Rotation}}<br />
* {{LSLGC/ja|Object}}<br />
** {{LSLGC/ja|Link}}<br />
** {{LSLGC/ja|Vehicle}}<br />
* {{LSLGC/ja|Permissions}}<br />
** {{LSLGC/ja|Permissions/Asset|アセット}}<br />
** {{LSLGC/ja|Permissions/Script|スクリプト}}<br />
* {{LSLGC/ja|Prim}}<br />
** {{LSLGC/ja|Effects}}<br />
*** {{LSLGC/ja|Particles}}<br />
*** {{LSLGC/ja|Light}}<br />
** {{LSLGC/ja|Face}}<br />
*** {{LSLGC/ja|Alpha}}<br />
*** {{LSLGC/ja|Color}}<br />
*** {{LSLGC/ja|Texture}}<br />
* {{LSLGC/ja|Region}}<br />
** {{LSLGC/ja|Ground}}<br />
** {{LSLGC/ja|Parcel}}<br />
** {{LSLGC/ja|Security}}<br />
** {{LSLGC/ja|Time}}<br />
* {{LSLGC/ja|Script}}<br />
** {{LSLGC/ja|Error}}<br />
*** {{LSLGC/ja|Error/Math|演算エラー}}<br />
** {{LSLGC/ja|Keywords}}<br />
** {{LSLGC/ja|Math}}<br />
** {{LSLGC/ja|Types}}<br />
|}<br />
</div><br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1"|<br />
<br />
== デベロッパーリソース ==<br />
<div style="padding: 0.5em"><br />
* [[:Category:ユーザ定義関数|ユーザ定義関数]]<br />
* [[LSL Protocol/ja|プロトコル変換]]<br />
----<br />
* [[:Category:LSL Mentors|LSL メンター]]<br />
* [[:Category:LSL Teachers|LSL の先生]]<br />
* [[LSL_Help|ヘルプ]] (英語)<br />
----<br />
* [[LSL Write Once Debug Everywhere/ja|色々な場所でのLSLのデバッグ]]<br />
* [[LSL_Alternate_Editors/ja | 環境別オフワールドエディタ]]<br />
----<br />
* [[LSL Tutorial/ja|チュートリアル集]]<br />
* [[:Category:LSL サンプル|例集]]<br />
* [[LSL Style Guide/ja|スタイルガイド]]<br />
* [[LSL Script Efficiency/ja|効率化]]<br />
* [[LSL Script Memory/ja|容量]]<br />
* [[LSL Hacks | LSL Script Hacks]]<br />
* [[LSL Benchmarking Scripts/ja |ベンチマークスクリプト]]<br />
----<br />
* [[:Category:LSL Categorized Library|カテゴリー別ライブラリ]] (英語)<br />
* [[:Category:LSL Library/ja|ライブラリ]]<br />
----<br />
* [[LSL Test Harness/ja | インワールドテスト装置]]<br />
* [[LSL Useful Function WishList/ja|実用的な関数の要望一覧]]<br />
</div><br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" colspan="2"|<br />
{{LSL News|LSL ニュース (英語) }}<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|height="1" colspan="2"|<br />
{{LSL Bugs|LSL バグと修正パッチ (英語) }}<br />
|-valign="top" rules="all" style="border-width: 1px 1px 1px 1px; padding: 1px 1px 1px 1px; border-style: solid solid solid solid; border-color: gray;"<br />
|colspan="2"|<br />
<br />
== 他のLSL Wiki ==<br />
<div style="padding: 0.5em"><br />
* [http://www.lslwiki.net/lslwiki/ lslWiki] (オリジナル)<br />
<br />
=====OpenSim=====<br />
* [http://inworldz.com/izwiki/index.php/Scripting_Wiki InWorldz] - LSL Portal の派生<br />
* [http://wiki.spoton3d.com/scripting/contents SpotON3D] - LSL Portal の派生<br />
</div><br />
<br />
== スナップショットミラー ==<br />
<div style="padding: 0.5em;"><br />
</div><br />
|}<br />
</div><br />
[[Category:Portals/ja]]<br />
[[Category:Creation/ja]]<br />
{{LSLC/ja|}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlGetEnv/ja&diff=1176151
LlGetEnv/ja
2013-01-15T04:38:07Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL_Function/ja<br />
|inject-1<br />
|func_id=365|func_sleep=0.0|func_energy=0.0<br />
|func=llGetEnv<br />
|sort=GetEnv<br />
|return_type=string<br />
|p1_type=string|p1_name=name|p1_desc=リクエストするデータの名前<br />
|func_footnote<br />
|func_desc<br />
|return_text=[[region|地域]]についてリクエストされたデータ<br />
|spec<br />
|caveats<br />
|constants=<br />
{{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}<br />
{{!}}+ '''{{LSL Param|name}}''' で指定可能な値<br />
{{!}}-{{Hl2}}<br />
! {{!}} Name<br />
! {{!}} {{HoverText|Typecast|戻り値を有用に使うには、この型にキャストした方が良いでしょう}}<br />
! class="unsortable"{{!}} 説明<br />
{{!}}-<br />
{{!}}"sim_channel"<br />
{{!}} align=center {{!}} NA<br />
{{!}}その地域の[[Het-Grid_FAQ#What_is_a_channel.3F|チャネル]]文字列を取得します。例) "Second Life Server"<br />
{{!}}-<br />
{{!}}"sim_version"<br />
{{!}} align=center {{!}} NA<br />
{{!}}その地域の[[Version numbering|バージョン番号]]文字列を取得します。例)"10.11.30.215699"<br />
{{!}}-<br />
{{!}} "frame_number"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}} シミュレータのフレーム番号を取得します。 例) "42042".<br />
{{!}}-<br />
{{!}} "region_idle"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}}その地域の[http://community.secondlife.com/t5/Second-Life-Server/Region-Idling-FAQ/m-p/1535497 アイドル]ステータスを取得します。"1"か"0"が返ってきます。<br />
{{!}}-<br />
{{!}} "dynamic_pathfinding"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}}その地域のdynamic_pathfindingステータスを取得します。"1"か"0"が返ってきます。このオプションは[[SimConsole|Region Debug Console]]で形成されます。<br />
{{!}}}<br />
|examples=<lsl><br />
default<br />
{<br />
touch_start(integer total_number)<br />
{<br />
string version = llGetEnv("sim_version");<br />
llOwnerSay("Region " + llGetRegionName() + " is running "<br />
+ llGetEnv("sim_channel") + " version " + version );<br />
<br />
list ver = llParseString2List(version, ["."], []);<br />
<br />
llOwnerSay("Build: "+llList2String(ver, 3));<br />
llOwnerSay("Build Date: "+llList2String(ver, 2)+"-"+llList2String(ver, 1)+"-20"+llList2String(ver, 0));<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions=<br />
{{LSL DefineRow||{{LSLG/ja|llRequestSimulatorData}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetSimulatorHostname}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetRegionFlags}}|}}<br />
|also_tests<br />
|also_events<br />
|also_articles<br />
|notes<br />
|history=* {{Jira|SVC-4874}}<br />
*[[Release Notes/Second Life RC LeTigre/10#10.11.30.215699|Second Life RC LeTigre 10.11.30.215699]] で紹介され、2010-12-01 に実装されました。<br />
*Second Life Server 10.11.30.215699, Second Life RC BlueSteel 10.12.06.216207, Second Life RC Magnum 10.11.30.215699 で他の Agni 地域に導入されました。<br />
*"frame_number"オプションは Second Life RC BlueSteel 12.01.03.247042 で追加されました。<br />
**シミュレータの現在の'frame'を表す[[integer/ja|integer]]を返します。一般に特定のデバッグを行うときのみ有用です。<br />
*Second Life RC BlueSteel 12.01.06.247303 で取り除かれました(一時的に?)。<br />
|cat1<br />
|cat2=Region<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlGetEnv/ja&diff=1176149
LlGetEnv/ja
2013-01-15T04:36:02Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL_Function/ja<br />
|inject-1<br />
|func_id=365|func_sleep=0.0|func_energy=0.0<br />
|func=llGetEnv<br />
|sort=llGetEnv<br />
|return_type=string<br />
|p1_type=string|p1_name=name|p1_desc=リクエストするデータの名前<br />
|func_footnote<br />
|func_desc<br />
|return_text=[[region|地域]]についてリクエストされたデータ<br />
|spec<br />
|caveats<br />
|constants=<br />
{{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}<br />
{{!}}+ '''{{LSL Param|name}}''' で指定可能な値<br />
{{!}}-{{Hl2}}<br />
! {{!}} Name<br />
! {{!}} {{HoverText|Typecast|戻り値を有用に使うには、この型にキャストした方が良いでしょう}}<br />
! class="unsortable"{{!}} 説明<br />
{{!}}-<br />
{{!}}"sim_channel"<br />
{{!}} align=center {{!}} NA<br />
{{!}}その地域の[[Het-Grid_FAQ#What_is_a_channel.3F|チャネル]]文字列を取得します。例) "Second Life Server"<br />
{{!}}-<br />
{{!}}"sim_version"<br />
{{!}} align=center {{!}} NA<br />
{{!}}その地域の[[Version numbering|バージョン番号]]文字列を取得します。例)"10.11.30.215699"<br />
{{!}}-<br />
{{!}} "frame_number"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}} シミュレータのフレーム番号を取得します。 例) "42042".<br />
{{!}}-<br />
{{!}} "region_idle"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}}その地域の[http://community.secondlife.com/t5/Second-Life-Server/Region-Idling-FAQ/m-p/1535497 アイドル]ステータスを取得します。"1"か"0"が返ってきます。<br />
{{!}}-<br />
{{!}} "dynamic_pathfinding"<br />
{{!}} align=center {{!}} ([[integer/ja|integer]])<br />
{{!}}その地域のdynamic_pathfindingステータスを取得します。"1"か"0"が返ってきます。このオプションは[[SimConsole|Region Debug Console]]で形成されます。<br />
{{!}}}<br />
|examples=<lsl><br />
default<br />
{<br />
touch_start(integer total_number)<br />
{<br />
string version = llGetEnv("sim_version");<br />
llOwnerSay("Region " + llGetRegionName() + " is running "<br />
+ llGetEnv("sim_channel") + " version " + version );<br />
<br />
list ver = llParseString2List(version, ["."], []);<br />
<br />
llOwnerSay("Build: "+llList2String(ver, 3));<br />
llOwnerSay("Build Date: "+llList2String(ver, 2)+"-"+llList2String(ver, 1)+"-20"+llList2String(ver, 0));<br />
}<br />
}<br />
</lsl><br />
|helpers<br />
|also_functions=<br />
{{LSL DefineRow||{{LSLG/ja|llRequestSimulatorData}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetSimulatorHostname}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetRegionFlags}}|}}<br />
|also_tests<br />
|also_events<br />
|also_articles<br />
|notes<br />
|history=* {{Jira|SVC-4874}}<br />
*[[Release Notes/Second Life RC LeTigre/10#10.11.30.215699|Second Life RC LeTigre 10.11.30.215699]] で紹介され、2010-12-01 に実装されました。<br />
*Second Life Server 10.11.30.215699, Second Life RC BlueSteel 10.12.06.216207, Second Life RC Magnum 10.11.30.215699 で他の Agni 地域に導入されました。<br />
*"frame_number"オプションは Second Life RC BlueSteel 12.01.03.247042 で追加されました。<br />
**シミュレータの現在の'frame'を表す[[integer/ja|integer]]を返します。一般に特定のデバッグを行うときのみ有用です。<br />
*Second Life RC BlueSteel 12.01.06.247303 で取り除かれました(一時的に?)。<br />
|cat1<br />
|cat2=Region<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:%E3%83%A6%E3%83%BC%E3%82%B6%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0&diff=1176144
Category:ユーザ定義関数
2013-01-15T04:15:03Z
<p>Naoya Bellic: </p>
<hr />
<div>{{Multi-lang|Category:LSL User-Defined_Functions|/ja}}<br />
{{LSL Header/ja}}<br />
<br />
LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:<br />
<br />
<lsl><br />
<br />
return_type variable_name(par1type par1name, par2type par2name,...)<br />
{<br />
function_statements;<br />
.<br />
.<br />
.<br />
return value_of_return_type;<br />
}<br />
</lsl><br />
<br />
"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。[[LSL_Style_Guide/ja|LSL スタイルガイド]]では、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。<br />
<br />
簡単な例を 2 つ挙げます:<br />
<br />
<lsl><br />
<br />
float xsquared(float x) // 引数の二乗を返します<br />
{<br />
return x*x;<br />
}<br />
<br />
vector scalarmult(vector vIn, float sMult) // スカラーとベクトルの積を返します<br />
{<br />
vIn.x=vIn.x*sMult;<br />
vIn.y=vIn.y*sMult;<br />
vIn.z=vIn.z*sMult;<br />
return vIn;<br />
}<br />
<br />
<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
llWhisper(0, "Some user functions");<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
float testx=3;<br />
llWhisper(0,"testx squared :"+(string)xsquared(testx));<br />
vector testVector = <1,2,3>;<br />
testVector = scalarmult(testVector,testx);<br />
llWhisper(0,"test vector is:"+(string)testVector);<br />
}<br />
}<br />
<br />
<br />
</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_User-Defined_Functions/ja&diff=1176143
Category:LSL User-Defined Functions/ja
2013-01-15T04:14:03Z
<p>Naoya Bellic: Redirected page to Category:ユーザ定義関数</p>
<hr />
<div>#Redirect [[Category:ユーザ定義関数]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_User-Defined_Functions/ja&diff=1176142
Category:LSL User-Defined Functions/ja
2013-01-15T04:09:30Z
<p>Naoya Bellic: リダイレクト</p>
<hr />
<div>#Redirect [[Category:LSL ユーザ定義関数]]</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:%E3%83%A6%E3%83%BC%E3%82%B6%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0&diff=1176141
Category:ユーザ定義関数
2013-01-15T04:07:39Z
<p>Naoya Bellic: リダイレクト元からのコピー</p>
<hr />
<div>{{Multi-lang|Category:LSL User-defined_functions|/ja}}<br />
{{LSL Header/ja}}<br />
<br />
LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:<br />
<br />
<lsl><br />
<br />
return_type variable_name(par1type par1name, par2type par2name,...)<br />
{<br />
function_statements;<br />
.<br />
.<br />
.<br />
return value_of_return_type;<br />
}<br />
</lsl><br />
<br />
"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。[[LSL_Style_Guide/ja|LSL スタイルガイド]]では、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。<br />
<br />
簡単な例を 2 つ挙げます:<br />
<br />
<lsl><br />
<br />
float xsquared(float x) // 引数の二乗を返します<br />
{<br />
return x*x;<br />
}<br />
<br />
vector scalarmult(vector vIn, float sMult) // スカラーとベクトルの積を返します<br />
{<br />
vIn.x=vIn.x*sMult;<br />
vIn.y=vIn.y*sMult;<br />
vIn.z=vIn.z*sMult;<br />
return vIn;<br />
}<br />
<br />
<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
llWhisper(0, "Some user functions");<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
float testx=3;<br />
llWhisper(0,"testx squared :"+(string)xsquared(testx));<br />
vector testVector = <1,2,3>;<br />
testVector = scalarmult(testVector,testx);<br />
llWhisper(0,"test vector is:"+(string)testVector);<br />
}<br />
}<br />
<br />
<br />
</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_User-Defined_Functions/ja&diff=1176140
Category:LSL User-Defined Functions/ja
2013-01-15T03:55:26Z
<p>Naoya Bellic: </p>
<hr />
<div>{{Multi-lang|Category:LSL User-defined_functions|/ja}}<br />
{{LSL Header/ja}}<br />
<br />
LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:<br />
<br />
<lsl><br />
<br />
return_type variable_name(par1type par1name, par2type par2name,...)<br />
{<br />
function_statements;<br />
.<br />
.<br />
.<br />
return value_of_return_type;<br />
}<br />
</lsl><br />
<br />
"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。[[LSL_Style_Guide/ja|LSL スタイルガイド]]では、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。<br />
<br />
簡単な例を 2 つ挙げます:<br />
<br />
<lsl><br />
<br />
float xsquared(float x) // 引数の二乗を返します<br />
{<br />
return x*x;<br />
}<br />
<br />
vector scalarmult(vector vIn, float sMult) // スカラーとベクトルの積を返します<br />
{<br />
vIn.x=vIn.x*sMult;<br />
vIn.y=vIn.y*sMult;<br />
vIn.z=vIn.z*sMult;<br />
return vIn;<br />
}<br />
<br />
<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
llWhisper(0, "Some user functions");<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
float testx=3;<br />
llWhisper(0,"testx squared :"+(string)xsquared(testx));<br />
vector testVector = <1,2,3>;<br />
testVector = scalarmult(testVector,testx);<br />
llWhisper(0,"test vector is:"+(string)testVector);<br />
}<br />
}<br />
<br />
<br />
</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_User-Defined_Functions/ja&diff=1176139
Category:LSL User-Defined Functions/ja
2013-01-15T03:49:40Z
<p>Naoya Bellic: </p>
<hr />
<div>{{Multi-lang|1=Category:User-defined_functions|2=/ja}}<br />
{{LSL Header/ja}}<br />
<br />
LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:<br />
<br />
<lsl><br />
<br />
return_type variable_name(par1type par1name, par2type par2name,...)<br />
{<br />
function_statements;<br />
.<br />
.<br />
.<br />
return value_of_return_type;<br />
}<br />
</lsl><br />
<br />
"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。[[LSL_Style_Guide/ja|LSL スタイルガイド]]では、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。<br />
<br />
簡単な例を 2 つ挙げます:<br />
<br />
<lsl><br />
<br />
float xsquared(float x) // 引数の二乗を返します<br />
{<br />
return x*x;<br />
}<br />
<br />
vector scalarmult(vector vIn, float sMult) // スカラーとベクトルの積を返します<br />
{<br />
vIn.x=vIn.x*sMult;<br />
vIn.y=vIn.y*sMult;<br />
vIn.z=vIn.z*sMult;<br />
return vIn;<br />
}<br />
<br />
<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
llWhisper(0, "Some user functions");<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
float testx=3;<br />
llWhisper(0,"testx squared :"+(string)xsquared(testx));<br />
vector testVector = <1,2,3>;<br />
testVector = scalarmult(testVector,testx);<br />
llWhisper(0,"test vector is:"+(string)testVector);<br />
}<br />
}<br />
<br />
<br />
</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Talk:%E3%83%A6%E3%83%BC%E3%82%B6%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0&diff=1176138
Talk:ユーザ定義関数
2013-01-15T03:47:06Z
<p>Naoya Bellic: 英語ページの削除提案に基づく日本語ページの編集について</p>
<hr />
<div>英語版ページ http://wiki.secondlife.com/wiki/User-defined_functions は http://wiki.secondlife.com/wiki/Category:LSL_User-Defined_Functions と重複のため、削除が提案されています。<br /><br />
まだ削除されずに存在しているため、ページの移動ではなく、内容のコピーを http://wiki.secondlife.com/wiki/Category:LSL_User-Defined_Functions/ja に作りました。<br /><br />
英語版ページが提案通り削除された場合には、このページも削除するようにしてください。<br /><br />
'''これからこのページの内容を編集しようとする方はこのページではなく、http://wiki.secondlife.com/wiki/Category:LSL_User-Defined_Functions/ja を編集してください。'''<br /><br />
また、'''このページへのリンクは避け、http://wiki.secondlife.com/wiki/Category:LSL_User-Defined_Functions/ja へのリンクを使用してください。''' [[User:Naoya Bellic|Naoya Bellic]] 19:47, 14 January 2013 (PST)</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Category:LSL_User-Defined_Functions/ja&diff=1176137
Category:LSL User-Defined Functions/ja
2013-01-15T03:46:27Z
<p>Naoya Bellic: http://wiki.secondlife.com/wiki/ユーザ定義関数 のコピーです。詳細はコピー元の[トーク]を見てください。</p>
<hr />
<div>{{Multi-lang|1=User-defined_functions|2=/ja}}<br />
{{LSL Header/ja}}<br />
<br />
LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:<br />
<br />
<lsl><br />
<br />
return_type variable_name(par1type par1name, par2type par2name,...)<br />
{<br />
function_statements;<br />
.<br />
.<br />
.<br />
return value_of_return_type;<br />
}<br />
</lsl><br />
<br />
"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。[[LSL_Style_Guide/ja|LSL スタイルガイド]]では、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。<br />
<br />
簡単な例を 2 つ挙げます:<br />
<br />
<lsl><br />
<br />
float xsquared(float x) // 引数の二乗を返します<br />
{<br />
return x*x;<br />
}<br />
<br />
vector scalarmult(vector vIn, float sMult) // スカラーとベクトルの積を返します<br />
{<br />
vIn.x=vIn.x*sMult;<br />
vIn.y=vIn.y*sMult;<br />
vIn.z=vIn.z*sMult;<br />
return vIn;<br />
}<br />
<br />
<br />
<br />
default<br />
{<br />
state_entry()<br />
{<br />
llWhisper(0, "Some user functions");<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
float testx=3;<br />
llWhisper(0,"testx squared :"+(string)xsquared(testx));<br />
vector testVector = <1,2,3>;<br />
testVector = scalarmult(testVector,testx);<br />
llWhisper(0,"test vector is:"+(string)testVector);<br />
}<br />
}<br />
<br />
<br />
</lsl></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Template:LSLCMap/ja&diff=1176136
Template:LSLCMap/ja
2013-01-15T03:34:18Z
<p>Naoya Bellic: 「ユーザ定義関数」を追加</p>
<hr />
<div>{{#switch: {{ucfirst:{{{1|}}}}}<br />
| Alpha=アルファ<br />
| Animation=アニメーション<br />
| Asset=アセット<br />
| Attachment=アタッチメント<br />
| Avatar=アバター<br />
| Avatar/Name=アバター/名前<br />
| Base64=Base64暗号化<br />
| Bump Mapping=凹凸マップ<br />
| Camera=カメラ<br />
| Chat=チャット<br />
| Collision=衝突<br />
| Color=色<br />
| Communications=コミュニケーション<br />
| Conditional=条件文<br />
| Constants=定数<br />
| Controls=コントロール<br />
| Creator=クリエーター<br />
| Damping=ダンピング<br />
| Dataserver=データサーバ<br />
| Deprecated=廃止されたもの<br />
| Detected=検出<br />
| Dialog=ダイアログ<br />
| Effects=エフェクト<br />
| Email=Eメール<br />
| Encoding=エンコード<br />
| Encryption=暗号化<br />
| Error=エラー<br />
| Error/Math=エラー/演算<br />
| Euler=オイラー<br />
| Events=イベント<br />
| Events/ID=イベント/ID<br />
| Examples=サンプル<br />
| Face=面<br />
| Float=浮動小数点数<br />
| Floating Text=フローティングテキスト<br />
| Flow Control=実行制御<br />
| Functions=関数<br />
| God Mode=ゴッドモード<br />
| Grab=つかむ<br />
| Ground=地面<br />
| Group=グループ<br />
| Hover=浮遊<br />
| HTTP=HTTP通信<br />
| HTTP/Client=HTTP通信/クライアント<br />
| HTTP/Server=HTTP通信/サーバ<br />
| Instant Message=インスタントメッセージ<br />
| Integer=整数<br />
| Inventory=持ち物<br />
| Key=キー<br />
| Keywords=キーワード<br />
| Library=ライブラリ<br />
| Light=光<br />
| Link=リンク<br />
| Link Message=リンクメッセージ<br />
| List=リスト<br />
| Math=数学<br />
| Math/3D=数学/3D<br />
| Math/Trigonometry=数学/三角法<br />
| Media=メディア<br />
| Money=お金<br />
| Movement=移動<br />
| Needs Example=サンプルが必要なもの<br />
| Needs Translation/LSL=要翻訳<br />
| Negative Index=負のインデックス<br />
| Notecard=ノートカード<br />
| Object=オブジェクト<br />
| Operators=演算子<br />
| Owner=オーナー<br />
| Parcel=土地<br />
| Particles=パーティクル<br />
| Permissions=権限<br />
| Permissions/Asset=権限/アセット<br />
| Permissions/Script=権限/スクリプト<br />
| Physics=物理<br />
| Pie Menu=パイメニュー<br />
| Pre-release=リリース前のもの<br />
| Prim=プリム<br />
| Prim Media=プリムメディア<br />
| Prim/Materials=プリム/素材<br />
| Region=地域<br />
| Requires Permissions=権限を要するもの<br />
| Rotation=回転<br />
| Script=スクリプト<br />
| Security=セキュリティ<br />
| Sensor=センサー<br />
| Shiny=光沢<br />
| Sit=座る<br />
| Sound=音声<br />
| Status=ステータス<br />
| String=文字列<br />
| Teleport=テレポート<br />
| Temporary=臨時<br />
| Text=テキスト<br />
| Texture=テクスチャ<br />
| Time=時間<br />
| Touch=接触<br />
| Tutorials=チュートリアル<br />
| Types=型<br />
| User-Defined Functions=ユーザ定義関数<br />
| Vector=ベクトル<br />
| Vehicle=乗り物<br />
| Video=ビデオ<br />
| Weather=天気<br />
| World=世界<br />
| XML-RPC=XML-RPC通信<br />
| =全体<br />
| #default={{{1|}}}/ja<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlRot2Angle/ja&diff=1175246
LlRot2Angle/ja
2012-12-13T08:17:16Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL_Function/ja<br />
|func_id=171|func_sleep=0.0|func_energy=10.0<br />
|func=llRot2Angle|sort=Rot2Angle<br />
|return_type=float|p1_type=rotation|p1_name=rot<br />
|func_footnote={{LSLG/ja|llRot2Axis}} とあわせて使います。<br/>元に戻すには {{LSLG/ja|llAxisAngle2Rot}} を使います。<br />
|func_desc<br />
|return_text='''rot''' で表される回転角度<br />
|spec<br />
|caveats=これは常に ≦ PI ラジアンの正の角度を返します。PI は、符号なしの最小角度です。3/2 PI ラジアン (270°) の回転は、PI / 2 ラジアンの角度を返し、-PI /2 の角度ではありません。<br />
|constants<br />
|examples<br />
|helpers<br />
|also_functions=<br />
{{LSL DefineRow||{{LSLG/ja|llAxisAngle2Rot}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llRot2Axis}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llRot2Up}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llRot2Fwd}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llRot2Left}}}}<br />
{{LSL DefineRow||{{LSLG/ja|llAngleBetween}}|機能的には同じ。}}<br />
|also_tests<br />
|also_events<br />
|also_articles<br />
|notes<br />
|cat1=Rotation<br />
|cat2<br />
|cat3<br />
|cat4<br />
|deepnotes=<lsl>float Rot2Angle(rotation a)<br />
{<br />
return llAcos(llFabs(a.s) / llSqrt(a.x * a.x + a.y * a.y + a.z * a.z + a.s * a.s)) * 2.0;<br />
}</lsl><br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=Template:LSL_Constants/Status/ja&diff=1175245
Template:LSL Constants/Status/ja
2012-12-13T00:23:10Z
<p>Naoya Bellic: 「意味」記入</p>
<hr />
<div>{{#if:{{{no_wrapper|}}}||{{{!}} }}<br />
{{!}}- valign="top"<br />
{{!}}<br />
{{{!}} {{Prettytable|style=margin-top:0;margin-bottom:0;}}<br />
{{!}}-{{Hl2}}<br />
! colspan="2" {{!}} 定数 {{#if:{{{no_default|}}}||{{!}}{{!}} 初期値}}<br />
! 意味<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_PHYSICS|integer|ihex=1|hex=0x001|c=オブジェクトは[[LSL_Glossary#physical|物理]]です}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_ROTATE_X|integer|ihex=2|hex=0x002|c=この軸周りの回転ができます}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|TRUE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_ROTATE_Y|integer|ihex=4|hex=0x004|c=この軸周りの回転ができます}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|TRUE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_ROTATE_Z|integer|ihex=8|hex=0x008|c=この軸周りの回転ができます}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|TRUE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_PHANTOM|integer|ihex=16|hex=0x010|c=オブジェクトは[[LSL_Glossary#phantom|ファントム]]です}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_SANDBOX|integer|ihex=32|hex=0x020|c=オブジェクトを10mの範囲、かつ同じ地域に居続けさせます}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}}<br />
{{!}}<br />
{{{!}} {{Prettytable|style=margin-top:0;margin-bottom:0;}}<br />
{{!}}-{{Hl2}}<br />
! colspan="2" {{!}} 定数 {{#if:{{{no_default|}}}||{{!}}{{!}} 初期値}}<br />
! 意味<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_BLOCK_GRAB|integer|ihex=64|hex=0x040|c=プリムに対するクリック&ドラッグ操作を無効にします}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_DIE_AT_EDGE|integer|ihex=128|hex=0x080|c=地域の外にオブジェクトが出た場合、返却せずに消去します}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}<span id="srae-s" class="TablePager_nav" title="オブジェクトがスクリプトによって Rez された場合、初期値は TRUE です。">[[#srae-t|†]]</span>}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_RETURN_AT_EDGE|integer|ihex=256|hex=0x100|c=地域の外にオブジェクトが出た場合、オーナーに返却します}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_CAST_SHADOWS|integer|ihex=512|hex=0x200|c=''現在使用されていません''}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|TRUE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|STATUS_BLOCK_GRAB_OBJECT|integer|ihex=1024|hex=0x400|c=オブジェクトのプリム全てに対するクリック&ドラッグ操作を無効にします}}<br />
{{!}} {{#var:value}} {{#if:{{{no_default|}}}||{{!}}{{!}} {{LSLG/ja|FALSE}}}}<br />
{{!}} {{#var:comment}}<br />
{{!}}}<br />
{{!}}-<br />
{{#if:{{{no_default|}}}||<br />
{{!}}colspan="2"{{!}}<sup id="srae-t"><span class="TablePager_nav">[[#srae-s|†]]</span> STATUS_DIE_AT_EDGE - オブジェクトがスクリプトによって {{LSLGC|Rez|Rez}} された場合、初期値は {{LSLG/ja|TRUE}} です。</sup><br />
}} <br />
{{#if:{{{no_wrapper|}}}||{{!}}} }}<br />
<noinclude>{{{{FULLPAGENAME}}|no_default=*}}</noinclude></div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=LlSetContentType/ja&diff=1175239
LlSetContentType/ja
2012-12-12T05:41:45Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL_Function/ja<br />
|func=llSetContentType<br />
|func_id=?<br />
|func_energy=?<br />
|func_sleep<br />
|func_desc=[[LSL HTTP server/ja|LSL HTTPサーバー]]レスポンスの{{Wikipedia|Internet media type|インターネットメディアタイプ}}を設定します。{{Footnote|この関数はその後に起こる全ての[[llHTTPResponse/ja|llHTTPResponse]]レスポンスの"Content-Type"ヘッダーを設定します。}}<br />
|sort<br />
|func_footnote<br />
|return_type<br />
|return_text<br />
|p1_type=key|p1_name=request_id|p1_desc=[[http_request/ja|http_request]]() のkey<br />
|p2_type=integer|p2_name=content_type|p2_desc=その後の[[llHTTPResponse/ja|llHTTPResponse]]('''request_id''', ...)全てで用いるメディアタイプ <br />
|constants={{{!}} class="sortable" {{Prettytable|style=margin-top:0;margin-bottom:0;}}<br />
{{!}}-{{Hl2}}<br />
! {{!}} コンテンツタイプ<br />
! title="値" {{!}}<br />
! コンテンツタイプ<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|CONTENT_TYPE_TEXT|integer|hex=0x0|c=text/plain}}<br />
{{!}} {{#var:value}}<br />
{{!}} {{#var:comment}}<br />
{{!}}-<br />
{{!}} {{LSL Const/ja|CONTENT_TYPE_HTML|integer|hex=0x1|c=text/html}}<br />
{{!}} {{#var:value}}<br />
{{!}} {{#var:comment}}<br />
{{!}}}<br />
|spec<br />
|caveats=<br />
* この設定は以下の場合に無視されます。<br />
*# ウェブブラウザがSecond Life clientでない場合。<br />
*# (SLクライアントでログインしてページを表示している)ユーザーがオブジェクトのオーナーでない場合。<br />
* グループ所有のオブジェクトでは機能しません。<br />
|examples<br />
|helpers<br />
|also_header<br />
|also_events={{LSL DefineRow||{{LSLG/ja|http_request}}}}<br />
|also_functions={{LSL DefineRow||{{LSLG/ja|llHTTPResponse}}}}<br />
|also_articles={{LSL DefineRow||{{LSLG/ja|LSL HTTP server}}}}<br />
|also_footer<br />
|notes=<br />
* インワールドで所有者以外にhtmlを表示するための代替手段は[[Teacup|ここ]]で見れます。<br />
|history=* Released August 16, 2011.<br />
|mode<br />
|deprecated<br />
|permission<br />
|cat1=HTTP<br />
|cat2=HTTP/Server<br />
|comments=クライアントと所有者の制限は、プリムからウェブサイトを運営する可能性をほぼ取り去ります。<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=CHANGED_TELEPORT/ja&diff=1175238
CHANGED TELEPORT/ja
2012-12-12T05:36:08Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=CHANGED_TELEPORT<br />
|type=integer<br />
|value={{LSL Hex/ja|0x200}}<br />
|desc=オブジェクトを装着しているアバターがテレポートしました。このイベントはユーザがテレポートしたときに、アタッチメントのルートプリムでのみ発生します。このイベントはアタッチメントの子プリムでは発生しません。また "sit teleport" によるものでも発生しません。ユーザがスクリプトの実行が許可されていない土地へテレポートした場合、CHANGED_TELEPORT は発生せず、スクリプトが許可された土地に移動しても発生しません。<br />
|examples=<br />
<lsl>default<br />
{<br />
changed(integer change)<br />
{<br />
if (change & CHANGED_TELEPORT) // & です。 && ではありません。論理積です!<br />
{<br />
llOwnerSay("オブジェクトが装着されたままテレポートしました。");<br />
}<br />
}<br />
}</lsl><br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llTeleportAgentHome}}|}}<br />
|events=<br />
{{LSL DefineRow||{{LSLG/ja|changed}}|}}<br />
|cat1=Teleport<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=VEHICLE_FLAG_HOVER_TERRAIN_ONLY/ja&diff=1175237
VEHICLE FLAG HOVER TERRAIN ONLY/ja
2012-12-12T05:34:50Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=VEHICLE_FLAG_HOVER_TERRAIN_ONLY<br />
|type=integer<br />
|value={{LSL Hex/ja|0x008}}<br />
|desc=乗物を地表 (および海底) を基準にホバーさせます。<br />
船を作りたい場合は {{LSLG/ja|VEHICLE_FLAG_HOVER_WATER_ONLY}} フラグを使うべきです。一方、ホバー タンクを作りたい場合はこの {{LSLG/ja|VEHICLE_FLAG_HOVER_TERRAIN_ONLY}} フラグを使うべきです。また潜水艦や気球を作りたい場合は {{LSLG/ja|VEHICLE_HOVER_GLOBAL_HEIGHT}} を使うのが良いでしょう。<br />
<br />
上記の乗物フラグは互いに独立しており、複数同時指定すると矛盾を起こして予期せぬ動作を引き起こします。これらのフラグは {{LSLG/ja|llSetVehicleFlags}} 関数で設定します。<br />
|pa=<br />
|text=<br />
|pb=<br />
|examples<br />
<br />
<!--<br />
<lsl><br />
llSetVehicleFlags(VEHICLE_FLAG_HOVER_TERRAIN_ONLY);<br />
</lsl><br />
--><br />
<br />
<!--{{LSL ConstRow|CHANGED_SHAPE}}--><br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llSetVehicleFlags}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llRemoveVehicleFlags}}|}}<br />
|events=<br />
<!--{{LSL DefineRow||[[changed]]|}}--><br />
|constants=<br />
{{!}} {{LSL Constants/Vehicle Flags/ja}}<br />
|location<br />
|articles={{LSL DefineRow||[[Linden Vehicle Tutorial/ja|乗物制作のチュートリアル]]}}<br />
|cat1=Vehicle<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=DATA_ONLINE/ja&diff=1175236
DATA ONLINE/ja
2012-12-12T05:34:11Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=DATA_ONLINE<br />
|type=integer<br />
|value=1<br />
|desc={{LSLG/ja|llRequestAgentData}} で使用して、ユーザがオンラインか (否か) の真偽値の整数を含む文字列を取得します。オンラインなら {{LSLG/ja|TRUE}} 、オフラインなら {{LSLG/ja|FALSE}} です。<br />
|pa=<br />
|text=<br />
|pb=<br />
|examples<br />
|constants=<br />
{{!}}<br />
{{{!}} {{Prettytable|style=margin-top:0;margin-right:0;}}<br />
{{LSL_Constants/llRequestAgentData/ja}}<br />
{{!}}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llRequestAgentData}}|}}<br />
|events=<br />
{{LSL DefineRow||{{LSLG/ja|dataserver}}|}}<br />
|location<br />
|cat1<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=STATUS_CAST_SHADOWS/ja&diff=1175235
STATUS CAST SHADOWS/ja
2012-12-12T05:31:39Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=STATUS_CAST_SHADOWS<br />
|type=integer<br />
|value={{LSL Hex/ja|0x200|512}}<br />
|desc=本来ならば、このフラグにより、他のオブジェクトへ影を落とせるようになります。<br />
<br />
この設定をサポートするクライアントはありません。<br />
|examples<br />
|history=v1.9.1 から導入されました。<br />
|constants=<br />
{{!}}<br />
{{LSL Constants/Status/ja|no_default=*}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llSetStatus}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetStatus}}|}}<br />
|events<br />
|cat1=Status<br />
|<br />
<!-- Features that don't work should't get categorized where people might find them then try and use them!<br />
|cat2=Effects <br />
|cat3=Light<br />
--><br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=STATUS_RETURN_AT_EDGE/ja&diff=1175234
STATUS RETURN AT EDGE/ja
2012-12-12T05:31:08Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=STATUS_RETURN_AT_EDGE<br />
|type=integer<br />
|value={{LSL Hex/ja|0x100|256}}<br />
|desc=オブジェクトが world から出て行く時に持ち主へ返却されます。{{LSL Const/ja|STATUS_DIE_AT_EDGE|integer|hex=0x100|256|c=}} よりも (同時指定された時は) 優先されます。<br />
|examples<br />
|constants=<br />
{{!}}<br />
{{LSL Constants/Status/ja|no_default=*}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llSetStatus}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetStatus}}|}}<br />
|events=<br />
|cat1=Status<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=STATUS_DIE_AT_EDGE/ja&diff=1175233
STATUS DIE AT EDGE/ja
2012-12-12T05:30:47Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=STATUS_DIE_AT_EDGE<br />
|type=integer<br />
|value={{LSL Hex/ja|0x80|128}}<br />
|desc=オブジェクトが world から出て行く時に削除します。{{LSL Const/ja|STATUS_RETURN_AT_EDGE|integer|hex=0x100|256|c=}} の方が (同時指定された時は) 優先されます。<br />
|examples<br />
|constants=<br />
{{!}}<br />
{{LSL Constants/Status/ja|no_default=*}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llSetStatus}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetStatus}}|}}<br />
|events=<br />
|cat1=Status<br />
|cat2<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=STATUS_BLOCK_GRAB/ja&diff=1175232
STATUS BLOCK GRAB/ja
2012-12-12T05:29:53Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=STATUS_BLOCK_GRAB<br />
|type=integer<br />
|value={{LSL Hex/ja|0x40|64}}<br />
|desc=このフラグが設定されると、オブジェクトを{{LSLGC/ja|Grab|つかむ}}ことができなくなります。<br />
<br />
すなわち、このフラグが有効になった物理オブジェクトをつかもうとしても、そのオブジェクトを操作できないという事です。<br />
|examples<br />
|constants=<br />
{{!}}<br />
{{LSL Constants/Status/ja|no_default=*}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llDetectedGrab}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llSetStatus}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetStatus}}|}}<br />
|events=<br />
{{LSL DefineRow||{{LSLGC/ja|Touch}}|}}<br />
|cat1=Status<br />
|cat2=Touch<br />
|cat3=Grab<br />
|cat4<br />
}}</div>
Naoya Bellic
https://wiki.secondlife.com/w/index.php?title=STATUS_SANDBOX/ja&diff=1175231
STATUS SANDBOX/ja
2012-12-12T05:29:37Z
<p>Naoya Bellic: </p>
<hr />
<div>{{LSL Constant/ja<br />
|name=STATUS_SANDBOX<br />
|type=integer<br />
|value={{LSL Hex/ja|0x20|32}}<br />
|desc=このフラグはオブジェクトが持ち去られるのを防ぎます。<br />
<br />
これにより、オブジェクトは[[Land/ja#Region|リージョン]]から出られなくなり、またフラグが設定された地点より 10m を超えて移動できなくなります。<br />
<br />
オブジェクトがリージョンから出ようとしたり 10m を超えて移動しようとすると、[[STATUS_PHYSICS|物理]]属性が取れてランタイム エラー "Hit Sandbox Limit" が発生します。<br />
|examples<br />
|constants=<br />
{{!}}<br />
{{LSL Constants/Status/ja|no_default=*}}<br />
|functions=<br />
{{LSL DefineRow||{{LSLG/ja|llSetStatus}}|}}<br />
{{LSL DefineRow||{{LSLG/ja|llGetStatus}}|}}<br />
|events=<br />
|cat1=Status<br />
|cat2=Sandbox<br />
|cat3<br />
|cat4<br />
}}</div>
Naoya Bellic