如何使用gltf格式使用Assimp加载粗糙度/金属贴图?

时间:2019-01-09 19:17:42

标签: assimp gltf shading

我尝试加载gltf格式的场景。它具有金属质感和粗糙感(未嵌入)。现在,我想使用Assimp使用指定的纹理加载模型。我使用GetTexture()检索纹理,但是aiTextureType没有粗糙度/金属性的成员。

所以问题是: 如何导入它们?由于Assimp支持gltf,因此它还必须以某种方式支持基于物理的材质贴图。

谢谢

3 个答案:

答案 0 :(得分:0)

因此,如果有人遇到相同的问题: GetTexture(aiTextureType_UNKNOWN)返回pbr纹理的路径。

答案 1 :(得分:0)

对于GLTF PBR材料,您可以使用pbrmaterial.h

中定义的材料键
#include <assimp/pbrmaterial.h>

aiString fileBaseColor, fileMetallicRoughness;
material->GetTexture(AI_MATKEY_GLTF_PBRMETALLICROUGHNESS_BASE_COLOR_TEXTURE, &fileBaseColor);
material->GetTexture(AI_MATKEY_GLTF_PBRMETALLICROUGHNESS_METALLICROUGHNESS_TEXTURE, &fileMetallicRoughness);

答案 2 :(得分:0)

组合的粗糙度/金属纹理是 aiTextureType_UNKNOWN。

您可以在这里看到:https://github.com/assimp/assimp/blob/master/include/assimp/pbrmaterial.h#L57

反照率纹理(或基色)为 aiTextureType_DIFFUSE

法线是 aiTextureType_NORMALS

等等...

(非 pbr 特定的东西似乎是相同的命名)