FBX Importer Doesn't Respect Size and Hierarchy #58877

Closed
opened 2018-12-06 17:25:02 +01:00 by Steve Warner · 26 comments

System Information
Operating system: Windows 10
Graphics card: GeForce 1080

Blender Version
Broken:
2.80 Beta
2018-12-03 00:27
Hash: a205493426b

Short description of error

Imported FBX files don't have the size or hierarchy correct. We have FBX files that were authored in 3DS Max. They import into Maya just fine. They import into UE4 just fine. But importing them into Blender results in size issues and parenting issues. See the attached screen shot. The left shows the imported models in Blender. The right shows the exact same FBX files imported into Maya.

If you look at the selected (orange highlighted) objects in Blender, you can see the circular disc and the vertical pistons that are in the Maya file.

FBX.png

**System Information** Operating system: Windows 10 Graphics card: GeForce 1080 **Blender Version** Broken: 2.80 Beta 2018-12-03 00:27 Hash: a205493426b **Short description of error** Imported FBX files don't have the size or hierarchy correct. We have FBX files that were authored in 3DS Max. They import into Maya just fine. They import into UE4 just fine. But importing them into Blender results in size issues and parenting issues. See the attached screen shot. The left shows the imported models in Blender. The right shows the exact same FBX files imported into Maya. If you look at the selected (orange highlighted) objects in Blender, you can see the circular disc and the vertical pistons that are in the Maya file. ![FBX.png](https://archive.blender.org/developer/F5858827/FBX.png)
Author

Added subscriber: @stevewarner

Added subscriber: @stevewarner

blender/blender#58876 was marked as duplicate of this issue

blender/blender#58876 was marked as duplicate of this issue

Added subscriber: @brecht

Added subscriber: @brecht

We need an example .fbx file to demonstrate the issue, to be able to investigate this.

We need an example .fbx file to demonstrate the issue, to be able to investigate this.
Author

Sure thing. Check these out. The FBX should load into Blender like it does into Maya, UE4, etc. However it does not, as you can see in the attached screen shot.

I dug into the scene and it looks like several of the meshes aren't parented or scaled properly. In this case, the MT_Anim_ARM_03 mesh should be parented in the following hierarchy:

MT_ROOT_Main_Animation

MT_Anim_Root_Arm_All

MT_Anim_Root_Arm1

Bone007

Bone008

There's another part, MT_Anim_ARM_02 that's parented to Bone007. It imports fine. But MT_Anim_ARM_03 should be parented to Bone008 and it's not.

Manually parenting MT_Anim_ARM_03 to the MT_Anim_Root_Arm1 mesh, and then choosing the Bone008 as its parent doesn't resolve the issue.

In addition to this, most of the FBX components I've imported from 3DS Max are located in different parts of the scene when they come into Blender. In Maya and UE4, they all come in relative to each other, so it's literally an import and then you're off and running situation. But in Blender, it's requiring a lot of manual correction, which is not ideal.

Thanks for looking into this! We're looking forward to eliminating UE4 from our pipeline and doing all of our scene layout and rendering in Blender.

Pistons.jpg

Pistons.fbx

Sure thing. Check these out. The FBX should load into Blender like it does into Maya, UE4, etc. However it does not, as you can see in the attached screen shot. I dug into the scene and it looks like several of the meshes aren't parented or scaled properly. In this case, the MT_Anim_ARM_03 mesh should be parented in the following hierarchy: MT_ROOT_Main_Animation >MT_Anim_Root_Arm_All >>MT_Anim_Root_Arm1 >>>Bone007 >>>>Bone008 There's another part, MT_Anim_ARM_02 that's parented to Bone007. It imports fine. But MT_Anim_ARM_03 should be parented to Bone008 and it's not. Manually parenting MT_Anim_ARM_03 to the MT_Anim_Root_Arm1 mesh, and then choosing the Bone008 as its parent doesn't resolve the issue. In addition to this, most of the FBX components I've imported from 3DS Max are located in different parts of the scene when they come into Blender. In Maya and UE4, they all come in relative to each other, so it's literally an import and then you're off and running situation. But in Blender, it's requiring a lot of manual correction, which is not ideal. Thanks for looking into this! We're looking forward to eliminating UE4 from our pipeline and doing all of our scene layout and rendering in Blender. ![Pistons.jpg](https://archive.blender.org/developer/F5859868/Pistons.jpg) [Pistons.fbx](https://archive.blender.org/developer/F5859872/Pistons.fbx)
Author

Here is what the animation should look like. Pistons.mp4

I spent some more time with the FBX importer. I've been unable to get the bones to import and orient as you see in this video. That said, I found that if I cleared the origin for the MT_Anim_ARM_03 mesh, then parented it to Bone007, I was able to get it to snap to the general location that it should be. Unfortunately, this had no effect on the scale. I still had to manually resize the mesh to 0.01 scale on X, Y, and Z to get it to be the right size. And even then, I have been unable to get it to orient properly.

Here is what the animation should look like. [Pistons.mp4](https://archive.blender.org/developer/F5861494/Pistons.mp4) I spent some more time with the FBX importer. I've been unable to get the bones to import and orient as you see in this video. That said, I found that if I cleared the origin for the MT_Anim_ARM_03 mesh, then parented it to Bone007, I was able to get it to snap to the general location that it should be. Unfortunately, this had no effect on the scale. I still had to manually resize the mesh to 0.01 scale on X, Y, and Z to get it to be the right size. And even then, I have been unable to get it to orient properly.
Author

I'm changing the status on this from "Incomplete" because I've supplied the FBX files needed to test this and resolve it. I've changed the Priority to "High" because this issue severely impacts interoperability with other 3D applications. With Blender having adopted LMB as a standard, it's clear that 2.8 is designed to appeal to new Blender users. Those coming from other applications will need a working FBX importer in order to migrate assets and take advantage of Blender's powerful toolset.

I'm changing the status on this from "Incomplete" because I've supplied the FBX files needed to test this and resolve it. I've changed the Priority to "High" because this issue severely impacts interoperability with other 3D applications. With Blender having adopted LMB as a standard, it's clear that 2.8 is designed to appeal to new Blender users. Those coming from other applications will need a working FBX importer in order to migrate assets and take advantage of Blender's powerful toolset.

We only use High for urgent issues.

We only use High for urgent issues.
Bastien Montagne was assigned by Brecht Van Lommel 2018-12-11 21:01:11 +01:00

Added subscriber: @zabloct

Added subscriber: @zabloct

Observing the same behaviour i.e. objects moved around and all of them are at the top level without parenting. This is a total blocker for me. Is there a chance this will be solved soon? Cheers.

Observing the same behaviour i.e. objects moved around and all of them are at the top level without parenting. This is a total blocker for me. Is there a chance this will be solved soon? Cheers.

@zabloct please read topics, rules, etc. etc. This is certainly not a high prio issue currently, even less given of frustrating FBX and other apps are at handling those scale/units/blabla stuff.

@zabloct please read topics, rules, etc. etc. This is certainly not a high prio issue currently, even less given of frustrating FBX and other apps are at handling those scale/units/blabla stuff.

And actually even moving back to incomplete. We require SMALL AND SIMPLE files (in caps and capitals in the faint hope that it will be read this time)!

How am I supposed to investigate a full 6Mb production file? That kind of issue is to be reproduced with two or three cubes and bones, not a full mechanic hierarchy with tens of bones and objects and huge meshes and animations and… Just importing that monster already takes ten minutes on a debug build!

And actually even moving back to incomplete. We require **SMALL AND SIMPLE** files *(in caps and capitals in the faint hope that it will be read this time)*! How am I supposed to investigate a full 6Mb production file? That kind of issue is to be reproduced with two or three cubes and bones, not a full mechanic hierarchy with tens of bones and objects and huge meshes and animations and… Just importing that monster already takes ten minutes on a debug build!
Author

Bastien, I understand the desire for small and simple files, however if you only ever test small and simple files, then you'll never encounter the types of problems that we're reporting here. These problems don't come up in simple cases. They come up in real-world cases where you have layers upon layers of bones in a hierarchy.

The 6MB file I attached is a heavily stripped down version of a file we got from our animation team. Heavilystripped down. The much larger full file is over 1GB and it loads into Maya, 3DS Max, Modo, LightWave, and Unreal Engine without issue. Blender is the only 3D app we've tried that has this issue.

You noted in a comment to Tomasz Zablocki that other apps have frustrating FBX support. We have Maya, 3DS Max, Modo, LightWave, SketchUp, Unreal Engine, and Unity at our studio, and none have this issue. Can you clarify which apps have similar problems with FBX files?

I would have to agree with Tomasz Zabocki that this issue is a huge issue and one that should be elevated to a high priority. Blender has come a long way in 2.8 and much effort has been invested in making the program friendly to new users. These users aren't all going to be 3D newbies. They're going to be studios like ours that are filled with professionals and who are interested in incorporating Blender into their pipeline.

Our studio's pipeline is currently built around Unreal Engine 4. We create content in Maya, Modo, 3DS Max and then port things into UE4 for rendering. As the Creative Director for a major theme park design company, I see the potential to replace UE4 with Blender in our studio. But if we can't get the files from our art team into Blender, then Blender simply cannot be a part of our pipeline, no matter how much I'd like it to be.

Please reconsider elevating this task back up to Normal or even High. Being able to play nicely with the other 3D content creation tools out there is critical for the success of an app in a professional environment.

Thanks for your consideration.

Bastien, I understand the desire for small and simple files, however if you only ever test small and simple files, then you'll never encounter the types of problems that we're reporting here. These problems don't come up in simple cases. They come up in real-world cases where you have layers upon layers of bones in a hierarchy. The 6MB file I attached is a heavily stripped down version of a file we got from our animation team. *Heavily*stripped down. The much larger full file is over 1GB and it loads into Maya, 3DS Max, Modo, LightWave, and Unreal Engine without issue. Blender is the only 3D app we've tried that has this issue. You noted in a comment to Tomasz Zablocki that other apps have frustrating FBX support. We have Maya, 3DS Max, Modo, LightWave, SketchUp, Unreal Engine, and Unity at our studio, and none have this issue. Can you clarify which apps have similar problems with FBX files? I would have to agree with Tomasz Zabocki that this issue is a huge issue and one that should be elevated to a high priority. Blender has come a long way in 2.8 and much effort has been invested in making the program friendly to new users. These users aren't all going to be 3D newbies. They're going to be studios like ours that are filled with professionals and who are interested in incorporating Blender into their pipeline. Our studio's pipeline is currently built around Unreal Engine 4. We create content in Maya, Modo, 3DS Max and then port things into UE4 for rendering. As the Creative Director for a major theme park design company, I see the potential to replace UE4 with Blender in our studio. But if we can't get the files from our art team into Blender, then Blender simply cannot be a part of our pipeline, no matter how much I'd like it to be. Please reconsider elevating this task back up to Normal or even High. Being able to play nicely with the other 3D content creation tools out there is critical for the success of an app in a professional environment. Thanks for your consideration.

Just something to mention is that actually Blender's FBX exporter is a bigger problem here. It does not keep parent-child relationship at all. Exporting FBX files from 3DS max works like a charm and I can easily put that into Unity and use it straight away. With Blender this is impossible. Blender is great for standalone rendering but when it comes to using the output in some game engine is just a nightmare.

Just something to mention is that actually Blender's FBX exporter is a bigger problem here. It does not keep parent-child relationship at all. Exporting FBX files from 3DS max works like a charm and I can easily put that into Unity and use it straight away. With Blender this is impossible. Blender is great for standalone rendering but when it comes to using the output in some game engine is just a nightmare.

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'

FBX is a closed format, with no specifications available. Therefore, we have to reverse-engineer everything to get a reasonably OK working code. Therefore we need small files, because 6MB ones are not usable for that, not at all (unless you have hundreds of minions to work on it, job I would not wish to my worst enemy btw). Am tired of explaining this, requested data not provided since weeks, closing.

FBX is a closed format, with no specifications available. Therefore, we have to reverse-engineer everything to get a reasonably OK working code. Therefore we need small files, because 6MB ones are not usable for that, not at all (unless you have hundreds of minions to work on it, job I would not wish to my worst enemy btw). Am tired of explaining this, requested data not provided since weeks, closing.
Author

Since you asked for a smaller file, here you go. It's a 1MB file. It has a mere 4 mesh objects and a paltry 3 bones. That's about as simple as it gets.

Here's what it looks like in Maya. You can see in the outliner on the left. The whole hierarchy has been exposed. There's a few nulls. Three bones and four meshes. Simple.

Single Piston Maya.png

Here's what it looks like in Blender. You can see the hierarchy on the right. Four meshes. Three bones. Simple.

Single Piston Blender Hierarchy.png

The .fbx file is attached for your review.

Single Piston.fbx

Since you asked for a smaller file, here you go. It's a 1MB file. It has a mere 4 mesh objects and a paltry 3 bones. That's about as simple as it gets. Here's what it looks like in Maya. You can see in the outliner on the left. The whole hierarchy has been exposed. There's a few nulls. Three bones and four meshes. Simple. ![Single Piston Maya.png](https://archive.blender.org/developer/F6371592/Single_Piston_Maya.png) Here's what it looks like in Blender. You can see the hierarchy on the right. Four meshes. Three bones. Simple. ![Single Piston Blender Hierarchy.png](https://archive.blender.org/developer/F6371664/Single_Piston_Blender_Hierarchy.png) The .fbx file is attached for your review. [Single Piston.fbx](https://archive.blender.org/developer/F6371613/Single_Piston.fbx)
Author

Changed status from 'Archived' to: 'Open'

Changed status from 'Archived' to: 'Open'
Author

Also, for what it's worth, Collada has the same basic problem as FBX. From what I can tell, this issue has less to do with the FBX format in particular and more to do with how Blender interprets and deals with hierarchies.

When exporting the Maya file as a Collada file, you get the following errors.

While reading or writing a file the following notifications have been raised.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_ROOT_Main_Animation' will be saved.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Anim_Root_Arm_All' will be saved.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Anim_Root_Arm2' will be saved.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Root_PistonLowr2_00' will be saved.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Root_PistonLowr1_01' will be saved.
Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_ROOT_Piston_Anim' will be saved.

Importing into Blender you get this:

image.png

It's worth noting that the Collada file brings in 4 bones, even though there are only 3 bones in the original file.

Also, for what it's worth, Collada has the same basic problem as FBX. From what I can tell, this issue has less to do with the FBX format in particular and more to do with how Blender interprets and deals with hierarchies. When exporting the Maya file as a Collada file, you get the following errors. While reading or writing a file the following notifications have been raised. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_ROOT_Main_Animation' will be saved. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Anim_Root_Arm_All' will be saved. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Anim_Root_Arm2' will be saved. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Root_PistonLowr2_00' will be saved. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_Root_PistonLowr1_01' will be saved. Warning: 'Null' type not supported by COLLADA. Only the transform data of node: 'MT_ROOT_Piston_Anim' will be saved. Importing into Blender you get this: ![image.png](https://archive.blender.org/developer/F6379675/image.png) It's worth noting that the Collada file brings in 4 bones, even though there are only 3 bones in the original file.

Here is how Blender FBX importer sees the hierarchy of the FBX file (every increment means 'child of'):

Unknown[root][HBC]
 MT_ROOT_Main_Animation[HBC]
  MT_Anim_Root_Arm_All[HBC]
   MT_Anim_Root_Arm2[armature][HBC]
    Bone001[bone][HBC]
     Bone002[bone][HBC]
      Bone010[bone]
      MT_Anim_ARM_05
     MT_Anim_ARM_04
   MT_Root_PistonLowr2_00
    MT_Piston_01
   MT_Root_PistonLowr1_01
 MT_ROOT_Piston_Anim
  MT_Piston_00

For some (currently) unknown reason, MT_Anim_ARM_05 does not get properly parented to Bone002 in the end, but even with that aside, we get pieces scattered all around the place - most likely similar issue as reported in #53620, #53821, #54071, etc. We currently do not support some cases of complex parent relationships.

I’ll try to understand the missing parenting issue, the remaining am afraid is more like old known TODO that might be tackled… some day… Unless CG industry finally decides to show a tiny bit of intelligence, decency and common sense, and ditch that … format … thing … whatever into the deepest pits of Hell. Hint: Gltf ;)

Here is how Blender FBX importer sees the hierarchy of the FBX file (every increment means 'child of'): ``` Unknown[root][HBC] MT_ROOT_Main_Animation[HBC] MT_Anim_Root_Arm_All[HBC] MT_Anim_Root_Arm2[armature][HBC] Bone001[bone][HBC] Bone002[bone][HBC] Bone010[bone] MT_Anim_ARM_05 MT_Anim_ARM_04 MT_Root_PistonLowr2_00 MT_Piston_01 MT_Root_PistonLowr1_01 MT_ROOT_Piston_Anim MT_Piston_00 ``` For some (currently) unknown reason, `MT_Anim_ARM_05` does not get properly parented to `Bone002` in the end, but even with that aside, we get pieces scattered all around the place - most likely similar issue as reported in #53620, #53821, #54071, etc. We currently do not support some cases of complex parent relationships. I’ll try to understand the missing parenting issue, the remaining am afraid is more like old known TODO that might be tackled… some day… Unless CG industry finally decides to show a tiny bit of intelligence, decency and common sense, and ditch that … format … thing … whatever into the deepest pits of Hell. Hint: Gltf ;)

This issue was referenced by 28324e0fb6

This issue was referenced by 28324e0fb6748b323f6a5fa031ee4e126998c223

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'

Changed status from 'Resolved' to: 'Open'

Changed status from 'Resolved' to: 'Open'

Tssst… scaling issue remains, do not close that task you naughty bot!

Tssst… scaling issue remains, do not close that task you naughty bot!
Author

Many thanks for your continued endurance in looking into this!

Many thanks for your continued endurance in looking into this!

Closed as duplicate of #54071

Closed as duplicate of #54071
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#58877
No description provided.