-
マテリアルファイル ( *.mtl ) のフォーマットリファレンスです。
Version 1.0.0.0
- 最初のフォーマット
| [Chg] | データをヘッダを分割。 |
| ファイルヘッダ |
| 情報ヘッダ |
| テクスチャ |
ファイルヘッダ
-
ファイルヘッダはマテリアルファイルを識別するためのものです。
- MTL_FILE_HEADER
| ファイルヘッダ ( MTL_FILE_HEADER 構造体 ) |
| 名前 | 型 | 説明 | 値 |
|---|---|---|---|
| magic | UInt32 | マジック値 | 0x5F4C544D |
| version | UInt32 | バージョン | 0x01010000 |
情報ヘッダ
-
情報ヘッダはマテリアル全般の情報を記述します。
- MTL_INFO_HEADER
- MTL_VERTEX_TYPE 列挙定数
- MTL_TYPE 列挙定数
- MTL_SHADER_TYPE 列挙定数
- MTL_BLEND_MODE 列挙定数
- MTL_TEXTURE_FILTER 列挙定数
- MTL_TEXTURE_ADDRESS 列挙定数
- MTL_DIFFUSE_TYPE 列挙定数
- MTL_SPECULAR_TYPE 列挙定数
- MTL_REFLECT_TYPE 列挙定数
- MTL_BUMP_TYPE 列挙定数
- MTL_WAVE_TYPE 列挙定数
- MTL_WAVE_DIR 列挙定数
- MTL_FLAG 列挙定数
- MTL_TRANSPARENCY_METHOD 列挙定数
| 情報ヘッダ ( MTL_INFO_HEADER 構造体 ) |
| 名前 | 型 | 説明 |
|---|---|---|
| vertexShader | UInt32[MTL_VERTEX_TYPE_MAX] | バーテックスシェーダーの識別子 |
| pixelShader | UInt32 | ピクセルシェーダーの識別子 |
| type | UInt32 | マテリアルタイプ MTL_TYPE 列挙定数のいずれか。 |
| shaderType | UInt32 | シェーダータイプ MTL_SHADER_TYPE 列挙定数のいずれか |
| blendMode | UInt32 | ブレンドモード MTL_BLEND_MODE 列挙定数のいずれか |
| textureFilter | UInt32 | テクスチャフィルター MTL_TEXTURE_FILTER 列挙定数のいずれか。 |
| textureAddressing | UInt32 | テクスチャアドレッシング MTL_TEXTURE_ADDRESS 列挙定数のいずれか。 |
| flags | UInt32 | フラグ MTL_FLAG 列挙定数の組み合わせ。 |
| transparencyMethod | UInt32 | 半透明メソッド MTL_TRANSPARENCY_METHOD 列挙定数のいずれか。 |
| ambientColor | Float32[4] | アンビエントカラー ambientColor = { R, G, B, 1.0 } |
| diffuseType | UInt32 | ディフューズ : タイプ MTL_DIFFUSE_TYPE 列挙定数のいずれか。 |
| diffuseColor | Float32[4] | ディフューズ : カラー diffuseColor = { R, G, B, A } |
| diffuseFresnel | Float32 | ディフューズ : フレネル効果 : 強さ |
| diffuseRTIntensity | Float32 | ディフューズ : リムライティング : 鋭さ |
| diffuseRTScale | Float32 | ディフューズ : リムライティング : スケール |
| specularType | UInt32 | スペキュラー : タイプ MTL_SPECULAR_TYPE 列挙定数のいずれか。 |
| specularColor | Float32[4] | スペキュラー : カラー specularColor = { R, G, B, スペキュラーの強さ } |
| specularIntensity | Float32 | スペキュラー : 鋭さ |
| specularScale | Float32 | スペキュラー : スケール |
| specularCTIntensity | Float32 | スペキュラー : クックトランス : 効果の強さ |
| specularCTRoughness | Float32 | スペキュラー : クックトランス : 荒さ |
| reflectType | UInt32 | 反射 : タイプ MTL_REFLECT_TYPE 列挙定数のいずれか。 |
| reflectScale | Float32 | 反射 : スケール |
| reflectIntensity | Float32 | 反射 : 強さ |
| reflectBias | Float32 | 反射 : バイアス |
| reflectExposure | Float32 | 反射 : 露光 |
| emissiveColor | Float32[4] | エミッシブ : カラー emissiveColor = { R, G, B, エミッシブの強さ } |
| emissiveScale | Float32 | エミッシブ : スケール |
| bumpType | UInt32 | バンプ : タイプ MTL_BUMP_TYPE 列挙定数のいずれか。 |
| bumpHeightScale | Float32 | バンプ : 高さのスケール |
| bumpReflectBias | Float32 | バンプ : 反射への影響度 |
| waveType | UInt32 | ウェーブ : タイプ MTL_WAVE_TYPE 列挙定数のいずれか。 |
| waveDir | UInt32 | ウェーブ : 方向 MTL_WAVE_DIR 列挙定数のいずれか。 |
| waveSpeed | Float32 | ウェーブ : 速度 |
| waveUVOffset | Float32 | ウェーブ : UVオフセット |
| refractIntensity | Float32 | 屈折 : 強度 |
| refractDepthOfMax | Float32 | 屈折 : 強度が最大になる深さ |
| softEdgeTickness | Float32 | ソフトエッジ : 厚み |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_VERTEX_SIMPLE | シンプルバーテックス | 0 |
| MTL_VERTEX_BLEND | ブレンドバーテックス | 1 |
| MTL_VERTEX_TYPE_MAX | 2 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_DEFAULT | デフォルトマテリアル | 0 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_SHADER_NORMAL | 通常 | 0 |
| MTL_SHADER_WATER | ウォーター | 1 |
| MTL_SHADER_SHADELESS | ライティング無し | 2 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_BLEND_COPY | コピー | 0 |
| MTL_BLEND_NORMAL | 通常 | 1 |
| MTL_BLEND_ADD | 加算 | 2 |
| MTL_BLEND_SUB | 減算 | 3 |
| MTL_BLEND_MUL | 乗算 | 4 |
| MTL_BLEND_SCREEN | スクリーン | 5 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_TEXTURE_FILTER_POINT | ポイント | 0 |
| MTL_TEXTURE_FILTER_LINEAR | リニア | 1 |
| MTL_TEXTURE_FILTER_ANISOTROPIC | アニソトロピック | 2 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_TEXTURE_ADDRESS_WRAP | ラップ | 0 |
| MTL_TEXTURE_ADDRESS_CLAMP | クランプ | 1 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_DIFFUSE_LAMBERT | ランバート | 0 |
| MTL_DIFFUSE_HALF_LAMBERT | ハーフランバート | 1 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_SPECULAR_NONE | 無し | 0 |
| MTL_SPECULAR_PHONG | フォン | 1 |
| MTL_SPECULAR_BLINN_PHONG | ブリンフォン | 2 |
| MTL_SPECULAR_COOK_TORRANCE | クックトランス | 3 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_REFLECT_NONE | 反射をしない | 0 |
| MTL_REFLECT_NORMAL | 通常の反射 | 1 |
| MTL_REFLECT_FRESNEL | フレネル効果がある反射 | 2 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_BUMP_NORMAL_MAPPING | 法線マッピング | 0 |
| MTL_BUMP_PARALLAX_MAPPING | 視差マッピング | 1 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_WAVE_NORMAL | 通常の波 | 0 |
| MTL_WAVE_REFRACT | 屈折効果がある波 | 1 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_WAVE_NEGATIVE_U | テクスチャ空間の左方向 | 0 |
| MTL_WAVE_POSITIVE_U | テクスチャ空間の右方向 | 1 |
| MTL_WAVE_NEGATIVE_V | テクスチャ空間の上方向 | 2 |
| MTL_WAVE_POSITIVE_V | テクスチャ空間の下方向 | 3 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_BACKCULLING | 背面カリング | 0x00000001 |
| MTL_TRANSPARENCY | 半透明 | 0x00000002 |
| MTL_BOTH_LIGHTING | 両面ライティング | 0x00000004 |
| MTL_DIFFUSE_FRESNEL | ディフューズ : フレネル効果 | 0x00000008 |
| MTL_DIFFUSE_RIMLIGHTING | ディフューズ : リムライティング | 0x00000010 |
| MTL_SOFTEDGE | ソフトエッジ ( ソフトパーティクル ) | 0x00000020 |
| MTL_SHADOW_RECEIVE | シャドウマッピング : 自身に影を落とす | 0x00000040 |
| MTL_SHADOW_CAST | シャドウマッピング : 他者に影を落とす | 0x00000080 |
| MTL_DIFFUSE_TEXTURE | ディフューズテクスチャを所持 | 0x00000100 |
| MTL_SPECULAR_TEXTURE | スペキュラーテクスチャを所持 | 0x00000200 |
| MTL_EMISSIVE_TEXTURE | エミッシブテクスチャを所持 | 0x00000400 |
| MTL_BUMP_TEXTURE | バンプテクスチャを所持 | 0x00000800 |
| 名前 | 説明 | 値 |
|---|---|---|
| MTL_TRANSPARENCY_LUMP | 一括描画 | 0 |
| MTL_TRANSPARENCY_INDIVIDUAL | ポリゴン単位での描画 | 1 |
テクスチャ
-
マテリアルで使用するテクスチャを格納します。
| ディフューズテクスチャ |
| スペキュラーテクスチャ |
| エミッシブテクスチャ |
| バンプテクスチャ |
また、各テクスチャの構造は以下のようになります。
| 型 | 説明 |
|---|---|
| UInt32 | テクスチャのサイズ ( バイト単位 ) |
| UInt8[size] | テクスチャ size は直前に定義されたテクスチャのサイズになります。 |
ディフューズテクスチャ
- ディフューズテクスチャは MTL_INFO_HEADER::flags に MTL_DIFFUSE_TEXTURE が設定されていた場合に存在します。
スペキュラーテクスチャ
- スペキュラーテクスチャは MTL_INFO_HEADER::flags に MTL_SPECULAR_TEXTURE が設定されていた場合に存在します。
エミッシブテクスチャ
- エミッシブテクスチャは MTL_INFO_HEADER::flags に MTL_EMISSIVE_TEXTURE が設定されていた場合に存在します。
バンプテクスチャ
- バンプテクスチャは MTL_INFO_HEADER::flags に MTL_BUMP_TEXTURE が設定されていた場合に存在します。