FBX import / export updates

   527   4   3
User Avatar
Staff
171 posts
Joined: Sept. 2016
Offline
Hey everybody,

Our FBX importer/exporter has received some updates recently in H16.5.
I'll be listing some of these here, all of these features are available in 16.5.345:

Import

Most of the recent import updates were done on the file SOP.
When importing FBX files via the File SOP, all the objects found in the FBX file are now imported by default (unless an object is specified with # in the file path).
All the different objects transforms will be baked directly into the points, and their normals modified accordingly.
The baked transforms are added as point attributes, and a “fbx_node_name” primitive attribute is created in order to be able to identify the FBX object the geometry was created from.
The material names are also added as primitive attributes, and custom FBX properties will also be converted to primitive attributes.

Via File > Import, LOD group parameters are now imported as spare parameters. Those parameters can then used by the exporter to rebuild the LODs properly..


Export

LODs can now be exported to FBX file.
If imported from an existing file, the spare parameters created on the LODGroup node will be used for export.
To create the LODs manually, the meshes only need to be parented to a null node named LODGroup.
The order of the different LOD meshes can be determined by their name if they are all named LODXXX, if not their parenting order will determine it. See the attached image for the minimal setup require to export those.

There is now a new option on the export dialog to disable the export of end effectors null nodes as these can be problematic in some cases. However, FBX files exported without the end effectors won't reimport properly in Houdini afterwards. (the skeleton will miss “end” bones due to the missing end effectors)

The imported custom FBX properties (available as spare parameters) are now exported.


Finally, the FBX exporter source code is now open source, and available on our GitHub:
https://github.com/sideeffects/HoudiniFBX [github.com]


Let me know if you have any questions!
Edited by dpernuit - Jan. 4, 2018 14:34:41

Attachments:
FBX Min LOD setup.png (57.5 KB)

User Avatar
Member
76 posts
Joined: July 2007
Offline
This is very cool.
However, I noticed that rigged characters don't always behave as expected after fbx export and re-import.
In particular, the built-in characters, like “Simple Male”, don't behave very well after export and re-import to FBX.
Are there any tips to getting rigged characters working correctly with FBX export?

Thanks!
-Len
User Avatar
Member
12 posts
Joined: June 2016
Offline
Great stuff dpernuit!

I have a question regarding the # Syntax to specify the object to load from the FBX: Since node names don‘t have to be unique in a FBX file (and often aren‘t), how can we specify the correct object without using namespaces? Or can we use namespaces?

Example:
Root
——— CarA
———————— Tire
——— CarB
———————— Tire

Thanks in advance,
Daniel
User Avatar
Member
12 posts
Joined: June 2016
Offline
The issue seems to be that FBX imports are not working well when the FBX has duplicate geo nodes. I have several files with the above structure and they fail to import via File –> Import FBX and also the new file option.

In the end I used the FBX SDK in a Python SOP to rename the FBX nodes to unique node names. The FBX files import now proper.

These node name collisions probably are something which should be accounted for in the FBX import/ new file functionality.

Best,
Daniel
User Avatar
Member
12 posts
Joined: June 2016
Offline
dpernuit
Hey everybody,

Our FBX importer/exporter has received some updates recently in H16.5.
I'll be listing some of these here, all of these features are available in 16.5.345:

Import

Most of the recent import updates were done on the file SOP.
When importing FBX files via the File SOP, all the objects found in the FBX file are now imported by default (unless an object is specified with # in the file path).
All the different objects transforms will be baked directly into the points, and their normals modified accordingly.
The baked transforms are added as point attributes, and a “fbx_node_name” primitive attribute is created in order to be able to identify the FBX object the geometry was created from.
The material names are also added as primitive attributes, and custom FBX properties will also be converted to primitive attributes.

Via File > Import, LOD group parameters are now imported as spare parameters. Those parameters can then used by the exporter to rebuild the LODs properly..


Export

LODs can now be exported to FBX file.
If imported from an existing file, the spare parameters created on the LODGroup node will be used for export.
To create the LODs manually, the meshes only need to be parented to a null node named LODGroup.
The order of the different LOD meshes can be determined by their name if they are all named LODXXX, if not their parenting order will determine it. See the attached image for the minimal setup require to export those.

There is now a new option on the export dialog to disable the export of end effectors null nodes as these can be problematic in some cases. However, FBX files exported without the end effectors won't reimport properly in Houdini afterwards. (the skeleton will miss “end” bones due to the missing end effectors)

The imported custom FBX properties (available as spare parameters) are now exported.


Finally, the FBX exporter source code is now open source, and available on our GitHub:
https://github.com/sideeffects/HoudiniFBX [github.com]


Let me know if you have any questions!

Regarding custom FBX properties: How can they be created in Houdini if the import FBX does not have them. Can we create them somehow by creating spare parameters in the geo node? There's a hint about it in the LODGroup handlich, but it seems to be just a tagging marker which is when it exists is handled in a if/else of the FBXExporter.

UPDATE for others: Ok, you can create custom properties if you add a spare parm at the obj level starting with a “fbx_” prefix. The parm and value will then be written into the fbx as a custom property.
Edited by rayfoundry - Feb. 24, 2018 00:21:57
  • Quick Links