Get Metadata value from specific time / frame using Simple Expressions

Moderator: SecondMan

User avatar
Kristof
Fusionista
Posts: 557
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 1
Been thanked: 18 times

Get Metadata value from specific time / frame using Simple Expressions

#1

Post by Kristof » Mon Sep 09, 2019 3:59 am

So I added a "Source" User Control to my node that just establishes what node to get the metadata from--I always use an "ImageControl" for this kind of stuff. With a simple expression like self:GetSourceTool( "Source" ).Output.Metadata.horizontalFilmAperture )
you can get it to work. But I would like to read the value coming from a particular frame. I tried a lot of things but I just can't get it to work. What would be the correct syntax to get the value from frame 5 for instance?

by SecondMan » Wed Sep 11, 2019 3:49 pm

I think I nailed it:

Code: Select all

{
Tools = ordered() {
Text2 = TextPlus {
CtrlWZoom = false,
ViewInfo = OperatorInfo { Pos = { 412.666656494141, 156.727279663086 } },
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
EffectMask = Input {
Source = "Output",
SourceOp = "SetMetadata1"
},
ManualFontKerningPlacement = Input {
Value = StyledText {
Array = {
},
Value = ""
}
},
HorizontalJustificationNew = Input { Value = 3 },
Style = Input { Value = "Bold" },
TabSpacing = Input { Value = 1 },
Width = Input { Value = 1920 },
Font = Input { Value = "Open Sans" },
AdvancedFontControls = Input { Value = 1 },
StyledText = Input {
Expression = "self:GetSourceTool(\"EffectMask\").Output.Metadata.field",
Value = "1"
},
Height = Input { Value = 1080 },
VerticalJustificationNew = Input { Value = 3 }
}
},
SetMetadata1 = Fuse.SetMetaData {
ViewInfo = OperatorInfo { Pos = { 412, 74.0302886962891 } },
Inputs = {
FieldName = Input { Value = "field" },
FieldValue = Input {
Source = "Value",
SourceOp = "SetMetadata1FieldValue"
},
Input = Input {
Source = "Output",
SourceOp = "Background1"
}
}
},
SetMetadata1FieldValue = BezierSpline {
SplineColor = { Red = 108, Green = 229, Blue = 8 },
NameSet = true,
KeyFrames = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Value = Text {
Value = "1"
}, Flags = { LockedY = true, Linear = true } },
{ 1, Flags = { LockedY = true, Linear = true }, RH = { 1.33333333333333, 1.33333333333333 }, Value = Text {
Value = "2"
}, LH = { 0.666666666666667, 0.666666666666667 } },
{ 2, Flags = { LockedY = true, Linear = true }, RH = { 2.33333333333333, 2.33333333333333 }, Value = Text {
Value = "3"
}, LH = { 1.66666666666667, 1.66666666666667 } },
{ 3, Flags = { LockedY = true, Linear = true }, RH = { 3.33333333333333, 3.33333333333333 }, Value = Text {
Value = "4"
}, LH = { 2.66666666666667, 2.66666666666667 } },
{ 4, Value = Text {
Value = "5"
}, Flags = { LockedY = true, Linear = true }, LH = { 3.66666666666667, 3.66666666666667 } }
}
},
Text2_1 = TextPlus {
CtrlWZoom = false,
ViewInfo = OperatorInfo { Pos = { 526.000061035156, 157.666656494141 } },
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
EffectMask = Input {
Source = "Output",
SourceOp = "SetMetadata1"
},
ManualFontKerningPlacement = Input {
Value = StyledText {
Array = {
},
Value = ""
}
},
HorizontalJustificationNew = Input { Value = 3 },
Style = Input { Value = "Bold" },
Width = Input { Value = 1920 },
Font = Input { Value = "Open Sans" },
StyledText = Input {
Expression = "self:GetSourceTool(\"EffectMask\"):GetValue(\"Output\",time+1).Metadata.field",
Value = "2"
},
Height = Input { Value = 1080 },
VerticalJustificationNew = Input { Value = 3 }
}
},
Background1 = Background {
ViewInfo = OperatorInfo { Pos = { 274.000061035156, 73.4242324829102 } },
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
Width = Input { Value = 1920 },
Height = Input { Value = 1080 }
}
}
}
}
Go to full post

User avatar
Midgardsormr
Fusionator
Posts: 1097
Joined: Wed Nov 26, 2014 8:04 pm
Answers: 2
Location: Los Angeles, CA, USA
Been thanked: 74 times
Contact:

Re: Get Metadata value from specific time / frame using Simple Expressions

#2

Post by Midgardsormr » Mon Sep 09, 2019 7:09 am

It might be possible to do it as a single step, but I think what I'd do is set up the metadata extraction in an intermediate field, then read the result of that field in the Aperture control with GetValue(), as described in VFXPedia:

https://www.steakunderwater.com/VFXPedi ... _.2F_frame


User avatar
Kristof
Fusionista
Posts: 557
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 1
Been thanked: 18 times

Re: Get Metadata value from specific time / frame using Simple Expressions

#3

Post by Kristof » Mon Sep 09, 2019 12:07 pm

That should work indeed. I'm still curious about how to do it in a single line.


User avatar
SecondMan
Site Admin
Posts: 3473
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 5
Location: Vancouver, Canada
Been thanked: 92 times
Contact:

Re: Get Metadata value from specific time / frame using Simple Expressions

#4

Post by SecondMan » Wed Sep 11, 2019 3:49 pm

I think I nailed it:

Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2019-09-11--15.48.35.setting)
  1. {
  2.     Tools = ordered() {
  3.         Text2 = TextPlus {
  4.             CtrlWZoom = false,
  5.             ViewInfo = OperatorInfo { Pos = { 412.666656494141, 156.727279663086 } },
  6.             Inputs = {
  7.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  8.                 EffectMask = Input {
  9.                     Source = "Output",
  10.                     SourceOp = "SetMetadata1"
  11.                 },
  12.                 ManualFontKerningPlacement = Input {
  13.                     Value = StyledText {
  14.                         Array = {
  15.                         },
  16.                         Value = ""
  17.                     }
  18.                 },
  19.                 HorizontalJustificationNew = Input { Value = 3 },
  20.                 Style = Input { Value = "Bold" },
  21.                 TabSpacing = Input { Value = 1 },
  22.                 Width = Input { Value = 1920 },
  23.                 Font = Input { Value = "Open Sans" },
  24.                 AdvancedFontControls = Input { Value = 1 },
  25.                 StyledText = Input {
  26.                     Expression = "self:GetSourceTool(\"EffectMask\").Output.Metadata.field",
  27.                     Value = "1"
  28.                 },
  29.                 Height = Input { Value = 1080 },
  30.                 VerticalJustificationNew = Input { Value = 3 }
  31.             }
  32.         },
  33.         SetMetadata1 = Fuse.SetMetaData {
  34.             ViewInfo = OperatorInfo { Pos = { 412, 74.0302886962891 } },
  35.             Inputs = {
  36.                 FieldName = Input { Value = "field" },
  37.                 FieldValue = Input {
  38.                     Source = "Value",
  39.                     SourceOp = "SetMetadata1FieldValue"
  40.                 },
  41.                 Input = Input {
  42.                     Source = "Output",
  43.                     SourceOp = "Background1"
  44.                 }
  45.             }
  46.         },
  47.         SetMetadata1FieldValue = BezierSpline {
  48.             SplineColor = { Red = 108, Green = 229, Blue = 8 },
  49.             NameSet = true,
  50.             KeyFrames = {
  51.                 [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Value = Text {
  52.                         Value = "1"
  53.                     }, Flags = { LockedY = true, Linear = true } },
  54.                 { 1, Flags = { LockedY = true, Linear = true }, RH = { 1.33333333333333, 1.33333333333333 }, Value = Text {
  55.                         Value = "2"
  56.                     }, LH = { 0.666666666666667, 0.666666666666667 } },
  57.                 { 2, Flags = { LockedY = true, Linear = true }, RH = { 2.33333333333333, 2.33333333333333 }, Value = Text {
  58.                         Value = "3"
  59.                     }, LH = { 1.66666666666667, 1.66666666666667 } },
  60.                 { 3, Flags = { LockedY = true, Linear = true }, RH = { 3.33333333333333, 3.33333333333333 }, Value = Text {
  61.                         Value = "4"
  62.                     }, LH = { 2.66666666666667, 2.66666666666667 } },
  63.                 { 4, Value = Text {
  64.                         Value = "5"
  65.                     }, Flags = { LockedY = true, Linear = true }, LH = { 3.66666666666667, 3.66666666666667 } }
  66.             }
  67.         },
  68.         Text2_1 = TextPlus {
  69.             CtrlWZoom = false,
  70.             ViewInfo = OperatorInfo { Pos = { 526.000061035156, 157.666656494141 } },
  71.             Inputs = {
  72.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  73.                 EffectMask = Input {
  74.                     Source = "Output",
  75.                     SourceOp = "SetMetadata1"
  76.                 },
  77.                 ManualFontKerningPlacement = Input {
  78.                     Value = StyledText {
  79.                         Array = {
  80.                         },
  81.                         Value = ""
  82.                     }
  83.                 },
  84.                 HorizontalJustificationNew = Input { Value = 3 },
  85.                 Style = Input { Value = "Bold" },
  86.                 Width = Input { Value = 1920 },
  87.                 Font = Input { Value = "Open Sans" },
  88.                 StyledText = Input {
  89.                     Expression = "self:GetSourceTool(\"EffectMask\"):GetValue(\"Output\",time+1).Metadata.field",
  90.                     Value = "2"
  91.                 },
  92.                 Height = Input { Value = 1080 },
  93.                 VerticalJustificationNew = Input { Value = 3 }
  94.             }
  95.         },
  96.         Background1 = Background {
  97.             ViewInfo = OperatorInfo { Pos = { 274.000061035156, 73.4242324829102 } },
  98.             Inputs = {
  99.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  100.                 Width = Input { Value = 1920 },
  101.                 Height = Input { Value = 1080 }
  102.             }
  103.         }
  104.     }
  105. }

User avatar
Kristof
Fusionista
Posts: 557
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 1
Been thanked: 18 times

Re: Get Metadata value from specific time / frame using Simple Expressions

#5

Post by Kristof » Thu Sep 12, 2019 1:21 am

Yes, you did indeed! Hah, you genius. :) Thanks.