Engine

マテリアルファイル | ファイルフォーマット

マテリアルファイル　( *.mtl )　のフォーマットリファレンスです。
Version 1.0.0.0

最初のフォーマット

Version 1.1.0.0

[Chg] | データをヘッダを分割。

ファイルヘッダ
情報ヘッダ
テクスチャ

ファイルヘッダ

ファイルヘッダはマテリアルファイルを識別するためのものです。

ファイルヘッダ ( MTL_FILE_HEADER 構造体 )

- MTL_FILE_HEADER

名前 | 型 | 説明 | 値
--- | --- | --- | ---
magic | UInt32 | マジック値 | 0x5F4C544D
version | UInt32 | バージョン | 0x01010000

情報ヘッダ

情報ヘッダはマテリアル全般の情報を記述します。

情報ヘッダ ( MTL_INFO_HEADER 構造体 )

- 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_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_VERTEX_SIMPLE | シンプルバーテックス | 0
MTL_VERTEX_BLEND | ブレンドバーテックス | 1
MTL_VERTEX_TYPE_MAX |  | 2

- MTL_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_DEFAULT | デフォルトマテリアル | 0

- MTL_SHADER_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_SHADER_NORMAL | 通常 | 0
MTL_SHADER_WATER | ウォーター | 1
MTL_SHADER_SHADELESS | ライティング無し | 2

- MTL_BLEND_MODE 列挙定数

名前 | 説明 | 値
--- | --- | ---
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 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_TEXTURE_FILTER_POINT | ポイント | 0
MTL_TEXTURE_FILTER_LINEAR | リニア | 1
MTL_TEXTURE_FILTER_ANISOTROPIC | アニソトロピック | 2

- MTL_TEXTURE_ADDRESS 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_TEXTURE_ADDRESS_WRAP | ラップ | 0
MTL_TEXTURE_ADDRESS_CLAMP | クランプ | 1

- MTL_DIFFUSE_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_DIFFUSE_LAMBERT | ランバート | 0
MTL_DIFFUSE_HALF_LAMBERT | ハーフランバート | 1

- MTL_SPECULAR_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_SPECULAR_NONE | 無し | 0
MTL_SPECULAR_PHONG | フォン | 1
MTL_SPECULAR_BLINN_PHONG | ブリンフォン | 2
MTL_SPECULAR_COOK_TORRANCE | クックトランス | 3

- MTL_REFLECT_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_REFLECT_NONE | 反射をしない | 0
MTL_REFLECT_NORMAL | 通常の反射 | 1
MTL_REFLECT_FRESNEL | フレネル効果がある反射 | 2

- MTL_BUMP_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_BUMP_NORMAL_MAPPING | 法線マッピング | 0
MTL_BUMP_PARALLAX_MAPPING | 視差マッピング | 1

- MTL_WAVE_TYPE 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_WAVE_NORMAL | 通常の波 | 0
MTL_WAVE_REFRACT | 屈折効果がある波 | 1

- MTL_WAVE_DIR 列挙定数

名前 | 説明 | 値
--- | --- | ---
MTL_WAVE_NEGATIVE_U | テクスチャ空間の左方向 | 0
MTL_WAVE_POSITIVE_U | テクスチャ空間の右方向 | 1
MTL_WAVE_NEGATIVE_V | テクスチャ空間の上方向 | 2
MTL_WAVE_POSITIVE_V | テクスチャ空間の下方向 | 3

- MTL_FLAG 列挙定数

名前 | 説明 | 値
--- | --- | ---
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_METHOD 列挙定数

名前 | 説明 | 値
--- | --- | ---
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 が設定されていた場合に存在します。