Difference between revisions of "LlGetBoundingBox/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{LSL_Function/ja
{{LSL_Function/uuid/ja|object|sim=*}}{{LSL_Function/ja
|func_id=277|func_sleep=0.0|func_energy=10.0
|func_id=277|func_sleep=0.0|func_energy=10.0
|func=llGetBoundingBox|return_type=list
|func=llGetBoundingBox|return_type=list
|p1_type=key|p1_name=object|p1_desc=Sim内のオブジェクトかエージェント。
|p1_type=key|p1_name=object
|func_footnote=結合している箱は全体のリンクセットからみるのであって、要求されたプリムのみをみるわけではありません。
|func_footnote=取り囲む直方体はリンクセット全体を囲むものであり、要求されたプリムのみを囲むものではありません。<br/>'''object''' が見つからない場合、空のリスト (<code>[]</code>) を返します。
|func_desc
|func_desc='''object''' を取り囲む直方体について、その中心を挟んで互いに対角となる頂点の、ルートプリムに対する相対座標のリストを返します。<br/>形式: <code>[ (vector) {{HoverText|min_corner|vector min_corner;}}, (vector) {{HoverText|max_corner|vector max_corner;}} ]</code>
|return_text=形式: [ (vector) min_corner, (vector) max_corner ]<br/>'''object'''のルートプリムと相対的に結合している箱(訳注:最も相対座標が小さい子プリムと、最も相対座標が大きい子プリム)の相対座標の一覧
|spec=
|spec
オブジェクトはプリムのシェイプと上に座っているアバターで具現されます。Bounding Box はオブジェクトの具現を含めることのできる可能な限り小さい直平行 6 面体で、面は地域の座標軸に沿って配置されています。
|caveats
|caveats=
* '''object''' がルートプリムでなくても関係なく、オブジェクトの Bounding Box は返ります。
* アタッチメントには自分自身の Bounding Box がありません (物理的な相互作用がないため{{Footnote|[[Phantom]] と [[VolumeDetect]] には物理的な相互作用があります。このため、これらにも Bounding Box があるのです。|Phantom と VolumeDetect には物理的な相互作用があります。このため、これらにも Bounding Box があるのです。}}) 。その代わり、アバターの Bounding Box が返ります。
 
==== サーバ 1.36 以上 ====
* アバターがオブジェクトに座ると、アバターから報告される Bounding Box は不変です。
 
==== サーバ 1.36 より前 ====
* オブジェクトやアバターから報告される Bounding Box は、物理属性の許容バッファがないため、 3 次元の全てで 0.1 メートルずつ小さくなります。この間違いはスクリプトの後方互換性のためにそのまま維持されています。min_corner から <0.05, 0.05, 0.05> を引き、max_corner に <0.05, 0.05, 0.05> を足して正確な Bounding Box を得てください。
|constants
|constants
|examples
|examples=<source lang="lsl2">default//アバターをぴったり取り囲むサイズに変形する直方体
{
    state_entry()
    {
        llSetStatus(STATUS_PHANTOM, TRUE);
    }
   
    touch_start(integer total_number)
    {
        key target = llDetectedKey(0);
        list box = llGetBoundingBox(target);
        vector center = (llList2Vector(box, 0) + llList2Vector(box, 1)) * 0.5;
        vector size = llList2Vector(box, 1) - llList2Vector(box, 0);
        llSetPrimitiveParams([PRIM_POSITION, center, PRIM_SIZE, size]);
        llSetText("Name: " + llDetectedName(0) + ", UUID: " + (string)target +
                "\nBounding Box Size: " + (string)size, <1.0, 1.0, 1.0>, 1.0);
    }
}</source>
 
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llGetAgentSize/ja|llGetAgentSize]]|}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAgentSize}}|}}
|also_events
|also_events
|also_tests
|also_tests

Latest revision as of 13:35, 25 February 2016

要約

関数: list llGetBoundingBox( key object );

object を取り囲む直方体について、その中心を挟んで互いに対角となる頂点の、ルートプリムに対する相対座標のリストを返します。
形式: [ (vector) min_corner, (vector) max_corner ]
list で返します。

• key object 同じ 地域 にある アバター または プリムUUID

取り囲む直方体はリンクセット全体を囲むものであり、要求されたプリムのみを囲むものではありません。
object が見つからない場合、空のリスト ([]) を返します。

仕様

オブジェクトはプリムのシェイプと上に座っているアバターで具現されます。Bounding Box はオブジェクトの具現を含めることのできる可能な限り小さい直平行 6 面体で、面は地域の座標軸に沿って配置されています。

警告

  • object がルートプリムでなくても関係なく、オブジェクトの Bounding Box は返ります。
  • アタッチメントには自分自身の Bounding Box がありません (物理的な相互作用がないため[1]) 。その代わり、アバターの Bounding Box が返ります。

サーバ 1.36 以上

  • アバターがオブジェクトに座ると、アバターから報告される Bounding Box は不変です。

サーバ 1.36 より前

  • オブジェクトやアバターから報告される Bounding Box は、物理属性の許容バッファがないため、 3 次元の全てで 0.1 メートルずつ小さくなります。この間違いはスクリプトの後方互換性のためにそのまま維持されています。min_corner から <0.05, 0.05, 0.05> を引き、max_corner に <0.05, 0.05, 0.05> を足して正確な Bounding Box を得てください。

サンプル

default//アバターをぴったり取り囲むサイズに変形する直方体
{
    state_entry()
    {
        llSetStatus(STATUS_PHANTOM, TRUE);
    }
    
    touch_start(integer total_number)
    {
        key target = llDetectedKey(0);
        list box = llGetBoundingBox(target);
        vector center = (llList2Vector(box, 0) + llList2Vector(box, 1)) * 0.5;
        vector size = llList2Vector(box, 1) - llList2Vector(box, 0);
        llSetPrimitiveParams([PRIM_POSITION, center, PRIM_SIZE, size]);
        llSetText("Name: " + llDetectedName(0) + ", UUID: " + (string)target + 
                "\nBounding Box Size: " + (string)size, <1.0, 1.0, 1.0>, 1.0);
    }
}

関連項目

関数

•  llGetAgentSize

特記事項

Search JIRA for related Issues

脚注

  1. ^ PhantomVolumeDetect には物理的な相互作用があります。このため、これらにも Bounding Box があるのです。

Signature

function list llGetBoundingBox( key object );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。