From c7cd39eb6b305fbe640e4a1b855b066ddcea445d Mon Sep 17 00:00:00 2001 From: Bastien Montagne <montagne29@wanadoo.fr> Date: Sun, 16 Mar 2014 17:00:19 +0100 Subject: [PATCH] Minor tweaks to material. * Use 100% white transparency color when no transparency at all (seems to be needed by some importers). * Always export some kind of Lambert shader, even when using e.g. Blender's toon one (better to get something, even inacurate, than nothing). Patch by Jens Restemeier, many thanks! Differential Revision: https://developer.blender.org/D405 --- io_scene_fbx/export_fbx_bin.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py index ec6beb5b7..7fb424618 100644 --- a/io_scene_fbx/export_fbx_bin.py +++ b/io_scene_fbx/export_fbx_bin.py @@ -1242,7 +1242,8 @@ def fbx_data_material_elements(root, mat, scene_data): elem_props_template_set(tmpl, props, "p_number", b"AmbientFactor", mat.ambient) elem_props_template_set(tmpl, props, "p_color_rgb", b"DiffuseColor", mat.diffuse_color) elem_props_template_set(tmpl, props, "p_number", b"DiffuseFactor", mat.diffuse_intensity) - elem_props_template_set(tmpl, props, "p_color_rgb", b"TransparentColor", mat.diffuse_color) + elem_props_template_set(tmpl, props, "p_color_rgb", b"TransparentColor", + mat.diffuse_color if mat.use_transparency else (1.0, 1.0, 1.0)) elem_props_template_set(tmpl, props, "p_number", b"TransparencyFactor", 1.0 - mat.alpha if mat.use_transparency else 0.0) elem_props_template_set(tmpl, props, "p_number", b"Opacity", mat.alpha if mat.use_transparency else 1.0) @@ -1684,8 +1685,9 @@ def fbx_data_from_scene(scene, settings): mat = mat_s.material # Note theoretically, FBX supports any kind of materials, even GLSL shaders etc. # However, I doubt anything else than Lambert/Phong is really portable! + # We support any kind of 'surface' shader though, better to have some kind of default Lambert than nothing. # TODO: Support nodes (*BIG* todo!). - if mat.type in {'SURFACE'} and mat.diffuse_shader in {'LAMBERT'} and not mat.use_nodes: + if mat.type in {'SURFACE'} and not mat.use_nodes: if mat in data_materials: data_materials[mat][1].append(obj) else: -- GitLab