Any idea why the colors in imported fbx are totally wrong?

Hello, I have imported a model from a fbx file with embedded textures. The textures are loaded, but the colors are way off:
image
While it should look like this:
image
I am not allowed to post the model. But I hope someone can have a guess what is wrong. Worth mentioning is that the model is exported from Blender and it contains PBR materials. I know that the PBR support in FBX is quite bad. So I guess that could be an issue. If I convert the fbx to a glb file it looks correct. But for some reasons I need to get the fbx to load without converting to glb.
When I look at the materials created from the FBX loader I can see they are MeshPhongMaterials and when I load the glb model they are MeshStandardMaterial.

Does anyone have an idea what I could try to make the fbx look better?
Thanks!

Hi.
When dealing with 3D models, especially those exported from Blender to FBX format, it is not uncommon to encounter issues related to material representation and color fidelity. The transition from PBR materials in Blender to MeshPhongMaterial in three.js can lead to significant differences in how the model appears.
The first step is to understand the difference between the materials being used.
Since the FBX loader defaults to MeshPhongMaterial, you can manually convert these materials to MeshStandardMaterial after loading the model.
Please check follow.
Texture Mapping
Color Space and Gamma Correction
Export Settings in Blender
I expect your step.

Maybe bad normal value into geometry or no texture or texture yet not loaded. Check geometry and material of model into console. Add console.log(mesh);

This strongly suggests you’re doing everything correctly, there must be something in the FBX file that three.js cannot process. As you mention, the PBR support in FBX is not really well-specified and we have to reverse-engineer things… if you’re able to share the model (or another with the same issue, if this one is sensitive) I would recommend filing an issue on three.js, and someone can probably tell you in more detail what’s going on.

When I look at the materials created from the FBX loader I can see they are MeshPhongMaterials and when I load the glb model they are MeshStandardMaterial.

I couldn’t say whether FBXLoader using the phong shader is correct or not, but glTF does not have a phong shading model and will always return either the basic, standard, or physical shading models. Usually MeshStandardMaterial.

I can see details in the textures, such as text. So they are loaded. Just with wrong colors.

I will try and get a simplified version of the model which I can post online. Thanks for the help.

1 Like