What do FBX lacks from Blender?

Hi there.

I hear a lot that FBX import/export lacks a lot of things in Blender and it should be improved, and I don’t deny it, but I’m using it and I find it very reliable, so I would like to know why people says that.
What is so important in FBX that is not present in Blender FBX import/export workflow?

Cheers!

I haven´t had any problems with exporting to 3ds Max.
But there are a couple of annoyances when exporting meshes with bones to Unreal as far I can tell. The exporter allways adds an extra bone to the hirarchy which causes trouble in Unreal later on.

There is a code edit to fix that, but I don’t talk people through it anymore (I got called a retard the last time I did…even tho the edit works). Look on the UE4 forums for it.
And there is a few things to leave unchecked if you want to export shapekeys to UE4 as well.

I assume you mean the following:

Yes, I did get it to work but the workaround is a bit annoying and it would be great if you didn´t have to go through the trouble of doing the extra steps.

More or less, It took me a while to find a way to readjust the default UE4 rig to be readjustable in blender, but once I got that sorted it was all good.

Scales can be annoying too, because not all application import the in identical ways. The same is true for the default rotation. Even though it should theoretically work, that’s not always the case. Especially if you try to have an automated workflow this can be very nasty.

I don´t think this is anything that Blender could fix, though, as it is dependant on how the target application imports.

One thing that the Blender FBX exporter has which exporters in other apps lack is the possibility to set the orientationm btw. If anything, you might be able to chosse between z-up and y-up, but that´s usually it.

I found a mechanic for handling default bone rotation between blender and UE4, but after the last few times I tried to talk someone through it I would rather pluck my eyes out with a rusty fork then do it again, There is a ue4 tools addon that can set the scene scale for you, but aside from that you will need to export the default rig until you find the export settings that work for you.

You will need to rejoin the bones into one rig, but if you need a guide for getting your bone rotations correct(ish) for rigging a characterthis is what I use and it seems to work for me. Keep in mind all of the bones are broken into individual objects and will need to be rejoined with the proper hierarchy when it comes time to weight paint and export.

The target application was Unity and it is using the official FBX importer from Autodesk.
I have seen differences between Blender’s FBX exporter and the one from Max. We were running into issues, because meshes from Blender had some weird orientations. In Blender it looked perfectly fine, the up axis was correct, but the forward direction was behaving very strange. It turned out that it was caused by the object’s rotation as the artist didn’t apply the rotation. I submitted about two bug reports about some issue, but other did too and the “Apply Transform” option was added because of those if I remember correctly.
Nevertheless, we still encountered issues from time to time, especially when rotations and scales are mixed in object hierarchies or skinned meshes. If you work carefully, you get the same results in Blender and Unity, but under certain conditions, the results look different. I didn’t have the time to analyze those issues in order to reproduce them yet to submit a bug report.
We never had this kind of issue in Max and the exported FBXs from Max were always correct as far as I know.

The coder who worked on the new FBX export in Blender did a great job! They implemented something that works remarkably well, by reverse engineering it without an actual specification. However, there seem to be some gray areas and differences compared to the official one, but we always found workarounds from them.

  1. Being able to specify a particular Action at export would be helpful.
  2. Getting rid of the armature object being converted to a parent empty of the root bone.

There is a code edit linked above that can take care of that for you.

You can do this with scripts, select the action you want and run this in the text editor:

import bpy

path = bpy.path.abspath('//')
bpy.ops.screen.frame_jump()
action = bpy.context.active_object.animation_data.action
objname = bpy.context.active_object.name
bpy.data.scenes[0].frame_end = action.frame_range[1]

#singleanim
bpy.ops.export_scene.fbx(filepath=str(path + "/animations/" + "AS_" + action.name + '.fbx'), use_selection = True, object_types={'ARMATURE'}, bake_anim = True, bake_anim_use_nla_strips=False, bake_anim_use_all_actions=False , add_leaf_bones=False, bake_anim_use_all_bones=True, use_armature_deform_only = True)

#batchanims

#for action in bpy.data.actions:
#    bpy.context.active_object.animation_data.action = action
#    bpy.data.scenes[0].frame_end = action.frame_range[1]
#    bpy.ops.export_scene.fbx(filepath=str(path + "/animations/" + "AS_" + action.name + '.fbx'), use_selection = True, object_types={'ARMATURE'}, bake_anim = True, bake_anim_use_nla_strips=False, bake_anim_use_all_actions=False , add_leaf_bones=False, bake_anim_use_all_bones=True, use_armature_deform_only = True)

The batch export version (uncomment if you want to use it) exports all actions in the .blend file which may not be what you want if you’ve got multiple characters in the same .blend file. The single animation version is quick and easy though. The script also sets the end frame automatically which can be useful for loops. By default it’s set up to work well with UE4 by exporting the whole loop range (first and last keyframes are the same), if you use something else you might want to change bpy.data.scenes[0].frame_end = action.frame_range[1] to bpy.data.scenes[0].frame_end = action.frame_range[1]-1.

I use the FBX exporter version 3.7.7 with blender 2.78c on a windows 10 Pro machine. I use it to export meshes with armatures and actions to unity. The Major problem for me is that the export from blender to unity makes the model go into unity facing backward. That is if the human model had its face toward you looking out of your computer screen in blender when it is imported to unity after coverting it to fbx it will have it`s back toward you in unity. I know there are options to have Z Forward and -Z Forward in the options of the exporter in blender. But I have exported two model each with different options and the BOTH go into unity facing backward.

Yes I know I can rotate the mesh 180 degrees in blender AROUND the Z axis in blender or do the same thing AROUND the Y axis in unity to fix this problem. But it seems to me that those two options should fix that automatically AND I suspected that once I apply the animation clips in unity that the orientation will flip again ( I have not actually applied any animations yet to test this but I will and will let everyone know how it goes)

It just seems to me that this has been a long term problem since at least 2015 and should have been fixed by now.

FBX in Blender lacks LOD groups support. Other than that I don’t find anything lacking when it comes to making stuff for UE4.

What about using the BGE LOD system, and having fbx use the data if it exists?

It has nothing to do with Blender’s LOD capabilities. The functionality for writing LOD groups into FBX isn’t implemented in Blender. It could have been as simple as having several models (LOD iterations) named certain way and grouped, with group named certain way. FBX exporter would have taken it and saved as LOD group in FBX specs.

I recall asking devs about it and was given short and simple answer - N.O.

When I import fbx in UE4, it doesn’t generate complex colliders on geometry automatically. Unity does.
If anyone knows how to automatically generate colliders (based on the mesh geometry) in UE4, let me know.

We have lod slots in upbge/bge and the data is accessible via py / bpy
I believe,

It’s just a container man,
It already has all the props etc

https://pythonapi.upbge.org/bge.types.KX_LodLevel.html

This thread is not about the (Up)BGE, but about FBX to import or export files. Since LOD groups are not implemented according to motorsep, your suggestions won’t make any difference.

Complex collision is always generated, you can use it by using the Use Complex As Simple option in UE4. Of course it’s more expensive than regular collision so don’t use it for massive meshes.

There’s also the mesh name method for importing collision: UCX_ for convex collision, UBX_ for box collision, USP_ for sphere collision and UCP_ for capsule collision. I think you need to disable auto generation of collision if you use meshes for collision.

A guy called Pavel Křupala already made this possible by editing the FBX exporter. I made a post on the UE4 forums detailing how you get static mesh LOD export working for Blender: https://forums.unrealengine.com/showthread.php?146531-cyaoeu-s-bag-of-Blender-tricks&p=729046&viewfull=1#post729046