2

「Assimp」ライブラリを統合して、OBJ/MTL ファイル コンポーネントをロードしました。

すべて正常に動作します。

しかし、次の MTL ファイルの例に注目してみましょう。

# Blender MTL File: 'plane.blend'
# Material Count: 1

newmtl PlaneMtl
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2

map_Ka ambient_texture.jpg
map_Kd diffuse_texture.jpg
map_Ks specular_texture.jpg
map_Bump bump_texture.jpg

そして、次のコードを調べてみましょう。

aiMesh *pMesh = scene->mMeshes[idz];
aiMaterial *pMaterial = scene->mMaterials[pMesh->mMaterialIndex];

aiString ambient_texture_path, diffuse_texture_path, specular_texture_path, bump_texture_path;
pMaterial->GetTexture(aiTextureType_AMBIENT, 0, &ambient_texture_path);
pMaterial->GetTexture(aiTextureType_DIFFUSE, 0, &diffuse_texture_path);
pMaterial->GetTexture(aiTextureType_SPECULAR, 0, &specular_texture_path);
pMaterial->GetTexture(aiTextureType_HEIGHT, 0, &bump_texture_path);

std::cout << "AmbientTexture: " << ambient_texture_path.C_Str() << std::endl;
std::cout << "DiffuseTexture: " << diffuse_texture_path.C_Str() << std::endl;
std::cout << "SpecularTexture: " << specular_texture_path.C_Str() << std::endl;
std::cout << "BumpTexture: " << bump_texture_path.C_Str() << std::endl;

出力は次のとおりです。

ambient_texture.jpg
diffuse_texture.jpg
specular_texture.jpg
bump_texture.jpg

ご覧のとおり、すべてが完全に機能し、キーワード「map_Ka、map_Kd、map_Ks、および map_Bump」は、それぞれアンビエント、ディフューズ、スペキュラー、およびバンプ (高さ) マップを参照しています。したがって、これらのキーワードは正しいです。

しかし、たとえば法線テクスチャ (法線マッピング用) とディスプレイスメント テクスチャ (ディスプレイスメント マッピング用) はどうでしょうか?

テストするために、MTL ファイルに次の行を追加しようとしました。

map_Normal normal_texture.jpg
map_Disp disp_texture.jpg

コードを使用して:

aiString normal_texture_path, displacement_texture_path;

pMaterial->GetTexture(aiTextureType_NORMALS, 0, &normal_texture_path);
pMaterial->GetTexture(aiTextureType_DISPLACEMENT, 0, &displacement_texture_path);

std::cout << "NormalTexture: " << normal_texture_path.C_Str() << std::endl;
std::cout << "DispTexture: " << displacement_texture_path.C_Str() << std::endl;

そして出力:

NormalTexture:
DispTexture:

そのため、キーワード「map_Normal」と「map_Disp」は正しくないため、Wavefront MTL ドキュメントには含まれていません。

WaveFront MTL 形式に関する正しい公式ドキュメントを見つけることができませんでした (Wikipedia またはチュートリアルにあるものだけが公式で完全なものではありません)。

すべてのキーワードが説明されている Wavefront MTL および OBJ 形式に関する公式ドキュメントは存在しますか?

そうでない場合、法線テクスチャとディスプレイスメント テクスチャのキーワードを知っている人はいますか?

4

2 に答える 2

0

Alias/Wavefront は現在非常に古く、非常に多くの所有企業を通過しているため、「公式」仕様がどこにでもあるとは思えません。

バンプ マップとディスプレイスメント マップのキーワードの詳細を含む、Paul Bourke による優れた記事をお勧めします。(ただし法線マップではありません - OBJ の公式マップではなかったと思います)

http://paulbourke.net/dataformats/mtl/

お役に立てれば。

于 2014-10-20T02:00:03.363 に答える