使用assimp加载纹理时出错

时间:2015-12-05 15:09:10

标签: c++ opengl assimp

当我尝试使用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>

0 个答案:

没有答案