[Bf-blender-cvs] [a1069b6c662] blender-v2.93-release: Fix T86314: materials not updated correctly after collada import (again)

Philipp Oeser noreply at git.blender.org
Thu May 6 08:43:51 CEST 2021


Commit: a1069b6c662ffbeba0457164c3ec831678b25fd4
Author: Philipp Oeser
Date:   Tue May 4 15:19:33 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rBa1069b6c662ffbeba0457164c3ec831678b25fd4

Fix T86314: materials not updated correctly after collada import (again)

While rB6b18678e34bf did the correct updates, it did it a bit early (not
covering all possible node tree changes).

Now do the ntreeUpdateTree() at the very end of the material import
instead.

Thx @scurest investigating.

Maniphest Tasks: T86314

Differential Revision: https://developer.blender.org/D11159

===================================================================

M	source/blender/io/collada/DocumentImporter.cpp
M	source/blender/io/collada/Materials.cpp
M	source/blender/io/collada/Materials.h

===================================================================

diff --git a/source/blender/io/collada/DocumentImporter.cpp b/source/blender/io/collada/DocumentImporter.cpp
index 214b5207a96..beadfc98c74 100644
--- a/source/blender/io/collada/DocumentImporter.cpp
+++ b/source/blender/io/collada/DocumentImporter.cpp
@@ -817,6 +817,8 @@ void DocumentImporter::write_profile_COMMON(COLLADAFW::EffectCommon *ef, Materia
   matNode.set_ambient(ef->getAmbient());
   matNode.set_specular(ef->getSpecular());
   matNode.set_reflective(ef->getReflective());
+
+  matNode.update_material_nodetree();
 }
 
 /**
diff --git a/source/blender/io/collada/Materials.cpp b/source/blender/io/collada/Materials.cpp
index 6ba31599fcd..2cc80de2ec1 100644
--- a/source/blender/io/collada/Materials.cpp
+++ b/source/blender/io/collada/Materials.cpp
@@ -25,8 +25,6 @@ MaterialNode::MaterialNode(bContext *C, Material *ma, KeyImageMap &key_image_map
     shader_node = add_node(SH_NODE_BSDF_PRINCIPLED, 0, 300, "");
     output_node = add_node(SH_NODE_OUTPUT_MATERIAL, 300, 300, "");
     add_link(shader_node, 0, output_node, 0);
-
-    ntreeUpdateTree(CTX_data_main(C), ntree);
   }
 }
 
@@ -61,8 +59,6 @@ MaterialNode::MaterialNode(bContext *C,
   shader_node = add_node(SH_NODE_BSDF_PRINCIPLED, 0, 300, "");
   output_node = add_node(SH_NODE_OUTPUT_MATERIAL, 300, 300, "");
   add_link(shader_node, 0, output_node, 0);
-
-  ntreeUpdateTree(CTX_data_main(C), ntree);
 #endif
 }
 
@@ -109,6 +105,11 @@ bNodeTree *MaterialNode::prepare_material_nodetree()
   return ntree;
 }
 
+void  MaterialNode::update_material_nodetree()
+{
+  ntreeUpdateTree(CTX_data_main(mContext), ntree);
+}
+
 bNode *MaterialNode::add_node(int node_type, int locx, int locy, std::string label)
 {
   bNode *node = nodeAddStaticNode(mContext, ntree, node_type);
diff --git a/source/blender/io/collada/Materials.h b/source/blender/io/collada/Materials.h
index f671a00758d..2d8c823a4c2 100644
--- a/source/blender/io/collada/Materials.h
+++ b/source/blender/io/collada/Materials.h
@@ -68,4 +68,6 @@ class MaterialNode {
   void set_alpha(COLLADAFW::EffectCommon::OpaqueMode mode,
                  COLLADAFW::ColorOrTexture &cot,
                  COLLADAFW::FloatOrParam &val);
+
+  void update_material_nodetree();
 };



More information about the Bf-blender-cvs mailing list