MAXScript 内部構成の定義

MAXScriptFunction Const Generic Const MappedGeneric Const NodeGeneric Const Primitives Const StructDef Const Class

'fn test val = ..." のように記述すると、MAXScriptFunction 値が作成され、変数 test 内に保存されます。変数テストが別のメソッド(フィルタ関数など)に渡されると、メソッドは値のクラスをテストし、MAXScriptFunction であることを確認してから、apply() を使って呼び出します。

前に付ける「'Const'」は、MAXScript の初期化時に作成される値であることを示します。

Generic は、同名のメソッドが 1 つ以上存在すること、それぞれのメソッドが別のクラスで定義されていることを表します。どのメソッドが呼び出されるかは、メソッドの最初の引数のクラスに依存します。たとえば、'random' が Generic として宣言されており、複数のクラス(Integer、Float、Point3、Color、Quat など)で 'random' を実装するメソッドが存在するとします。MAXScript は、スクリプト内に 'random v1 v2' を見つけると、v1 クラスに注目し、そのクラスの 'random' メソッドを呼び出します。MAXScript は、スクリプト内に 'random v1 v2' を見つけると、v1 クラスに注目し、そのクラスの 'random' メソッドを呼び出します。このため、v1 が浮動小数点の場合、MAXScript は Float::random() メソッドを呼び出します。

MappedGeneric は Generic と同じですが、最初の引数がコレクションの場合があります。 コレクションの場合、メソッドは、コレクションのメンバごとに別個に呼び出されます。たとえば、'deleteTime $box* 10f 10f' は、$box* という名前の全オブジェクトの全キーのフレーム 10 で 10f を削除します。deleteTime は、コントローラでも使用可能であるために Generic になっています。

NodeGeneric は MappedGeneric と同じですが、最初の引数がノードまたはノードのコレクションでなければなりません。 ただし、Generic が定義されている場合には、大きな意味は持ちません。最初の引数がコレクションの場合、メソッドはコレクションの各メンバに適用されます。

Primitives は、クラス固有のメソッドではありません。このメソッドは、引数(存在する場合)のタイプをチェックし、不適切な場合にはエラーを送出します。Primitive の定義は 1 つだけ存在します。

StructDef は構造体の値です。構造値がスクリプトにより作成される場合、クラスは StructDef になります。MAXScript が初期化時に構造を作成する場合、クラスは Const StructDef になります。このため、たとえば meshop メソッドは、meshop という構造内に存在するよう定義されます。この構造は初期化時に作成されるため、meshop のクラスは Const StructDef になります。

Const Class は、MAXScript 自体で定義されるクラスのことです。たとえば、BitArray は Const Class です。MAXScript は 3ds Max に登録されたクラスのスキャンも行います。これらのクラスは、MAXScript で Const MAXClass として作成されます。