[Bf-blender-cvs] [c87f6242b95] master: Fix T97644: new 3.2 obj importer does not set blend mode for eevee

Aras Pranckevicius noreply at git.blender.org
Sun May 1 19:10:26 CEST 2022


Commit: c87f6242b952d3821d7bdbdd8075b27479791448
Author: Aras Pranckevicius
Date:   Wed Apr 27 22:09:27 2022 +0300
Branches: master
https://developer.blender.org/rBc87f6242b952d3821d7bdbdd8075b27479791448

Fix T97644: new 3.2 obj importer does not set blend mode for eevee

The old python importer had a "if do_transparency, set blend_method to
BLEND" type of logic. This bit was missing in the new importer; it was
only setting the eevee blend method when a transparency texture was
present, but not in other cases of transparency (as driven by MTL
"illum" mode).

Reviewd By: Howard Trickey
Differential Revision: https://developer.blender.org/D14783

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

M	source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
M	source/blender/io/wavefront_obj/importer/obj_import_mtl.hh

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

diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
index f2a8941e8a7..56e3a062cb6 100644
--- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
+++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
@@ -122,7 +122,7 @@ ShaderNodetreeWrap::ShaderNodetreeWrap(Main *bmain, const MTLMaterial &mtl_mat,
   bsdf_ = add_node_to_tree(SH_NODE_BSDF_PRINCIPLED);
   shader_output_ = add_node_to_tree(SH_NODE_OUTPUT_MATERIAL);
 
-  set_bsdf_socket_values();
+  set_bsdf_socket_values(mat);
   add_image_textures(bmain, mat);
   link_sockets(bsdf_, "BSDF", shader_output_, "Surface", 4);
 
@@ -188,7 +188,7 @@ void ShaderNodetreeWrap::link_sockets(bNode *from_node,
   nodeAddLink(nodetree_.get(), from_node, from_sock, to_node, to_sock);
 }
 
-void ShaderNodetreeWrap::set_bsdf_socket_values()
+void ShaderNodetreeWrap::set_bsdf_socket_values(Material *mat)
 {
   const int illum = mtl_mat_.illum;
   bool do_highlight = false;
@@ -309,6 +309,9 @@ void ShaderNodetreeWrap::set_bsdf_socket_values()
   set_property_of_socket(SOCK_FLOAT, "Metallic", {metallic}, bsdf_);
   set_property_of_socket(SOCK_FLOAT, "IOR", {ior}, bsdf_);
   set_property_of_socket(SOCK_FLOAT, "Alpha", {alpha}, bsdf_);
+  if (do_tranparency) {
+    mat->blend_method = MA_BM_BLEND;
+  }
 }
 
 void ShaderNodetreeWrap::add_image_textures(Main *bmain, Material *mat)
diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh
index 74bc9f21bc4..12bea1cdc5a 100644
--- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh
+++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh
@@ -82,7 +82,7 @@ class ShaderNodetreeWrap {
   /**
    * Set values of sockets in p-BSDF node of the nodetree.
    */
-  void set_bsdf_socket_values();
+  void set_bsdf_socket_values(Material *mat);
   /**
    * Create image texture, vector and normal mapping nodes from MTL materials and link the
    * nodes to p-BSDF node.



More information about the Bf-blender-cvs mailing list