New FBX importer: Feedback and discussion

@Timur_Ariman today’s build fixes import of your ASCII FBX file where some animation curve values are NaNs/infinities.

5 Likes

The new FBX importer has been merged into blender main, and will be available in 4.5 alpha daily builds from now on. Thanks everyone for feedback so far!

33 Likes

The community truly appreciates the time and effort you’ve put into this. This is massive.

1 Like

This is already working well to solve a problem at my studio for interoperability between Maya, Unreal, and Blender. Thank you for getting this implemented! :slight_smile: Now I just need to wait for 4.5’s release and upgrade my team’s pipeline.

No more Error: Version 6100 unsupported, must be 7100 or later :star_struck:

3 Likes

Wat? I have nothing to do with it. It’s @aras_p 's work

My mistake, thank you @aras_p ! It is working well.

Found one regression case when checking the files in the ufbx CI dataset:

Python (left) vs ufbx (right), in blender-4.5.0-alpha+main.d791ea7cc2c6

As it is a part of the ufbx dataset, it should be quite validated to work well, and the example viewer seems to handle it.

I’ll try to scrape together a script to run through all the files in the dataset and rig some automated screenshot comparisons, but it might take a small while until I can get to it.

EDIT: I actually faintly remember this exact model from Godot. It’s possible that using UFBX_INHERIT_MODE_HANDLING_COMPENSATE_NO_FALLBACK would help in this case, though it will mess with the adjust_post_scale handling (and maybe make it unnecessary?).

6 Likes

Hi @aras_p, I have 2 points of feedback after testing:

  1. I think the Force Connect Children option from the Python Importer would be useful at least in some cases. I was importing FBX files exported with MotionBuilder / Shogun and the bone tails were always pointing toward Z-up instead of the children. This might be something that could be fixed in the importer so the option doesn’t have to exist if it always connects properly.
  2. Importing a scene from MotionBuilder imports the default cameras that are always in the scene (Producer Perspective for example) and an empty named Camera Switcher. The previous importer didn’t import these and they probably should be ignored.

@Martin_Delorme does the “Force Connect Children” option in the existing Python importer work fine for that case? In various files I tried it on, it does connect the bones (of course), but the resulting skinned meshes become completely distorted, and/or animations on the connected bones come out wrong. I completely understand the need for “fixing the bone orientation problem, somehow”, but not sure whether the existing Force Connect Children implementation is that.

The previous importer actually was creating camera data blocks for them, but not attaching them to any objects (why? no idea). The cameras are in the actual FBX file, as far as I can tell, so the question is, how to “know” that they should be ignored.

You are right that it breaks meshes on the Python, I was too focused on skeleton / armature only import. What I do notice is that the Python importer orients the tail toward the next bone in the chain even if not connected. Sorry if this was already on your list.

Oh they are indeed created as data blocks, that’s good to know. I don’t know enough on how the FBX file is made to propose a solution. I know that importing a MotionBuilder FBX file in Maya doesn’t bring the cameras, no idea how they determine that.