【发布时间】:2013-04-14 14:48:13
【问题描述】:
我正在使用 assimp 在我的游戏引擎中导入 3d 模型。出于某种原因,无论我使用什么模型或模型格式,assimp 都不会报告任何纹理。这是为什么呢?
以下是使用 assimp 的非常简单的设置:
const aiScene* scene = importer.ReadFile(asset, aiProcessPreset_TargetRealtime_Quality);
if (scene->HasMaterials())
{
for (unsigned int i = 0; i < scene->mNumMaterials; i++)
{
const aiMaterial* material = scene->mMaterials[i];
aiString texturePath;
unsigned int numTextures= material->GetTextureCount(aiTextureType_DIFFUSE); // always 0
if (material->GetTextureCount(aiTextureType_DIFFUSE) > 0 && material->GetTexture(aiTextureType_DIFFUSE, 0, &texturePath) == AI_SUCCESS)
{
// never happens..
// scene->mNumTextures is always 0 aswell.
}
}
}
我正在使用我认为具有纹理的各种模型,例如教程中的模型,这些模型是为使用 assimp 加载纹理模型的特定原因而设计的。 (例如,http://www.lighthouse3d.com/cg-topics/code-samples/importing-3d-models-with-assimp)
这可能是什么原因?
【问题讨论】:
-
老实说,我从那里找到源代码下载 (modelimport.zip) 一些我很长时间以来遇到的最糟糕的“C”类。
-
呵呵。我刚刚修复了它,所以它可以在 GCC 4.7
3 files changed, 1174 insertions(+), 1172 deletions(-)上编译。 (我建议你也许能找到更好的样本来学习?)https://gist.github.com/sehe/0f8f711f44d48b9ecbbf -
我没有使用教程,仅使用它提供的模型
-
哦,太好了。那是缓刑! :)
-
所以那个长凳模型不包含任何纹理。