diff --git a/qglengine/formats/loader_assimp.cpp b/qglengine/formats/loader_assimp.cpp index 4fd4e92..1544280 100644 --- a/qglengine/formats/loader_assimp.cpp +++ b/qglengine/formats/loader_assimp.cpp @@ -94,11 +94,12 @@ float aiMatFloat(const aiMaterial * m, const char * key, uint s0, uint s1, float if (r != aiReturn_SUCCESS) return def; return ret; } -QString aiMatMap(const aiMaterial * m, aiTextureType texture) { +QString aiMatString(const aiMaterial * m, const char * key, uint s0, uint s1) { aiString p; - aiReturn r = const_cast(m)->GetTexture(texture, 0, &p); - if (r != aiReturn_SUCCESS) return QString(p.C_Str()); - return QString(); + aiReturn r = const_cast(m)->Get(key, s0, s1, p); + //qDebug() << "GetTexture" << key << s0 << r << p.C_Str(); + if (r != aiReturn_SUCCESS) return QString(); + return QString(p.C_Str()); } Material * assimpMaterial(const aiMaterial * m) { if (!m) return 0; @@ -110,11 +111,11 @@ Material * assimpMaterial(const aiMaterial * m) { ret->color_diffuse = aiMatColor(m, AI_MATKEY_COLOR_DIFFUSE); ret->color_specular = aiMatColor(m, AI_MATKEY_COLOR_SPECULAR); ret->color_emission = aiMatColor(m, AI_MATKEY_COLOR_EMISSIVE); - ret->map_diffuse .bitmap_path = aiMatMap(m, aiTextureType_DIFFUSE); - ret->map_normal .bitmap_path = aiMatMap(m, aiTextureType_NORMALS); - ret->map_specular .bitmap_path = aiMatMap(m, aiTextureType_SPECULAR); - ret->map_roughness.bitmap_path = aiMatMap(m, aiTextureType_DIFFUSE_ROUGHNESS); - ret->map_emission .bitmap_path = aiMatMap(m, aiTextureType_EMISSIVE); + ret->map_diffuse .bitmap_path = aiMatString(m, AI_MATKEY_TEXTURE_DIFFUSE(0)); + ret->map_normal .bitmap_path = aiMatString(m, AI_MATKEY_TEXTURE_NORMALS(0)); + ret->map_specular .bitmap_path = aiMatString(m, AI_MATKEY_TEXTURE_SPECULAR(0)); + ret->map_roughness.bitmap_path = aiMatString(m, AI_MATKEY_TEXTURE_SHININESS(0)); + ret->map_emission .bitmap_path = aiMatString(m, AI_MATKEY_TEXTURE_EMISSIVE(0)); ret->transparency = 1.f - aiMatFloat(m, AI_MATKEY_OPACITY, 1.f); ret->setTypes(); return ret;