[Bf-blender-cvs] [78390f77240] blender2.8: Python: change node_shader_utils diffuse RGBA to base_color RGB.
Brecht Van Lommel
noreply at git.blender.org
Fri Oct 12 15:56:11 CEST 2018
Commit: 78390f7724086851da04db7f806b4223e8049cbf
Author: Brecht Van Lommel
Date: Fri Oct 12 15:39:56 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB78390f7724086851da04db7f806b4223e8049cbf
Python: change node_shader_utils diffuse RGBA to base_color RGB.
Best to give its actual name so it's clear that the Principled BSDF does
not have a diffuse color exactly, and does not have an alpha component.
Also image textures use UVs by default, so avoid creating a texture
coordinate node for that.
===================================================================
M release/scripts/modules/bpy_extras/node_shader_utils.py
===================================================================
diff --git a/release/scripts/modules/bpy_extras/node_shader_utils.py b/release/scripts/modules/bpy_extras/node_shader_utils.py
index 456c38921a7..f8f0efdef8a 100644
--- a/release/scripts/modules/bpy_extras/node_shader_utils.py
+++ b/release/scripts/modules/bpy_extras/node_shader_utils.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
-from mathutils import Vector
+from mathutils import Color, Vector
__all__ = (
"PrincipledBSDFWrapper",
@@ -37,6 +37,11 @@ def _set_check(func):
return func(self, *args, **kwargs)
return wrapper
+def rgb_to_rgba(rgb):
+ return list(rgb) + [1.0]
+
+def rgba_to_rgb(rgba):
+ return Color((rgba[0], rgba[1], rgba[2]))
class ShaderWrapper():
"""
@@ -232,21 +237,21 @@ class PrincipledBSDFWrapper(ShaderWrapper):
node_normalmap = property(node_normalmap_get)
# --------------------------------------------------------------------
- # Diffuse.
+ # Base Color.
- def diffuse_color_get(self):
+ def base_color_get(self):
if not self.use_nodes or self.node_principled_bsdf is None:
return self.material.diffuse_color
- return self.node_principled_bsdf.inputs["Base Color"].default_value
+ return rgba_to_rgb(self.node_principled_bsdf.inputs["Base Color"].default_value)
@_set_check
- def diffuse_color_set(self, color):
+ def base_color_set(self, color):
self.material.diffuse_color = color
if self.use_nodes and self.node_principled_bsdf is not None:
- self.node_principled_bsdf.inputs["Base Color"].default_value = color
- diffuse_color = property(diffuse_color_get, diffuse_color_set)
+ self.node_principled_bsdf.inputs["Base Color"].default_value = rgb_to_rgba(color)
+ base_color = property(base_color_get, base_color_set)
- def diffuse_texture_get(self):
+ def base_color_texture_get(self):
if not self.use_nodes or self.node_principled_bsdf is None:
return None
return ShaderImageTextureWrapper(
@@ -254,7 +259,7 @@ class PrincipledBSDFWrapper(ShaderWrapper):
self.node_principled_bsdf.inputs["Base Color"],
grid_row_diff=1,
)
- diffuse_texture = property(diffuse_texture_get)
+ base_color_texture = property(base_color_texture_get)
# --------------------------------------------------------------------
# Specular.
@@ -274,12 +279,12 @@ class PrincipledBSDFWrapper(ShaderWrapper):
def specular_tint_get(self):
if not self.use_nodes or self.node_principled_bsdf is None:
return 0.0
- return self.node_principled_bsdf.inputs["Specular Tint"].default_value
+ return rgba_to_rgb(self.node_principled_bsdf.inputs["Specular Tint"].default_value)
@_set_check
def specular_tint_set(self, value):
if self.use_nodes and self.node_principled_bsdf is not None:
- self.node_principled_bsdf.inputs["Specular Tint"].default_value = value
+ self.node_principled_bsdf.inputs["Specular Tint"].default_value = rgb_to_rgba(value)
specular_tint = property(specular_tint_get, specular_tint_set)
# Will only be used as gray-scale one...
@@ -524,6 +529,9 @@ class ShaderImageTextureWrapper():
@_set_check
def texcoords_set(self, texcoords):
+ # Image texture node already defaults to UVs, no extra node needed.
+ if texcoords == 'UV':
+ return
tree = self.node_image.id_data
links = tree.links
node_dst = self.node_mapping if self._node_mapping is not None else self.node_image
More information about the Bf-blender-cvs
mailing list