名前は、実行中の MAXScript プログラム内にある変数やパラメータのようなエンティティを識別します。3ds Max シーンでオブジェクトを名前で識別する場合、パス名を使用します。パス名は、シーンの中の単一オブジェクトを指名すること、オブジェクト階層構造を介してある特定のオブジェクトを指定するほか、パターン マッチングを使ってオブジェクト セットを指名することができます。
<path_name> ::= $<path> | $ <path> ::= [ <objectset> ] [ / ] [ <levels> ] <level_name> <levels> ::= <level> { / <level> } <level> ::= <level_name>
<path> のルートは <objectset> でもかまいません。こうすれば、パス名検索の対象を指定オブジェクト セットに限定できます。ObjectSets については、「ObjectSet 値」を参照してください。
3ds Max シーンのすべてのオブジェクトは、トラック ビューに表示されるときに階層化されます。これは 3ds Max でのスキームの体系化にとって重要であると同時に、オブジェクト名をオブジェクトへの階層内におけるパスで示すことができます。これは、オペレーティング システムのディレクトリ構造におけるパス名とも類似しています。
また、パス名によって複数のオブジェクトを一度に参照する非常に便利な方法もあります。たとえば、ある親のすべての子を参照する、または、名前に foot という文字列を含むすべてのオブジェクトを参照するなどです。これには、OS シェル ファイル命名スキームと同様に、ワイルドカードのパターンを使用します。
例: |
dummy の直系子すべてに名前を付けます。「 * 」文字はワイルド カードとして使用されます。 |
名前が文字列 neck で始まるすべてのオブジェクトを検索します。すべての階層が対象になります。 |
また、「?」ワイルドカード文字を使用すると、「文字種にかかわらずに」 1 文字を対応付けることができます。つまり、「?」 ワイルドカード文字は任意の 1 文字に対応します。
ワイルドカード文字は、階層で親レベルを指定するときにも使用できます。
オブジェクトと、ネストされたレベルのすべての子を検索する場合、次のように、特別な省略レベル名「...」を使用します。
オブジェクトのパス名にワイルド カードを使用する場合、MAXScript は一致するオブジェクトをすべて同時に操作します。
一致する各オブジェクトのプロパティが設定される自動的なコレクション マッピングも実行できます。
例: |
名前に box を含むすべてのシーン オブジェクトの位置に [10,10,0] を追加します。詳細は、「Collections」を参照してください。 |
パス名の構文では、現在選択されているオブジェクトの指定に省略表記を使用できます。単独の「$」文字は、1 つのオブジェクトが選択されている場合は現在選択されているオブジェクトを、2 つ以上のオブジェクトが選択されている場合は ObjectSet としての現在の選択セットを、またオブジェクトが何も選択されていない場合は undefined を参照します。これはリスナーで選択を操作する場合に便利な省略表記です。
スクリプト内では、 selection ObjectSet を使用する方が、 $ を使用するより適しています。
selection は選択したオブジェクトの数にかかわらず、常に ObjectSet を含みます。選択されているオブジェクトがなく、 hide $ エラーが発生するところでは( $ の値は undefined )、 hide selection はエラーを生成しません。
3ds Max 内部の通知シグナルの処理方法のため、 select 変更ハンドラでの $ 形式による選択オブジェクトへのアクセスはお勧めしません。選択オブジェクトにアクセスするには selection ObjectSet を使用してください。 $ は選択処理中にまだ設定されていない情報に依存しますが、 selection では選択へのアクセスに異なるメソッドを使用し、すでに設定済みの情報を使用します。