LlGetBoundingBox/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llGetBoundingBox( key object );

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

• 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 を得てください。

サンプル

<lsl>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);
   }
}</lsl>

関連項目

関数

•  llGetAgentSize

特記事項

Search JIRA for related Issues

脚注

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

Signature

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