[Bf-blender-cvs] [480d6004275] compositor-cryptomatte-workflow: Workflow In node editor UI prefer scene settings.

Jeroen Bakker noreply at git.blender.org
Tue Mar 9 14:10:55 CET 2021


Commit: 480d6004275c2fa1e15042b65682e901bda7551f
Author: Jeroen Bakker
Date:   Tue Mar 9 10:45:30 2021 +0100
Branches: compositor-cryptomatte-workflow
https://developer.blender.org/rB480d6004275c2fa1e15042b65682e901bda7551f

Workflow In node editor UI prefer scene settings.

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

M	source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc

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

diff --git a/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc b/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc
index a46638a9791..5e1d649548e 100644
--- a/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc
@@ -36,7 +36,9 @@
 #include "BKE_library.h"
 #include "BKE_main.h"
 
-static CryptomatteSession *cryptomatte_init_from_node(const bNode &node, int frame_number)
+static CryptomatteSession *cryptomatte_init_from_node(const bNode &node,
+                                                      const int frame_number,
+                                                      const bool use_meta_data)
 {
   if (node.type != CMP_NODE_CRYPTOMATTE) {
     return nullptr;
@@ -52,17 +54,21 @@ static CryptomatteSession *cryptomatte_init_from_node(const bNode &node, int fra
       }
       BLI_assert(GS(scene->id.name) == ID_SCE);
 
-      Render *render = (scene) ? RE_GetSceneRender(scene) : nullptr;
-      RenderResult *render_result = render ? RE_AcquireResultRead(render) : nullptr;
-      if (render_result) {
-        session = BKE_cryptomatte_init_from_render_result(render_result);
+      if (use_meta_data) {
+        Render *render = (scene) ? RE_GetSceneRender(scene) : nullptr;
+        RenderResult *render_result = render ? RE_AcquireResultRead(render) : nullptr;
+        if (render_result) {
+          session = BKE_cryptomatte_init_from_render_result(render_result);
+        }
+        if (render) {
+          RE_ReleaseResult(render);
+        }
       }
-      else {
+
+      if (session == nullptr) {
         session = BKE_cryptomatte_init_from_scene(scene);
       }
-      if (render) {
-        RE_ReleaseResult(render);
-      }
+
       break;
     }
 
@@ -109,7 +115,7 @@ static void cryptomatte_add(bNode &node, NodeCryptomatte &node_cryptomatte, floa
       MEM_callocN(sizeof(CryptomatteEntry), __func__));
   entry->encoded_hash = encoded_hash;
   /* TODO(jbakker): Get current frame from scene. */
-  CryptomatteSession *session = cryptomatte_init_from_node(node, 0);
+  CryptomatteSession *session = cryptomatte_init_from_node(node, 0, true);
   if (session) {
     BKE_cryptomatte_find_name(session, encoded_hash, entry->name, sizeof(entry->name));
     BKE_cryptomatte_free(session);
@@ -160,7 +166,7 @@ void ntreeCompositCryptomatteUpdateLayerNames(bNode *node)
   NodeCryptomatte *n = static_cast<NodeCryptomatte *>(node->storage);
   BLI_freelistN(&n->runtime.layers);
 
-  CryptomatteSession *session = cryptomatte_init_from_node(*node, 0);
+  CryptomatteSession *session = cryptomatte_init_from_node(*node, 0, false);
 
   if (session) {
     for (blender::StringRef layer_name :



More information about the Bf-blender-cvs mailing list