diff options
author | Jeroen Bakker <jeroen@blender.org> | 2021-02-26 16:13:15 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-02-26 16:13:15 +0300 |
commit | 87ace4682761bdeaa8f18ae12a186dbfb83d4e04 (patch) | |
tree | 2efe16601fd9b69cfaf216c816f0c9daf41d6577 /source/blender/compositor/operations | |
parent | c489bb7c016fe4567516fbab4cc940b81f8e840f (diff) |
Cryptomatte: Manifest Parsing.
This patch adds manifest parsing to Cryptomatte. Normally when loading
cryptomatte layer from an OpenEXR file the manifest contains data to
convert a hash to its original name of the object/material. In the
future we want to use this to support lookup of cryptomatte
hashes and show it to the user.
Currently this logic isn't available to users (for now), but is required
by D3959 where a new cryptomatte workflow is implemented.
Diffstat (limited to 'source/blender/compositor/operations')
-rw-r--r-- | source/blender/compositor/operations/COM_OutputFileOperation.cpp | 5 | ||||
-rw-r--r-- | source/blender/compositor/operations/COM_RenderLayersProg.cpp | 11 |
2 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/compositor/operations/COM_OutputFileOperation.cpp b/source/blender/compositor/operations/COM_OutputFileOperation.cpp index 2f8740081a1..19d49bc2ae7 100644 --- a/source/blender/compositor/operations/COM_OutputFileOperation.cpp +++ b/source/blender/compositor/operations/COM_OutputFileOperation.cpp @@ -347,8 +347,9 @@ StampData *OutputOpenExrMultiLayerOperation::createStampData() const } std::unique_ptr<MetaData> meta_data = layer->imageInput->getMetaData(); if (meta_data) { - blender::StringRef layer_name = blender::BKE_cryptomatte_extract_layer_name( - blender::StringRef(layer->name, BLI_strnlen(layer->name, sizeof(layer->name)))); + blender::StringRef layer_name = + blender::bke::cryptomatte::BKE_cryptomatte_extract_layer_name( + blender::StringRef(layer->name, BLI_strnlen(layer->name, sizeof(layer->name)))); meta_data->replaceHashNeutralCryptomatteKeys(layer_name); meta_data->addToRenderResult(&render_result); } diff --git a/source/blender/compositor/operations/COM_RenderLayersProg.cpp b/source/blender/compositor/operations/COM_RenderLayersProg.cpp index 2a0a6e33b6a..4f4116d6faa 100644 --- a/source/blender/compositor/operations/COM_RenderLayersProg.cpp +++ b/source/blender/compositor/operations/COM_RenderLayersProg.cpp @@ -233,9 +233,12 @@ struct CallbackData { void setCryptomatteKeys(blender::StringRef cryptomatte_layer_name) { - manifest_key = blender::BKE_cryptomatte_meta_data_key(cryptomatte_layer_name, "manifest"); - hash_key = blender::BKE_cryptomatte_meta_data_key(cryptomatte_layer_name, "hash"); - conversion_key = blender::BKE_cryptomatte_meta_data_key(cryptomatte_layer_name, "conversion"); + manifest_key = blender::bke::cryptomatte::BKE_cryptomatte_meta_data_key(cryptomatte_layer_name, + "manifest"); + hash_key = blender::bke::cryptomatte::BKE_cryptomatte_meta_data_key(cryptomatte_layer_name, + "hash"); + conversion_key = blender::bke::cryptomatte::BKE_cryptomatte_meta_data_key( + cryptomatte_layer_name, "conversion"); } }; @@ -276,7 +279,7 @@ std::unique_ptr<MetaData> RenderLayersProg::getMetaData() const view_layer->name, BLI_strnlen(view_layer->name, sizeof(view_layer->name))) + "." + m_passName; - blender::StringRef cryptomatte_layer_name = blender::BKE_cryptomatte_extract_layer_name( + blender::StringRef cryptomatte_layer_name = blender::bke::cryptomatte::BKE_cryptomatte_extract_layer_name( full_layer_name); callback_data.setCryptomatteKeys(cryptomatte_layer_name); |