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
This commit is contained in:
Bastien Montagne 2014-03-16 17:00:19 +01:00
parent cce6f72de3
commit c7cd39eb6b
1 changed files with 4 additions and 2 deletions

View File

@ -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: