diff options
author | Jeroen Bakker <jeroen@blender.org> | 2021-05-31 15:32:39 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-05-31 15:32:39 +0300 |
commit | e0a1c3da46ada31058471a0c40bcc8fd56929846 (patch) | |
tree | d77712a5705ac39c03af379bf6c20a917cda3789 /source/blender/compositor/nodes | |
parent | e9f2f17e8518f31706756b4ebe7c38a3582a3612 (diff) |
Fix T88666: Cryptomatte: EXR sequence does not update when scrubbing the timeline.
Cause is that initializing the cryptomatte session would reset the
current frame of an image sequence. The solution is to always use the
scene current frame so it resets to the correct frame.
This was a todo that wasn't solved after it landed in master.
Needs to be backported to 2.93.
Diffstat (limited to 'source/blender/compositor/nodes')
-rw-r--r-- | source/blender/compositor/nodes/COM_CryptomatteNode.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/compositor/nodes/COM_CryptomatteNode.cc b/source/blender/compositor/nodes/COM_CryptomatteNode.cc index d97e4371dc6..3beb3aa2917 100644 --- a/source/blender/compositor/nodes/COM_CryptomatteNode.cc +++ b/source/blender/compositor/nodes/COM_CryptomatteNode.cc @@ -77,10 +77,10 @@ void CryptomatteBaseNode::convertToOperations(NodeConverter &converter, /** \name Cryptomatte V2 * \{ */ -static std::string prefix_from_node(const bNode &node) +static std::string prefix_from_node(const CompositorContext &context, const bNode &node) { char prefix[MAX_NAME]; - ntreeCompositCryptomatteLayerPrefix(&node, prefix, sizeof(prefix)); + ntreeCompositCryptomatteLayerPrefix(context.getScene(), &node, prefix, sizeof(prefix)); return std::string(prefix, BLI_strnlen(prefix, sizeof(prefix))); } @@ -119,7 +119,7 @@ void CryptomatteNode::input_operations_from_render_source( } const short cryptomatte_layer_id = 0; - const std::string prefix = prefix_from_node(node); + const std::string prefix = prefix_from_node(context, node); LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { RenderLayer *render_layer = RE_GetRenderLayer(render_result, view_layer->name); if (render_layer) { @@ -177,7 +177,7 @@ void CryptomatteNode::input_operations_from_image_source( } } - const std::string prefix = prefix_from_node(node); + const std::string prefix = prefix_from_node(context, node); int layer_index; LISTBASE_FOREACH_INDEX (RenderLayer *, render_layer, &image->rr->layers, layer_index) { if (!blender::StringRef(prefix).startswith(blender::StringRef( |