Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you load Blender files using Assimp?

I tried to load Blender file using Assimp library on C++ using the following code, but it fails since it doesn't have any meshes at all. The blender file I am using is the default cube saved using Blender itself.

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

What am I doing wrong here, do I need to include special flag in order to load blender object ? Or do I need to export the Blender object in certain way ?

like image 589
sub_o Avatar asked Nov 18 '13 11:11

sub_o


2 Answers

Blender files are difficult to read and interpret by anything that's not Blender. The reason for this is, that Blender files are in fact structured memory dumps of the Blender process. Unless you plan to embed a whole Blender instance into your program you'll hardly be able to parse it.

Instead you should export your model using Blender into someting easy to process, a well documented file format. Blender ships with a collection for a large number of 3D file formats.

like image 194
datenwolf Avatar answered Oct 19 '22 22:10

datenwolf


You need to open your file .blend and export it to .3ds, .obj etc..

I've tried using .blend files and could no read any meshes what so ever, otherwise works well with any of the other formats that I've tried (.3ds, .obj).

like image 20
José Pinto Avatar answered Oct 20 '22 00:10

José Pinto