diff options
m--------- | release/scripts/addons | 0 | ||||
-rw-r--r-- | source/blender/io/collada/Materials.cpp | 22 |
2 files changed, 19 insertions, 3 deletions
diff --git a/release/scripts/addons b/release/scripts/addons -Subproject bb16aba5bd3873794eefe167497118b6063b9a8 +Subproject 4fcdbfe7c20edfc1204c0aa46c98ea25354abcd diff --git a/source/blender/io/collada/Materials.cpp b/source/blender/io/collada/Materials.cpp index c7244575752..508844de042 100644 --- a/source/blender/io/collada/Materials.cpp +++ b/source/blender/io/collada/Materials.cpp @@ -376,18 +376,34 @@ void MaterialNode::set_opacity(COLLADAFW::ColorOrTexture &cot) void MaterialNode::set_specular(COLLADAFW::ColorOrTexture &cot) { + bool is_zero = false; int locy = -300 * (node_map.size() - 2); if (cot.isColor()) { COLLADAFW::Color col = cot.getColor(); - bNode *node = add_node(SH_NODE_RGB, -300, locy, "Specular"); - set_color(node, col); - /* TODO: Connect node */ + + if (col.getRed() == 0 && col.getGreen() == 0 && col.getBlue() == 0) { + is_zero = true; + } + else { + bNode *node = add_node(SH_NODE_RGB, -300, locy, "Specular"); + set_color(node, col); + /* TODO: Connect node */ + } } /* texture */ else if (cot.isTexture()) { add_texture_node(cot, -300, locy, "Specular"); /* TODO: Connect node */ } + /* not specified (no specular term) */ + else { + is_zero = true; + } + + if (is_zero) { + bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Specular"); + ((bNodeSocketValueFloat *)socket->default_value)->value = 0.0f; + } } bNode *MaterialNode::add_texture_node(COLLADAFW::ColorOrTexture &cot, |