当我尝试使用assimp库加载纹理时,我遇到了一个奇怪的问题。例: 我有这段代码,它加载相应的纹理图像
if (mat->GetTextureCount(aiTextureType_DIFFUSE) > 0) {
...
std::cout << "Loading texture file: " << textureName << std::endl;
...
}
else {
std::cout << "No texture image being imported " << std::endl;
}
其中mat是 const aiMaterial 类型。
现在,当我尝试使用相应的“name”.mtl文件加载“name”.obj文件时,其中mtl文件是
Blender MTL File: 'asteroid2.blend'
Material Count: 1
newmtl Material.001
Ns ...
Ka ...
Kd ...
Ks ...
Ni ..
d ...
illum ...
map_Kd asteroid.jpg
map_Bump asteroid.jpg
一切正常(假设我在文件夹中有一个asteroid.jpg)。即使我将图像名称更改为文件夹中的其他图像,它也能正常工作。
但是,我自己并没有制作这个模型。当我尝试加载我自己创建的模型(模型本身加载没有问题),使用正确的mtl文件和现有的jpg时,assimp加载器会立即进入“无纹理图像被导入”并且没有纹理加载。这就是我不理解的部分。
我在Blender制作模型,在其上放置材质和纹理图像,mtl也应该没问题:
Blender MTL File: 'Tree1_1.blend'
Material Count: 1
newmtl Material.001
Ns ...
Ka ...
Kd ...
Ks ...
Ni ...
d ...
illum ...
map_Bump tree1.jpg
map_Kd tree1.jpg
图片tree1.jpg位于同一个文件夹中。
我似乎无法找出问题所在。有没有人有想法?
非常感谢!
已解决:obj文件未正确导出,并且obj文件未与mtl文件链接(同名不够,mtl名称必须在obj源代码中定义:https://en.wikipedia.org/wiki/Wavefront_.obj_file)< / p>