你如何使用 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章