libgdx / fbx-conv

Command line utility using the FBX SDK to convert FBX/Collada/Obj files to a custom text/binary format for static, keyframed and skinned meshes.
Apache License 2.0
447 stars 117 forks source link

fbx-conv crashes when converting fbx file exported from blender #38

Closed erobic closed 10 years ago

erobic commented 10 years ago

I exported fbx file using blender. I have uploaded the blend and fbx files to mediafire and the link is given below: http://www.mediafire.com/download/2ydfk62giwms1p7/exports.zip

The log is shown below. After the last line, fbx-conv crashes. What is the solution?

INFO: FBX to G3Dx converter, version 0.01.0000 x32 (pre-release) STATUS: Loading source file WARNING: [UniHuman] Node uses RrSs mode, transformation might be incorrect WARNING: [Lamp] Node uses RrSs mode, transformation might be incorrect WARNING: [Camera] Node uses RrSs mode, transformation might be incorrect WARNING: [Armature] Node uses RrSs mode, transformation might be incorrect WARNING: [Bone] Node uses RrSs mode, transformation might be incorrect WARNING: [Body] Node uses RrSs mode, transformation might be incorrect WARNING: [L_hip] Node uses RrSs mode, transformation might be incorrect WARNING: [L_hip2] Node uses RrSs mode, transformation might be incorrect WARNING: [L_Thigh] Node uses RrSs mode, transformation might be incorrect WARNING: [L_Shin] Node uses RrSs mode, transformation might be incorrect WARNING: [L_foot] Node uses RrSs mode, transformation might be incorrect WARNING: [L_toes] Node uses RrSs mode, transformation might be incorrect WARNING: [R_hip] Node uses RrSs mode, transformation might be incorrect WARNING: [R_hip2] Node uses RrSs mode, transformation might be incorrect WARNING: [R_thigh] Node uses RrSs mode, transformation might be incorrect WARNING: [R_Shin] Node uses RrSs mode, transformation might be incorrect WARNING: [R_foot] Node uses RrSs mode, transformation might be incorrect WARNING: [R_toes] Node uses RrSs mode, transformation might be incorrect WARNING: [Spine1] Node uses RrSs mode, transformation might be incorrect WARNING: [Spine2] Node uses RrSs mode, transformation might be incorrect WARNING: [Spine3] Node uses RrSs mode, transformation might be incorrect WARNING: [Spine4] Node uses RrSs mode, transformation might be incorrect WARNING: [Spine5] Node uses RrSs mode, transformation might be incorrect WARNING: [Head] Node uses RrSs mode, transformation might be incorrect WARNING: [Jaw] Node uses RrSs mode, transformation might be incorrect WARNING: [L_lip] Node uses RrSs mode, transformation might be incorrect WARNING: [R_lip] Node uses RrSs mode, transformation might be incorrect WARNING: [L_smile] Node uses RrSs mode, transformation might be incorrect WARNING: [R_smile] Node uses RrSs mode, transformation might be incorrect WARNING: [L_eyebrow] Node uses RrSs mode, transformation might be incorrect WARNING: [L_eyebrow_001] Node uses RrSs mode, transformation might be incorrect

WARNING: [L_eyebrow_002] Node uses RrSs mode, transformation might be incorrect

WARNING: [R_eyebrow] Node uses RrSs mode, transformation might be incorrect WARNING: [R_eyebrow_001] Node uses RrSs mode, transformation might be incorrect

WARNING: [R_eyebrow_002] Node uses RrSs mode, transformation might be incorrect

WARNING: [Body_008] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_008_L] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_008_R] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_009] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_009_L] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_009_R] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_010] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_010_L] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_010_L_001] Node uses RrSs mode, transformation might be incorrec t WARNING: [Body_010_R] Node uses RrSs mode, transformation might be incorrect WARNING: [Body_010_R_001] Node uses RrSs mode, transformation might be incorrec t WARNING: [L_colar] Node uses RrSs mode, transformation might be incorrect WARNING: [L_arm] Node uses RrSs mode, transformation might be incorrect WARNING: [L_forearm] Node uses RrSs mode, transformation might be incorrect WARNING: [L_fingers] Node uses RrSs mode, transformation might be incorrect WARNING: [L_thumb] Node uses RrSs mode, transformation might be incorrect WARNING: [L_handTrack] Node uses RrSs mode, transformation might be incorrect WARNING: [R_colar] Node uses RrSs mode, transformation might be incorrect WARNING: [R_arm] Node uses RrSs mode, transformation might be incorrect WARNING: [R_forearm] Node uses RrSs mode, transformation might be incorrect WARNING: [R_fingers] Node uses RrSs mode, transformation might be incorrect WARNING: [R_thumb] Node uses RrSs mode, transformation might be incorrect WARNING: [R_handTrack] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl1] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl2] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl3] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr1] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr2] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr3] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl4] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl5] Node uses RrSs mode, transformation might be incorrect WARNING: [ribl6] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr4] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr5] Node uses RrSs mode, transformation might be incorrect WARNING: [ribr6] Node uses RrSs mode, transformation might be incorrect WARNING: [L_legtarget] Node uses RrSs mode, transformation might be incorrect WARNING: [R_legtarget] Node uses RrSs mode, transformation might be incorrect INFO: [shape(UniHuman)] polygons: 2590 (7770 indices), control points: 1302

xoppa commented 10 years ago

Check: https://github.com/libgdx/libgdx/wiki/Importing-Blender-models-in-LibGDX

Make sure you select all and only those options (e.g. nodes and animations) you want to actually include. Don't include your camera, lights, etc.

Your model does include both the camera and the light. And they also have keyframes on them (without actually animating them btw). Since those type of nodes don't have a scaling component, fbx-conv crashes on creating the keyframe for them.

This is not an issue with fbx-conv. However, I do think the crash on it self should not happen (instead an error should be printed e.g.). I will add it to my todo list. But it will probably not be changed soon as it is documented (and I think should be obvious), that fbx-conv might fail if you include nodes which shouldn't be included.

erobic commented 10 years ago

Thank you for the reply. Removing camera and others worked for that model. However, it is not working for a model built using MakeHuman. I completely deleted camera and lamps and also made sure they were not exported. However, fbx-conv still crashes.

.blend and .fbx files here: http://www.mediafire.com/download/0p78bcvpvx1dbkh/testing%20fbx-conv.7z

xoppa commented 10 years ago

That model is way too big. Even Maya takes almost 15 minutes to load it. I'm surprised the FBX-SDK doesn't crash on it (if you wait long enough it eventually loads but crashes on the animation). There's also a geometry within it that has more than 58000 indices (almost twice MAX_SHORT), which is likely to cause problems. And again it crashes on a keyframe set on a node which doesn't have a scaling or rotation component. Because of the size of the model I can't say which node it is. I would advise you to load the model in your modeling application of choice, reduce the poly count, remove unneeded keyframes and only export required nodes/animations. If you still experience problems, consider exporting to another format instead of fbx, e.g. collada.

erobic commented 10 years ago

Ok, I will give up the makehuman's high poly mesh and use the first low-poly mesh (which is animating fine with libgdx). The problem with collada is that blender exporter does not support multiple actions. Anyway thanks for the help.