Aperçu
Le Has Metadataévalue l' existence d'un Field Name spécifié dans la metadata de l'input. La sortie est une valeur scalaire 0 ou 1, accessible via expressions depuis n'importe quel autre node pour driver une propriété.
Cas typiques : ajuster un Color Corrector différemment selon qu'un plan a été tagué « approved » ou non, choisir un mode de compositing alternatif si un asset est marqué comme matte painting, ou activer un overlay debug uniquement pour les frames qui ont une tag spécifique.
Où trouver ce node
- Effects Library :
Tools > Metadata > Has Metadata - Ajout rapide : clic droit dans le Node Editor →
Add Tool > Metadata > Has Metadata
Comment ça fonctionne
Le node teste l'existence (et optionnellement la valeur) d'un champ. Le résultat est exposé en sortie scalaire :
- Existence simple
- Si le champ existe = 1, sinon = 0. Indépendant de la valeur du champ.
- Match de valeur
- Si Match Value est rempli, retourne 1 seulement si le champ existe ET sa valeur correspond exactement.
- Lecture par expression
- Référence :
HasMetadata1.Outputdepuis une autre propriété pour driver un comportement (ex. Blend factor d' un Merge).
Inputs
- Input (orange)- image dont on teste la metadata. La sortie image transmet l'input inchangé.
Configuration
Switch entre deux versions selon tag :
MediaIn → Has Metadata (Field = "Approved")
↓
Merge (Foreground Blend = HasMetadata1.Output)
↑ ↑
VersionA ──────────────────┘
VersionB ─────────────────────────────────────
(si non approved, blend 0 → VersionB visible)
Pipeline conditionnel :
MediaIn → Has Metadata (Field = "DebugMode")
↓
Text+ (Show = HasMetadata1.Output)
affiche overlay debug si tag présent
Match de valeur :
MediaIn → Has Metadata (Field = "Status", Match = "approved")
↓
sortie = 1 uniquement si Status existe ET vaut "approved"Onglet Controls
- Field Name (défaut : vide)
- Nom du champ metadata à tester. Sensible à la casse selon configuration ; respecter les conventions utilisées dans le pipeline.
- Match Value (défaut : vide)
- Si renseigné, le test ne retourne 1 que si le champ existe ET sa valeur matche exactement. Si vide, simple test d'existence.
- Output (read-only, 0 ou 1)
- Valeur scalaire calculée. Référencable via
HasMetadata1.Outputdepuis expressions.
Cas d'usage
- Switch version A/B- deux versions d'un compositing alimentent un Merge dont le Blend est driven par Has Metadata = bascule selon tag.
- Overlay debug conditionnel- affichage d'informations debug (Text+, Indicator) uniquement quand un tag « debug » est présent. Pratique en review sans modifier le compo.
- Pipeline data-driven - activer/désactiver des branches entières (via Saver Pass Through ou Merge Blend) selon présence de metadata.
- Indicateur de qualité - Text+ avec couleur driven par HasMetadata1.Output : vert si « approved », rouge sinon. Visualisation rapide.
- Skip processing si déjà fait - si un tag « processed » est présent, court- circuiter une chaîne lourde via blend ou skip pour économiser le temps de calcul.
- Conform automatisé - Saver template basé sur Has Metadata pour créer une convention de nommage selon que certains champs sont remplis ou non.
Astuces
- Référencer Output via expressions - sur la propriété cible (ex. Blend), clic droit → Expression →
HasMetadata1.Output. Le node pilote alors dynamiquement la valeur. - Match Value sensible à la casse- selon la config du flux, "Approved" et "approved" peuvent être différents. Standardiser dans tout le pipeline.
- Vide = test d'existence pure - laisser Match Value vide pour ignorer la valeur et tester juste si la clé existe. Plus tolérant aux variations de valeurs.
- Plusieurs Has Metadata en parallèle - pour tests AND/OR complexes, brancher plusieurs Has Metadata et combiner leurs Outputs via expressions :
HasMetadata1.Output * HasMetadata2.Output= AND. - Pas de pénalité visuelle- le node ne modifie pas l'image. Peut être placé n'importe où dans la chaîne sans coût visuel.
- Combine bien avec Set Metadata- pipeline classique : Set Metadata en amont d'une chaîne, Has Metadata en aval pour brancher conditionnellement.
- Pour scripting plus complexe, passer par une console Lua / Fuse plutôt que d'empiler trop de Has Metadata - au-delà de 3-4 tests imbriqués, le code Lua est plus lisible.
