FBX Import problems

** This link of the original thread of FBX problems was closed. **
The problem was not resolved as Unity has issues with back faces where as Autodesk and Blender do not. Even Mixamo shows solids but the export into Unity shows normals facing away from the viewer which makes things transparent.
I modified the RobotWoman Pelvis into a solid object instead of original single layer. As you can see the viewer can not ‘See’ through the back side from the front. There are multiple instances of these single face objects. They need to be made into solids like the waist ring object. The Breast body part is single layer. This is the simple identifier for your models that will enable them the stand the test of time. Mixamo to Unity is actually a great identifier workflow. It is not good to leave open shapes even though Blender and Autodesk allow it. As we found out here the models dont display correctly.
This is an answer to any search finding this. Its not Blender, Autodesk or Unity’s failure. This has just come about from a lack of standards is all.


7540064--931373--RobotWomanD2016Pelvis.png

It comes from most content creation tools defaulting to previewing surfaces as two sided. But this is generally a performance issue for real time render, so Unity defaults to one sided surfaces. Humorously If you have parts that appear “transparent” in Unity, it’s because that surface is inside out in your modelling too. For Blender enable Backface Culling on the material. In 3DS Max and Maya the setting is on the object properties. If you actually render your mesh in Max or Maya it’ll likely show “transparent” just like it will in Unity because while the preview defaults to two sided, the material rendering defaults to one sided, because it’s a performance issue for offline rendering too.

Thanks for posting this definitive answer. The ‘Performance issue’ has always been the mantra and I get it. But there are instances where this boundary has to be breached to develop an item then see where the performance hits are. Why then? Because an item needs to be developed to encounter any design flaws. I say leave it up to the developer to clean things up. But wait there is more as I wax and wane prophetically idiotically. The boundary crossing performance issue can crash-hang machines with limited resources or GPUs. I can only guess Unity would want to avoid this as this black hole would be found by many a new developer causing Unity to look bad at the beginning of a developer’s adventure.

I have transferred models from Blender with out using the Blender material only to see the normals on some single sided objects come into Unity reversed from the user view so it is something more than changing the materials, I think. I am currently working on the woman model at the moment to try to get this straightened out. I am working with the developer who is transitioning away from Autodesk to Blender. A very wise move.

In the sketchup you can find a plugin to reverse automatically the face normal according to the camera view

Inside unity you can use Double sided materials (shaders)… if you don’t want to use lightmaps (fully realtime rendering) you can use double sided materials without problem

Maybe you can find a plugin for max or maya too

It won’t crash or hang any device to default to using two sided rendering in Unity, but performance cost wise it’s similar to rendering double the triangle count. The vast majority of models made for games have interior surfaces that will never be seen in normal gameplay that you’re now paying the cost of rendering.

“But they’re inside the mesh, they’re never seen, why would that make it more expensive to render?”

Because the GPU doesn’t know that. It gets a list of triangles, and it renders those triangles in the order they exist in the list. That order doesn’t change from the moment the mesh is imported into Unity. If you’re lucky and all of the triangles closer to the camera renders first, the GPU can relatively efficiently skip rendering the pixels for that mesh. If you’re unlucky and the further faces render first then you’re paying the full cost of rendering stuff that will not be seen.

Using single sided triangles means the GPU a can skip even trying to render those faces, as approximately half the triangles of your average mesh won’t be facing the camera. And that’s much faster than trying to render and skipping, and much much faster than rendering and then never seeing them.

1 Like

These are useless for Unity. Actually, worse than useless, as they’d be detrimental to Unity performance. You don’t want all of the triangles to face the camera. You want all of the triangles to be facing “out”. If all of the triangles are facing a specific camera position then you’d have to use a two sided material because as soon as the camera or model moves the triangles would be facing the wrong way.

Really the solution to this kind of problem is very straight forward. Open the model in your modeling tool, disable two sided rendering or enabled back face culling, select the parts that are inside out and invert the face / flip the normal (depending on the application) and save/export again. Takes about 30 seconds to fix the issue, sometimes less, once you know where to click.

Otherwise if you really want / need two sided rendering, like @aliyeredon2 suggested, you can use a two sided shader. Unity’s built in renderer doesn’t ship with any, but there are some on the asset store. Otherwise if you’re using the URP / HDRP it’s a single checkbox on the material to enable.

1 Like

Plugins are the easiest way. They automatically reverse all the back triangles to the forward of your camera view… camera never can see the back triangles
Also some plugins automatically removes two sided faces + fixing the UV and material problems

example:
https://extensions.sketchup.com/extension/d37b6b0d-778f-417a-bfaf-a6cc3956fcf1/reverse-orient-faces

Modifying the triangles in real time on the CPU is pointlessly expensive. it certainly “works”, and behaves nicely for offline rendering or systems that don’t expose more control (like Sketchup), but is the wrong approach for real time rendering.

Not real time. I’m speaking about modeling. For realtime we must use only single sided faces
This is related to the all game engines and not unity

User can easily open the model on the modeling software and fix the wrong sided faces using plugins

You described this behavior:

That’s terrible, because it means it’s orienting all faces towards the camera, which breaks if the camera or object movies.

I didn’t realize the plugin you linked to does not do that. As best I can tell that plugin just adds in the ability to flip triangles. Something which most other tools would have built in and would not need a plugin for. And is indeed the same solution I what I suggested.

But the original post didn’t mention SketchUp at all. They did mention Blender, which the Flip option is the first one on the list in the Normal menu. And which also has a built in tool to reorient all selected faces to face outward, which would also fix this problem.

This information is great and even more substantial when the project is set into its initial format.
That being said ‘Is the project a high rendering game or a dynamic model with motion?’
This is what should be considered when making comments therefore identifying the design bias.
I do both games and dynamics. But when the dynamics need to put into game is where I had better do my performance homework before hand. But in most instances the dynamics can be made into sprite manipulation hence assets like Amplify imposter. In this development pressure you will eventually go there whether you like it or not.