ObjectSet 値

> コレクション > コレクションのタイプ > ObjectSet 値

 

   

値とコレクション - クイック ナビゲーション

ObjectSet3ds Max 内の主なシーン オブジェクト カテゴリを示します。以下の「コンストラクタ」はすべて予約システム変数です。ObjectSet 値はマップ可能です。

   

コンストラクタ:

objects  --all the objects
geometry  --the standard 3ds Max categories... 
lights
cameras
helpers
shapes
systems
spacewarps
selection  --the current selection

プロパティ

<objectset>.center : Point3, read-only

セット内にあるオブジェクトすべてのバウンディング ボックスの中心を返します。

   

<objectset>.max : Point3, read-only

バウンディング ボックスの最大コーナーを返します。

   

<objectset>.min : Point3, read-only

バウンディング ボックスの最小コーナーを返します。

   

<objectset>.count : Integer, read-only

セット内のオブジェクトの数を返します。

   

演算子

<objectset>[<integer>]

コレクションのメンバにアクセスします。インデックスは 1 から始まります。

   

<objectset> as array

objectset コレクションを配列に変換します。

   

関連するメソッド

clearSelection()

これは、現在のシーン ノードの選択をクリアします。

   

deselect <PathName>

これは、指定されたノードを選択解除します。

例:

deselect $box* --deselects all items whose names start with "box".
select <PathName>

最初に現在の選択を解除して、その後で指定されたノードを選択します。

   

selectMore <PathName>

現在の選択に指定したノードを追加します。

   

getCurrentSelection()

現在の選択を配列として返します。これは、selection as array と似ています。ただし、 selection as array は選択の「コピー」を返します。

注:

オブジェクト セットは、実際にはセットを与え、同じ名前の予約されたシステム変数を保存する特別なタイプの値であり、これらの変数を他の変数に割り当てたり、関数の引数として渡すことができるようになります。

ObjectSet を変数に保存する場合、ObjectSet 内のオブジェクトではなく、ObjectSet 値が保存されます。このため、シーンが変更され、この変更が ObjectSet に影響する場合、変数に割り当てられた値もシーンの変更に応じてダイナミックに変更されます。

現在 ObjectSet 内にあるオブジェクトのスナップショットを変数に保存するには、まず as 演算子を使用して ObjectSet を配列に変換します。

ObjectSet を次のようにパス名のルートとして使うことができます。

$helpers/d*

これで、パス名検索の対象を指定オブジェクト セットに限定できます。上の例では、「d」で始まるヘルパー オブジェクトのみを指定できます。

シーケンス処理の順序は 1 つの安定したシーン内では一貫していますが、多少差が生じます。これは、3ds Max がそのオブジェクト階層を内部的にどのように格納するかに依存し、大部分がそのシーンへの追加やシーンからの削除の順序に影響を受けるためです。

lights および cameras オブジェクト セットは、そのライトやカメラのターゲット オブジェクトがある場合、それを含みます。すべてのライトまたはカメラで、あるプロパティの値を変更したい場合は、ObjectSet の各オブジェクトについて、それがライトまたはカメラであることを確認するテストを行って、個別に処理する必要があります。

すべてのライトで multiplier プロパティの値を増加させるには、以下のように記述します。

for obj in lights do
if iskindof obj light do
obj.multiplier *= 1.3

s = selection[1]  --grab the first object in the current selection
move cameras[2] [x, y, z + 10]  --move the second camera
--select everything within a 100 units of $foo
select (for o in objects where distance o $foo < 100 collect o)

関連事項