Commit: dd3e3474abcb9c07ba0bd26f6b8940fc906d97a5 Author: Gaia Clary Date: Mon Jul 15 17:12:52 2019 +0200 Branches: master https://developer.blender.org/rBdd3e3474abcb9c07ba0bd26f6b8940fc906d97a5
fix T66899: Collada: Shininess/Reflectivity not handled correct Fixed: The Collada Exporter only supports export of Lambert Shaders. But Shininess is not supported with Lambert Shaders. The exporter must not add Shininess to the Shader data! Fixed: The Collada Importer adds an illegal value of -1 for reflectivity when this parameters is not defined in the imported collada data. Now reflectivity is only set when the import data contains a valid value. Discarded: The Collada Importer handles shininess in a dubious way. I have discarded import for now. This needs to be reworked carefully in 2.81. Differential Revision: https://developer.blender.org/D5262 =================================================================== M source/blender/collada/DocumentImporter.cpp M source/blender/collada/EffectExporter.cpp M source/blender/collada/Materials.cpp =================================================================== diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 06f6682f401..eabd9469582 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -804,7 +804,10 @@ void DocumentImporter::write_profile_COMMON(COLLADAFW::EffectCommon *ef, Materia matNode.set_alpha(ef->getOpaqueMode(), ef->getTransparent(), ef->getTransparency()); /* following mapping still needs to be verified */ +#if 0 + // needs rework to be done for 2.81 matNode.set_shininess(ef->getShininess()); +#endif matNode.set_reflectivity(ef->getReflectivity()); /* not supported by principled BSDF */ diff --git a/source/blender/collada/EffectExporter.cpp b/source/blender/collada/EffectExporter.cpp index 394c79bb988..a784776d342 100644 --- a/source/blender/collada/EffectExporter.cpp +++ b/source/blender/collada/EffectExporter.cpp @@ -208,21 +208,20 @@ void EffectsExporter::operator()(Material *ma, Object *ob) COLLADASW::EffectProfile ep(mSW); ep.setProfileType(COLLADASW::EffectProfile::COMMON); ep.openProfile(); - set_shader_type(ep, ma); + set_shader_type(ep, ma); // creates a Lambert Shader for now COLLADASW::ColorOrTexture cot; set_diffuse_color(ep, ma); set_emission(ep, ma); set_ior(ep, ma); - set_shininess(ep, ma); set_reflectivity(ep, ma); set_transparency(ep, ma); - /* TODO: from where to get ambient, specular and reflective? */ + /* TODO: */ + // set_shininess(ep, ma); shininess not supported for lambert // set_ambient(ep, ma); // set_specular(ep, ma); - // set_reflective(ep, ma); get_images(ma, material_image_map); std::string active_uv(getActiveUVLayerName(ob)); diff --git a/source/blender/collada/Materials.cpp b/source/blender/collada/Materials.cpp index aa35b71b9db..d8a0f06c12b 100644 --- a/source/blender/collada/Materials.cpp +++ b/source/blender/collada/Materials.cpp @@ -131,18 +131,24 @@ void MaterialNode::add_link(bNode *from_node, int from_index, bNode *to_node, in void MaterialNode::set_reflectivity(COLLADAFW::FloatOrParam &val) { float reflectivity = val.getFloatValue(); - bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Metallic"); - ((bNodeSocketValueFloat *)socket->default_value)->value = reflectivity; - - material->metallic = reflectivity; + if (reflectivity >= 0) { + bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Metallic"); + ((bNodeSocketValueFloat *)socket->default_value)->value = reflectivity; + material->metallic = reflectivity; + } } +#if 0 +// needs rework to be done for 2.81 void MaterialNode::set_shininess(COLLADAFW::FloatOrParam &val) { float roughness = val.getFloatValue(); - bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Roughness"); - ((bNodeSocketValueFloat *)socket->default_value)->value = roughness; + if (roughness >= 0) { + bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Roughness"); + ((bNodeSocketValueFloat *)socket->default_value)->value = roughness; + } } +#endif void MaterialNode::set_ior(COLLADAFW::FloatOrParam &val) { _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
