値 > コレクション > コレクションのタイプ > MaterialLibrary 値 |
MaterialLibrary は、マテリアルの表を配列として含みます。
3ds Max のシステム グローバル変数 currentMaterialLibrary および sceneMaterials には、MaterialLibrary インスタンスがあります。
システム グローバル変数 meditMaterials は、MaterialLibrary 値ではなく、マテリアル エディタ内のサンプル スロットにおけるマテリアルの仮想配列です。
ほとんどの場合、 meditMaterials は MaterialLibrary 値となりますが、例外として meditMaterials 要素へ、マテリアルや textureMap 値を割り当てることができます。
MaterialLibrary 値はマップ可能です。
コンストラクタ:
currentMaterialLibrary
現在のマテリアル ライブラリが含まれたシステム グローバル変数です。
sceneMaterials
シーン内のすべてのマテリアルが含まれたシステム グローバル変数です。
meditMaterials
[マテリアル エディタ](Material Editor)の 24 個のサンプル スロット マテリアルが含まれたシステム グローバル変数です。
materialLibrary { <material> }
一時的なマテリアル ライブラリを作成します。 append 関数を使用してこのライブラリにマテリアルを追加したり、このトピックで説明されている saveTempMaterialLibrary 関数および loadTempMaterialLibrary 関数を使用してディスクへの保存およびディスクからのロードを行うことができます。
プロパティ
<mat_lib>.count : Integer, read-only
ライブラリ内のマテリアルの数を返します。
演算子
<mat_lib>[ <integer> | <name> | <string> ]
マテリアル ライブラリからマテリアルを取得します。マテリアル ライブラリは配列と同様に、整数のインデックス、またはマテリアル名を名前または文字列としてインデックスに使用できます。
<mat_lib>[ <integer> | <name> | <string> ] = ( <material> | <textureMap> )
指定されたマテリアルまたはテクスチャ マップをマテリアル ライブラリに割り当てます。
マテリアル ライブラリは配列と同様に、整数のインデックス、またはマテリアル名を名前または文字列としてインデックスに使用できます。
マテリアル ライブラリがインデックス値で指定されていて、そのインデックス値がマテリアル ライブラリのサイズより大きい場合、ランタイム エラーが発生します。
マテリアル ライブラリがマテリアル名で指定されていて、そのマテリアル名がマテリアル ライブラリに存在しない場合、マテリアルまたはテクスチャ マップがマテリアル ライブラリに追加されます
meditMaterials[<slot_index_integer>]
インデックスで指定されたマテリアル エディタ スロットにあるマテリアルまたはテクスチャ マップを返します。
<slot_index_integer> の有効な値は 1 ~ 24 です。
meditMaterials[<slot_index_integer>] = ( <material> | <textureMap> )
指定したマテリアルまたはテクスチャ マップをインデックス付きマテリアル エディタ スロットに割り当てます。
<slot_index_integer> の有効な値は 1 ~ 24 です。
例: |
meditMaterials[3]= standard() --sets the third slot of the Material Editor --to a new standard material. |
メソッド
append <mat_lib> <material>
指定したマテリアルをマテリアル ライブラリに追加します。このメソッドは、 meditMaterials マテリアル ライブラリには適用されません。
deleteItem <mat_lib> ( <integer> | <name> | <string> )
指定したマテリアルをマテリアル ライブラリから削除します。マテリアルは、マテリアル ライブラリ内のインデックスされたマテリアル、文字列、または名前として指定できます。このメソッドは、 meditMaterials マテリアル ライブラリには適用されません。
findItem <mat_lib> <material>
マテリアル ライブラリでのマテリアルのインデックスを返します。マテリアルがマテリアル ライブラリにない場合は、ゼロを返します。
関連するメソッド
getMeditMaterial <slot_index_integer>
指定したマテリアル エディタ内のトップ レベルのマテリアルまたはテクスチャマップを返します。 <slot_index_integer> の有効な値は 1 ~ 24 です。
例: |
theMat = getMeditMaterial 3 --gets the material from the third slot of the Material Editor. |
setMeditMaterial <slot_index> ( <material> | <textureMap> )
getMeditMaterial 関数を補完して、番号の付いたマテリアル エディタ スロットにマテリアルおよびテクスチャ マップを配置できるようにします。
loadDefaultMatLib()
既存の 3ds Max マテリアル ライブラリ ファイルをロードします。
loadMaterialLibrary <filename_string>
名前の付いた 3ds Max マテリアル ライブラリ ファイルをロードして、現在のマテリアル ライブラリにします。ファイル名が完全な特定のディレクトリ パスを持たない場合は、この関数は現在設定されているビットマップ パスすべてを検索します。正常にロードされた場合は true が、失敗した場合は false が返されます。
saveMaterialLibrary <filename_string>
現在のマテリアル ライブラリを名前付きファイルに保存します。正常に保存された場合は true が、失敗した場合は false が返されます。
fileOpenMatLib()
このメソッドでは[ファイルを開く](File Open)ダイアログ ボックスが表示され、ユーザがロードするマテリアル ライブラリを選択することができます。
fileSaveAsMatLib()
標準の[名前を付けて保存](Save File As)ダイアログ ボックスが表示され、ユーザが現在のマテリアルを保存できます。
fileSaveMatLib [quiet:<bool>]
現在のマテリアル ライブラリが以前保存された(名前が付いている)場合、このメソッドによりマテリアル ライブラリは同じファイルに保存されます。以前に保存していない場合は、標準の[名前を付けて保存](Save File As)ダイアログ ボックスが表示され、現在のマテリアル ライブラリを保存できます。
3ds Max 8 以降 で使用可能な quiet: オプションの詳細については、「抑制モード」を参照してください。
getMatLibFileName()
現在のマテリアル ライブラリ ファイルの名前を文字列値として返します。
例: |
標準の配列インデックス付きアクセサを使用して、ライブラリ内のマテリアルの取得や設定ができます。MaterialLibrary では、インデックスとして名前と文字列リテラルを使用して、名前別にライブラリ内のマテリアルを取得できます。 |
$foo.material = currentMaterialLibrary["Rough Gold"] |
for m in sceneMaterials do print m.name |
append currentMaterialLibrary $baz.material |
<MAXMaterialLibrary>loadTempMaterialLibrary <mtllib_file_name>
指定された 3ds Max マテリアル ライブラリ ファイルをロードします。 loadMaterialLibrary() とは異なり、マテリアル ライブラリを現在のマテリアル ライブラリにはしません。ファイル名が完全な特定のディレクトリ パスを持たない場合は、この関数はマテリアル ライブラリのパスを検索し、現在設定されているビットマップ パスすべてを検索します。正常にロードされた場合は MAXMaterialLibrary 値が返され、失敗した場合には未定義になります。
3ds Max 9 以降 で使用可能です。
<boolean>saveTempMaterialLibrary <MAXMaterialLibrary> <mtllib_file_name>
指定されたMAXMaterialLibraryの値を名前付きファイルに保存します。正常に保存された場合は true が、失敗した場合は false が返されます。
3ds Max 9 以降 で使用可能です。
例: |
標準の配列インデックス付きアクセサを使用して、ライブラリ内のマテリアルの取得や設定ができます。MaterialLibrary では、インデックスとして名前と文字列リテラルを使用して、名前別にライブラリ内のマテリアルを取得できます。 |
a = loadTempMaterialLibrary "mrArch_DesignTemplates.mat" --> #materialLibrary() a[1] --> brushed metal:Arch___Design__mi saveTempMaterialLibrary a "$matlibs/test.mat" --> true |
<void> UpdateSceneMaterialLib()
シーン マテリアル ライブラリへの更新を強制実行します(sceneMaterials global)。何らかのシーン操作を行った後にシーン マテリアル ライブラリが正確であることは保証されません。たとえば、ノードを削除した場合も、このノードのマテリアルがシーン マテリアル ライブラリに表示されることがあります。