Aller au contenu

Has Metadata Node

By Kriss Norde

Has Metadata tests whether a metadata field exists in the image stream and returns a 0 (missing) or 1 (present) signal. It lets you build data-driven pipelines: turn branches on/off depending on whether a tag is present, switch automatically between versions, debug.

Overview

Has Metadata checks whether a specified Field Name exists in the input's metadata. The output is a 0 or 1 scalar value, readable through expressions from any other node to drive a property.

Typical cases: adjusting a Color Corrector differently depending on whether a shot was tagged "approved", choosing an alternative compositing mode if an asset is marked as a matte painting, or enabling a debug overlay only for frames that carry a specific tag.

Where to find this node

  • Effects Library: Tools > Metadata > Has Metadata
  • Quick add: right-click in the Node Editor → Add Tool > Metadata > Has Metadata

How it works

The node tests the existence (and optionally the value) of a field. The result is exposed as a scalar output:

Simple existence
If the field exists = 1, otherwise = 0. Regardless of the field's value.
Value match
If Match Value is filled in, it returns 1 only if the field exists AND its value matches exactly.
Reading by expression
Reference: HasMetadata1.Output from another property to drive a behavior (e.g. the Blend factor of a Merge).

Inputs

  • Input (orange) - the image whose metadata is tested. The image output passes the input through unchanged.

Setup

Switching between two versions based on a tag:
MediaIn → Has Metadata (Field = "Approved")
        ↓
       Merge (Foreground Blend = HasMetadata1.Output)
        ↑                          ↑
       VersionA ──────────────────┘
       VersionB ─────────────────────────────────────
                  (if not approved, blend 0 → VersionB visible)

Conditional pipeline:
MediaIn → Has Metadata (Field = "DebugMode")
                ↓
        Text+ (Show = HasMetadata1.Output)
        shows a debug overlay if the tag is present

Value match:
MediaIn → Has Metadata (Field = "Status", Match = "approved")
                ↓
        output = 1 only if Status exists AND equals "approved"

Controls tab

Field Name (default: empty)
Name of the metadata field to test. Case-sensitive depending on the configuration; follow the conventions used in your pipeline.
Match Value (default: empty)
When filled in, the test only returns 1 if the field exists AND its value matches exactly. When empty, it is a simple existence test.
Output (read-only, 0 or 1)
The computed scalar value. Can be referenced through HasMetadata1.Output from expressions.

Use cases

  • A/B version switch - two versions of a composite feed a Merge whose Blend is driven by Has Metadata = it switches based on a tag.
  • Conditional debug overlay - show debug information (Text+, Indicator) only when a "debug" tag is present. Handy in reviews without changing the comp.
  • Data-driven pipeline - turn whole branches on/off (through Saver Pass Through or Merge Blend) depending on the presence of metadata.
  • Quality indicator - a Text+ whose color is driven by HasMetadata1.Output: green if "approved", red otherwise. A quick visual check.
  • Skip processing if already done - if a "processed" tag is present, bypass a heavy chain through a blend or skip to save render time.
  • Automated conform - a Saver template based on Has Metadata to create a naming convention depending on whether certain fields are filled in.

Tips

  • Reference Output through expressions - on the target property (e.g. Blend), right-click → Expression → HasMetadata1.Output. The node then drives the value dynamically.
  • Match Value is case-sensitive - depending on the stream configuration, "Approved" and "approved" may be different. Standardize across the whole pipeline.
  • Empty = pure existence test - leave Match Value empty to ignore the value and just test whether the key exists. More tolerant of value variations.
  • Several Has Metadata nodes in parallel - for complex AND/OR tests, connect several Has Metadata nodes and combine their Outputs through expressions: HasMetadata1.Output * HasMetadata2.Output = AND.
  • No visual impact - the node does not change the image. It can sit anywhere in the chain at no visual cost.
  • Pairs well with Set Metadata - a classic pipeline: Set Metadata upstream of a chain, Has Metadata downstream to branch conditionally.
  • For more complex scripting, use a Lua console / Fuse rather than stacking too many Has Metadata nodes - beyond 3-4 nested tests, Lua code is easier to read.