你如何使用 Assimp 加载 Blender 文件?

Posted

技术标签:

【中文标题】你如何使用 Assimp 加载 Blender 文件?【英文标题】:How do you load Blender files using Assimp? 【发布时间】:2013-12-01 12:43:48 【问题描述】:

我尝试使用以下代码在 C++ 上使用 Assimp 库加载 Blender 文件,但它失败了,因为它根本没有任何网格。我使用的搅拌机文件是使用搅拌机本身保存的默认立方体。

Assimp::Importer importer;
const aiScene * scene = importer.ReadFile( path, aiProcessPreset_TargetRealtime_Fast );

if( !scene ) 
    fprintf( stderr, importer.GetErrorString() );
    return false;


const aiMesh * mesh = scene->mMeshes[0]; // Fails here since mMeshes is NULL

我在这里做错了什么,我需要包含特殊标志才能加载搅拌器对象吗?还是我需要以某种方式导出 Blender 对象?

【问题讨论】:

【参考方案1】:

Blender 文件很难被任何非 Blender 的东西读取和解释。原因是,Blender 文件实际上是 Blender 进程的结构化内存转储。除非您打算将整个 Blender 实例嵌入到您的程序中,否则您几乎无法解析它。

相反,您应该使用 Blender 将模型导出为易于处理的、有据可查的文件格式。 Blender 附带了大量 3D 文件格式的集合。

【讨论】:

看起来 Assimp 有一个 Blender SDNA 系统的实现,能够加载 .blend 文件:assimp.sourceforge.net/lib_html/importer_notes.html【参考方案2】:

您需要打开文件 .blend 并将其导出为 .3ds、.obj 等。

我尝试过使用 .blend 文件,但无法读取任何网格,否则我尝试过的任何其他格式(.3ds、.obj)都可以很好地工作。

【讨论】:

以上是关于你如何使用 Assimp 加载 Blender 文件?的主要内容,如果未能解决你的问题,请参考以下文章

DirectX 12 中 Assimp 的骨骼动画错误

Assimp 动画骨骼变换

使用assimp加载mtl颜色

Assimp FBX 加载器和 PBR 纹理

如何使用 assimp 在 C++ 中旋转蒙皮模型的骨骼?

如何让 AssImp 正常工作?