Fix #139656: FBX importer does not set normalmap textures as "non-color"

Normal maps (and generally all other non-color textures) were not
marked as non-color in the new FBX importer.

Pull Request: https://projects.blender.org/blender/blender/pulls/139725
This commit is contained in:
Aras Pranckevicius
2025-06-02 15:15:05 +02:00
committed by Aras Pranckevicius
parent 6fb69eeb71
commit ba0b1acb4e
21 changed files with 60 additions and 48 deletions

View File

@@ -21,6 +21,7 @@
#include "NOD_shader.h"
#include "IMB_colormanagement.hh"
#include "IMB_imbuf_types.hh"
#include "fbx_import_material.hh"
@@ -300,6 +301,15 @@ static void add_image_texture(Main *bmain,
Image *image = load_texture_image(bmain, file_dir, *ftex);
BLI_assert(image != nullptr);
/* Set "non-color" color space for all "data" textures. */
if (!STREQ(socket_name, "Base Color") && !STREQ(socket_name, "Specular Tint") &&
!STREQ(socket_name, "Sheen Tint") && !STREQ(socket_name, "Coat Tint") &&
!STREQ(socket_name, "Emission Color"))
{
STRNCPY(image->colorspace_settings.name,
IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_DATA));
}
/* Add texture node and any UV transformations if needed. */
bNode *image_node = add_node(ntree, SH_NODE_TEX_IMAGE, node_locx_image, node_locy);
BLI_assert(image_node);

View File

@@ -614,10 +614,10 @@
- base color (0.800, 0.800, 0.800) tex:'checkerboard_diffuse.png' (../blend_scene/textures/checkerboard_diffuse.png) a:False rot:(0.262, 0.524, 1.047) scl:(2.000, 3.000, 4.000)
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.500 tex:'checkerboard_roughness.png' (../blend_scene/textures/checkerboard_roughness.png) a:False
- metallic 0.000 tex:'checkerboard_metallic.png' (../blend_scene/textures/checkerboard_metallic.png) a:False
- roughness 0.500 tex:'checkerboard_roughness.png' (../blend_scene/textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.000 tex:'checkerboard_metallic.png' (../blend_scene/textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.500
- alpha 1.000 tex:'alpha.png' (../blend_scene/textures/alpha.png) a:True
- alpha 1.000 tex:'alpha.png' (../blend_scene/textures/alpha.png) a:True Non-Color
- emission color (1.000, 1.000, 1.000) tex:'checkerboard_emissive.png' (../blend_scene/textures/checkerboard_emissive.png) a:False scl:(2.000, 1.000, 1.000)
- emission strength 0.200
- normalmap 3.000 tex:'checkerboard_normal.png' (../blend_scene/textures/checkerboard_normal.png) a:False data

View File

@@ -522,10 +522,10 @@
- base color (0.800, 0.800, 0.800)
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.500 tex:'checkerboard_roughness.png' (../blend_scene/textures/checkerboard_roughness.png) a:False
- roughness 0.500 tex:'checkerboard_roughness.png' (../blend_scene/textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.200
- ior 1.500
- alpha 1.000 tex:'checkerboard_transparency.png' (../blend_scene/textures/checkerboard_transparency.png) a:True
- alpha 1.000 tex:'checkerboard_transparency.png' (../blend_scene/textures/checkerboard_transparency.png) a:True Non-Color
- emission color (1.000, 1.000, 1.000) tex:'checkerboard_emissive.png' (../blend_scene/textures/checkerboard_emissive.png) a:False
- emission strength 0.200
- viewport diffuse (0.800, 0.800, 0.800, 1.000)

View File

@@ -201,7 +201,7 @@
- base color (0.668, 0.958, 0.552) tex:'checker16.png' (checker16.png) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.250 tex:'checker16.png' (checker16.png) a:False
- roughness 0.250 tex:'checker16.png' (checker16.png) a:False Non-Color
- metallic 0.700
- ior 1.500
- normalmap 1.000 tex:'normalmap64.png' (normalmap64.png) a:False data
@@ -214,7 +214,7 @@
- base color (0.354, 0.365, 0.818) tex:'checker16.png' (checker16.png) a:False
- specular ior 1.000
- specular tint (1.000, 1.000, 1.000)
- roughness 0.700 tex:'checker16.png' (checker16.png) a:False
- roughness 0.700 tex:'checker16.png' (checker16.png) a:False Non-Color
- metallic 0.200
- ior 1.200
- normalmap 1.000 tex:'normalmap64.png' (normalmap64.png) a:False data
@@ -241,7 +241,7 @@
- base color (0.926, 0.880, 0.375) tex:'checker16.png' (checker16.png) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.350 tex:'checker16.png' (checker16.png) a:False
- roughness 0.350 tex:'checker16.png' (checker16.png) a:False Non-Color
- metallic 0.600
- ior 1.500
- normalmap 1.000 tex:'normalmap64.png' (normalmap64.png) a:False data
@@ -254,7 +254,7 @@
- base color (0.664, 0.553, 0.512) tex:'checker16.png' (checker16.png) a:False
- specular ior 1.000
- specular tint (1.000, 1.000, 1.000)
- roughness 0.250 tex:'checker16.png' (checker16.png) a:False
- roughness 0.250 tex:'checker16.png' (checker16.png) a:False Non-Color
- metallic 0.700
- ior 1.520
- transmission 0.200

View File

@@ -34,14 +34,14 @@
==== Materials: 1
- Mat 'Material.001'
- base color (0.800, 0.800, 0.800) tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:False
- specular ior 0.500 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False
- specular ior 0.500 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False Non-Color
- specular tint (1.000, 1.000, 1.000) tex:'checkerboard_specular.png' (textures/checkerboard_specular.png) a:False
- roughness 0.690
- metallic 0.000
- ior 1.500
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- emission color (0.800, 0.800, 0.800)
- emission strength 0.000 tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 0.000 tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False Non-Color
- viewport diffuse (0.800, 0.800, 0.800, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 0.500
- viewport metallic 0.000, roughness 0.690

View File

@@ -44,10 +44,10 @@
- base color (0.800, 0.800, 0.800) tex:'checkerboard_diffuse.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_diffuse.png) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.500 tex:'checkerboard_roughness.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_roughness.png) a:False
- metallic 0.000 tex:'checkerboard_metallic.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_metallic.png) a:False
- roughness 0.500 tex:'checkerboard_roughness.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_roughness.png) a:False Non-Color
- metallic 0.000 tex:'checkerboard_metallic.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_metallic.png) a:False Non-Color
- ior 1.500
- alpha 1.000 tex:'checkerboard_diffuse.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (blender_293_embedded_textures_7400_binary.fbm/checkerboard_diffuse.png) a:True Non-Color
- viewport diffuse (0.800, 0.800, 0.800, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 0.500
- viewport metallic 0.000, roughness 0.500

View File

@@ -44,10 +44,10 @@
- base color (0.800, 0.800, 0.800) tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.500 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- roughness 0.500 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.500
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- viewport diffuse (0.800, 0.800, 0.800, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 0.500
- viewport metallic 0.000, roughness 0.500

View File

@@ -43,13 +43,13 @@
==== Materials: 1
- Mat '01 - Default'
- base color (0.010, 0.020, 0.030) tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:False
- specular ior 0.420 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False
- specular ior 0.420 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False Non-Color
- specular tint (0.220, 0.230, 0.240) tex:'checkerboard_specular.png' (textures/checkerboard_specular.png) a:False
- roughness 0.060 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False
- metallic 0.050 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- roughness 0.060 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.050 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.330
- transmission 0.260 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:False
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- transmission 0.260 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:False Non-Color
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- normalmap 1.000 tex:'checkerboard_normal.png' (textures/checkerboard_normal.png) a:False data
- viewport diffuse (0.010, 0.020, 0.030, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 0.420

View File

@@ -43,15 +43,15 @@
==== Materials: 1
- Mat 'PhysicalMaterial'
- base color (0.500, 0.500, 0.500) tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:False
- specular ior 1.000 tex:'checkerboard_reflection.png' (textures/checkerboard_reflection.png) a:False
- specular ior 1.000 tex:'checkerboard_reflection.png' (textures/checkerboard_reflection.png) a:False Non-Color
- specular tint (1.000, 1.000, 1.000) tex:'checkerboard_reflection.png' (textures/checkerboard_reflection.png) a:False
- roughness 0.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- ior 1.520 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False
- transmission 0.000 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:False
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- roughness 0.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.520 tex:'checkerboard_weight.png' (textures/checkerboard_weight.png) a:False Non-Color
- transmission 0.000 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:False Non-Color
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- emission color (1.000, 1.000, 1.000) tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 0.000 tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 0.000 tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False Non-Color
- normalmap 1.000 tex:'checkerboard_bump.png' (textures/checkerboard_bump.png) a:False data
- viewport diffuse (0.500, 0.500, 0.500, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 1.000

View File

@@ -45,8 +45,8 @@
- base color (0.500, 0.500, 0.500) tex:'Image' (.) a:False
- specular ior 1.000
- specular tint (1.000, 1.000, 1.000)
- roughness 0.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- roughness 0.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False Non-Color
- metallic 0.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.520
- normalmap 1.000 tex:'Image' (.) a:False data
- viewport diffuse (0.500, 0.500, 0.500, 1.000)

View File

@@ -45,10 +45,10 @@
- base color (0.000, 0.000, 0.000) tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:False
- specular ior 1.000
- specular tint (0.000, 0.000, 0.000) tex:'checkerboard_specular.png' (textures/checkerboard_specular.png) a:False
- roughness 1.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False
- metallic 1.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- roughness 1.000 tex:'checkerboard_roughness.png' (textures/checkerboard_roughness.png) a:False Non-Color
- metallic 1.000 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.520
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- viewport diffuse (0.000, 0.000, 0.000, 1.000)
- viewport specular (1.000, 1.000, 1.000), intensity 1.000
- viewport metallic 1.000, roughness 1.000

View File

@@ -46,9 +46,9 @@
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.050
- metallic 0.040 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False
- metallic 0.040 tex:'checkerboard_metallic.png' (textures/checkerboard_metallic.png) a:False Non-Color
- ior 1.500
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- emission color (0.060, 0.070, 0.080) tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 0.090
- viewport diffuse (0.010, 0.020, 0.030, 1.000)

View File

@@ -87,7 +87,7 @@
- roughness 0.500
- metallic 0.000
- ior 1.500
- alpha 1.000 tex:'checkerboard_ambient.png' (textures/checkerboard_ambient.png) a:True
- alpha 1.000 tex:'checkerboard_ambient.png' (textures/checkerboard_ambient.png) a:True Non-Color
- emission color (0.500, 0.500, 0.500) tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 1.000
- normalmap 1.000 tex:'checkerboard_bump.png' (textures/checkerboard_bump.png) a:False data

View File

@@ -64,7 +64,7 @@
- roughness 0.500
- metallic 0.000
- ior 1.500
- alpha 1.000 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:True tr:(0.500, -0.207, 0.000) rot:(-0.000, -0.000, -45.000)
- alpha 1.000 tex:'checkerboard_transparency.png' (textures/checkerboard_transparency.png) a:True Non-Color tr:(0.500, -0.207, 0.000) rot:(-0.000, -0.000, -45.000)
- emission color (0.500, 0.500, 0.500) tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False tr:(1.000, 2.000, 0.000)
- emission strength 1.000
- viewport diffuse (1.000, 1.000, 1.000, 1.000)

View File

@@ -48,7 +48,7 @@
- roughness 0.553
- metallic 0.000
- ior 1.500
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True
- alpha 1.000 tex:'checkerboard_diffuse.png' (textures/checkerboard_diffuse.png) a:True Non-Color
- emission color (0.500, 0.500, 0.500) tex:'checkerboard_emissive.png' (textures/checkerboard_emissive.png) a:False
- emission strength 1.000
- viewport diffuse (1.000, 1.000, 1.000, 1.000)

View File

@@ -166,7 +166,7 @@
- base color (0.800, 0.200, 0.200)
- specular ior 0.200
- specular tint (1.000, 1.000, 1.000)
- roughness 1.000 tex:'texture_checker.png' (//obj/texture_checker.png) a:False
- roughness 1.000 tex:'texture_checker.png' (//obj/texture_checker.png) a:False Non-Color
- metallic 0.300
- ior 1.450
- emission color (1.000, 1.000, 1.000) tex:'texture_illum.png' (//obj/texture_illum.png) a:False

View File

@@ -166,7 +166,7 @@
- base color (0.800, 0.200, 0.200)
- specular ior 0.200
- specular tint (1.000, 1.000, 1.000)
- roughness 1.000 tex:'texture_checker.png' (//blend_geometry/texture_checker.png) a:False
- roughness 1.000 tex:'texture_checker.png' (//blend_geometry/texture_checker.png) a:False Non-Color
- metallic 0.300
- ior 1.450
- emission color (1.000, 1.000, 1.000) tex:'texture_illum.png' (//blend_geometry/texture_illum.png) a:False

View File

@@ -76,8 +76,8 @@
- base color (0.800, 0.800, 0.800) tex:'texture.png' (//obj/texture.png) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.000 tex:'sometexture_Roughness.png' (sometexture_Roughness.png) a:False
- metallic 0.000 tex:'sometexture_Metallic.png' (sometexture_Metallic.png) a:False
- roughness 0.000 tex:'sometexture_Roughness.png' (sometexture_Roughness.png) a:False Non-Color
- metallic 0.000 tex:'sometexture_Metallic.png' (sometexture_Metallic.png) a:False Non-Color
- ior 1.450
- normalmap 1.000 tex:'sometexture_Normal.png' (sometexture_Normal.png) a:False data
- viewport diffuse (0.800, 0.800, 0.800, 1.000)
@@ -89,8 +89,8 @@
- base color (0.800, 0.800, 0.800) tex:'someHatTexture_BaseColor.jpg' (someHatTexture_BaseColor.jpg) a:False
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.106 tex:'someHatTexture_Roughness.jpg' (someHatTexture_Roughness.jpg) a:False
- metallic 0.000 tex:'someHatTexture_Metalness.jpg' (someHatTexture_Metalness.jpg) a:False
- roughness 0.106 tex:'someHatTexture_Roughness.jpg' (someHatTexture_Roughness.jpg) a:False Non-Color
- metallic 0.000 tex:'someHatTexture_Metalness.jpg' (someHatTexture_Metalness.jpg) a:False Non-Color
- ior 1.500
- normalmap 0.500 tex:'someHatTexture_Normal.jpg' (someHatTexture_Normal.jpg) a:False data
- viewport diffuse (0.800, 0.800, 0.800, 1.000)

View File

@@ -78,7 +78,7 @@
- base color (0.800, 0.800, 0.800)
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.000 tex:'texture_roughness.png' (//blend_geometry/texture_roughness.png) a:False
- roughness 0.000 tex:'texture_roughness.png' (//blend_geometry/texture_roughness.png) a:False Non-Color
- metallic 0.000
- ior 1.450
- emission color (1.000, 1.000, 1.000) tex:'texture_illum.png' (//blend_geometry/texture_illum.png) a:False

View File

@@ -78,7 +78,7 @@
- base color (0.800, 0.800, 0.800)
- specular ior 0.500
- specular tint (1.000, 1.000, 1.000)
- roughness 0.000 tex:'texture_roughness.png' (//blend_geometry/texture_roughness.png) a:False
- roughness 0.000 tex:'texture_roughness.png' (//blend_geometry/texture_roughness.png) a:False Non-Color
- metallic 0.000
- ior 1.450
- emission color (1.000, 1.000, 1.000) tex:'texture_illum.png' (//blend_geometry/texture_illum.png) a:False

View File

@@ -380,6 +380,8 @@ class Report:
desc = f" tex:'{tex.image.name}' ({rel_path}) a:{tex.use_alpha}"
if str(tex.colorspace_is_data) == "True": # unset value is "Ellipsis"
desc += f" data"
if str(tex.colorspace_name) != "Ellipsis":
desc += f" {tex.colorspace_name}"
if tex.texcoords != 'UV':
desc += f" uv:{tex.texcoords}"
if tex.extension != 'REPEAT':