acceptable looking high frame rate footage

User avatar
Tory
Fusioneer
Posts: 77
Joined: Fri Apr 13, 2018 11:29 am
Real name: Tory Hooton
Been thanked: 6 times
Contact:

Re: acceptable looking high frame rate footage

#16

Post by Tory » Tue Aug 13, 2019 2:53 pm

Nice Thanks Chad... Testing it it seems like the exp compensation needs to be 1/3 which makes sense it is adding the total light of one frame before and after(0.75+0.25+0.0+0.25+0.75)

Do the more stylized settings pull in many more frames then? Or maybe there is a more sophisticated method for weighting?

Building something like this into a fast macro that has controls might be my next next bunny trail. (at least for simple conversion options)

I am not getting real time performance at all. You mentioned that if you set this up right with the tools it is super fast. Any hints on were I need to grow in my understanding on Fusion to optimize a process like this :)
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2019-08-13--16.49.11.setting)
  1. {
  2.     Tools = ordered() {
  3.         Previous_1 = TimeStretcher {
  4.             ViewInfo = OperatorInfo { Pos = { 192.072387695313, -4.74714231491089 } },
  5.             NameSet = true,
  6.             Inputs = {
  7.                 SourceTime = Input {
  8.                     Expression = "time-2",
  9.                     Value = 23
  10.                 },
  11.                 Input = Input {
  12.                     Source = "Output",
  13.                     SourceOp = "PipeRouter1"
  14.                 }
  15.             }
  16.         },
  17.         BrightnessContrast1_1 = BrightnessContrast {
  18.             ViewInfo = OperatorInfo { Pos = { 332.596069335938, -4.74714231491089 } },
  19.             Inputs = {
  20.                 Gain = Input { Value = 0.25 },
  21.                 Input = Input {
  22.                     Source = "Output",
  23.                     SourceOp = "Previous_1"
  24.                 }
  25.             }
  26.         },
  27.         Previous = TimeStretcher {
  28.             ViewInfo = OperatorInfo { Pos = { 185.111083984375, 51.5812301635742 } },
  29.             NameSet = true,
  30.             Inputs = {
  31.                 SourceTime = Input {
  32.                     Expression = "time-1",
  33.                     Value = 24
  34.                 },
  35.                 Input = Input {
  36.                     Source = "Output",
  37.                     SourceOp = "PipeRouter1"
  38.                 }
  39.             }
  40.         },
  41.         BrightnessContrast2_1 = BrightnessContrast {
  42.             ViewInfo = OperatorInfo { Pos = { 333.590545654297, 51.5812301635742 } },
  43.             Inputs = {
  44.                 Gain = Input { Value = 0.75 },
  45.                 Input = Input {
  46.                     Source = "Output",
  47.                     SourceOp = "Previous"
  48.                 }
  49.             }
  50.         },
  51.         Merge1 = Merge {
  52.             ViewInfo = OperatorInfo { Pos = { 550, 51.5812301635742 } },
  53.             Inputs = {
  54.                 PerformDepthMerge = Input { Value = 0 },
  55.                 Background = Input {
  56.                     Source = "Output",
  57.                     SourceOp = "BrightnessContrast1_1"
  58.                 },
  59.                 Foreground = Input {
  60.                     Source = "Output",
  61.                     SourceOp = "BrightnessContrast2_1"
  62.                 },
  63.                 BurnIn = Input { Value = 1 }
  64.             }
  65.         },
  66.         BurnIn1 = Merge {
  67.             ViewInfo = OperatorInfo { Pos = { 550, 106.560546875 } },
  68.             NameSet = true,
  69.             Inputs = {
  70.                 PerformDepthMerge = Input { Value = 0 },
  71.                 Background = Input {
  72.                     Source = "Output",
  73.                     SourceOp = "Merge1"
  74.                 },
  75.                 Foreground = Input {
  76.                     Source = "Output",
  77.                     SourceOp = "Frame"
  78.                 },
  79.                 BurnIn = Input { Value = 1 }
  80.             }
  81.         },
  82.         Next_1 = TimeStretcher {
  83.             ViewInfo = OperatorInfo { Pos = { 177.155303955078, 222.636596679688 } },
  84.             NameSet = true,
  85.             Inputs = {
  86.                 SourceTime = Input {
  87.                     Expression = "time+2",
  88.                     Value = 27
  89.                 },
  90.                 Input = Input {
  91.                     Source = "Output",
  92.                     SourceOp = "PipeRouter1"
  93.                 }
  94.             }
  95.         },
  96.         BrightnessContrast1 = BrightnessContrast {
  97.             ViewInfo = OperatorInfo { Pos = { 313.397979736328, 222.636596679688 } },
  98.             Inputs = {
  99.                 Gain = Input { Value = 0.25 },
  100.                 Input = Input {
  101.                     Source = "Output",
  102.                     SourceOp = "Next_1"
  103.                 }
  104.             }
  105.         },
  106.         Next = TimeStretcher {
  107.             ViewInfo = OperatorInfo { Pos = { 177.155303955078, 163.160888671875 } },
  108.             NameSet = true,
  109.             Inputs = {
  110.                 SourceTime = Input {
  111.                     Expression = "time+1",
  112.                     Value = 26
  113.                 },
  114.                 Input = Input {
  115.                     Source = "Output",
  116.                     SourceOp = "PipeRouter1"
  117.                 }
  118.             }
  119.         },
  120.         BrightnessContrast2 = BrightnessContrast {
  121.             ViewInfo = OperatorInfo { Pos = { 315.994995117188, 163.160888671875 } },
  122.             Inputs = {
  123.                 Gain = Input { Value = 0.75 },
  124.                 Input = Input {
  125.                     Source = "Output",
  126.                     SourceOp = "Next"
  127.                 }
  128.             }
  129.         },
  130.         Merge2 = Merge {
  131.             ViewInfo = OperatorInfo { Pos = { 550, 222.636596679688 } },
  132.             Inputs = {
  133.                 PerformDepthMerge = Input { Value = 0 },
  134.                 Background = Input {
  135.                     Source = "Output",
  136.                     SourceOp = "BrightnessContrast1"
  137.                 },
  138.                 Foreground = Input {
  139.                     Source = "Output",
  140.                     SourceOp = "BrightnessContrast2"
  141.                 },
  142.                 BurnIn = Input { Value = 1 }
  143.             }
  144.         },
  145.         BurnIn2 = Merge {
  146.             ViewInfo = OperatorInfo { Pos = { 550, 162.256820678711 } },
  147.             NameSet = true,
  148.             Inputs = {
  149.                 PerformDepthMerge = Input { Value = 0 },
  150.                 Background = Input {
  151.                     Source = "Output",
  152.                     SourceOp = "BurnIn1"
  153.                 },
  154.                 Foreground = Input {
  155.                     Source = "Output",
  156.                     SourceOp = "Merge2"
  157.                 },
  158.                 BurnIn = Input { Value = 1 }
  159.             }
  160.         },
  161.         BrightnessContrast3 = BrightnessContrast {
  162.             ViewInfo = OperatorInfo { Pos = { 687.84521484375, 162.256820678711 } },
  163.             Inputs = {
  164.                 Gain = Input { Value = 0.333333333333333 },
  165.                 Input = Input {
  166.                     Source = "Output",
  167.                     SourceOp = "BurnIn2"
  168.                 }
  169.             }
  170.         },
  171.         TimeSpeed1 = TimeSpeed {
  172.             ViewInfo = OperatorInfo { Pos = { 878.011047363281, 162.256820678711 } },
  173.             Inputs = {
  174.                 InterpolateBetweenFrames = Input { Value = 0 },
  175.                 Input = Input {
  176.                     Source = "Output",
  177.                     SourceOp = "BrightnessContrast3"
  178.                 },
  179.                 SampleSpread = Input { Disabled = true },
  180.                 Speed = Input { Value = 5 }
  181.             }
  182.         },
  183.         PipeRouter1 = PipeRouter {
  184.             ViewInfo = PipeRouterInfo { Pos = { 67.1553039550781, 106.560546875 } }
  185.         },
  186.         Frame = TimeStretcher {
  187.             ViewInfo = OperatorInfo { Pos = { 180.138717651367, 106.560546875 } },
  188.             NameSet = true,
  189.             Inputs = {
  190.                 SourceTime = Input {
  191.                     Expression = "time",
  192.                     Value = 415
  193.                 },
  194.                 Input = Input {
  195.                     Source = "Output",
  196.                     SourceOp = "PipeRouter1"
  197.                 }
  198.             }
  199.         },
  200.         Instance_TimeSpeed1 = TimeSpeed {
  201.             ViewInfo = OperatorInfo { Pos = { 879.005554199219, 106.560546875 } },
  202.             CtrlWZoom = false,
  203.             SourceOp = "TimeSpeed1",
  204.             Inputs = {
  205.                 StartRenderScripts = Input { },
  206.                 EndRenderScripts = Input { },
  207.                 SettingsNest = Input { },
  208.                 FrameRenderScriptNest = Input { },
  209.                 CommentsNest = Input { },
  210.                 ["EnableWarp.Nest"] = Input { },
  211.                 Input = Input {
  212.                     Source = "Output",
  213.                     SourceOp = "Frame"
  214.                 },
  215.                 SampleSpread = Input { Disabled = true }
  216.             }
  217.         }
  218.     }
  219. }

User avatar
JUNE
Fusionista
Posts: 254
Joined: Wed Aug 06, 2014 5:45 am
Been thanked: 15 times
Contact:

Re: acceptable looking high frame rate footage

#17

Post by JUNE » Tue Aug 13, 2019 5:07 pm

@Chad How to buy ReflectionBlur3D plugin ?
Last edited by JUNE on Wed Aug 14, 2019 7:13 pm, edited 1 time in total.

User avatar
Tory
Fusioneer
Posts: 77
Joined: Fri Apr 13, 2018 11:29 am
Real name: Tory Hooton
Been thanked: 6 times
Contact:

Re: acceptable looking high frame rate footage

#18

Post by Tory » Wed Aug 14, 2019 10:18 am

Rough work in progress to test out this method. The custom tool node has 3 versions

1 = Standard 24 180
2 = Rough approximation of Time Shaper "Normal"
3 = Rough approximation of Time Shaper "Smooth"

Of course one would need to feed this footage that is 120 FPS and shot at 360° Shutter for it to work as expected. I am testing with the demo footage from https://tessive.com/synthetic-shutters and http://www.reald.com/#/truemotion

It is pretty interesting to move the sliders and see how adding and subtracting frame weighting effects the motion blur.

@Chad Thanks so much for all the information this has been awesome to experiment with and is answering questions that have been rolling around in the back of my head for years :)

The next step for me is to look into optimizing playback and exploring how to best adjust controls. I will be pouring over the threads to find information about best practices but if anyone has a hint as to where to start that would be awesome to :D

Here is what is on my list to work out...
  • Prep for animation ramping (speed/blur)
  • Better "curve" control for frame weighting?
  • Option for curve drop down as well as custom values?
  • Option to link or un-link symmetry for creative motion blur options?
  • Extreme Setting adding many more frames for stylized look?
  • Performance Optimization
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2019-08-14--14.11.15.setting)
  1. {
  2.     Tools = ordered() {
  3.         Previous9 = TimeStretcher {
  4.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -505.663970947266 } },
  5.             NameSet = true,
  6.             Inputs = {
  7.                 SourceTime = Input {
  8.                     Expression = "time-9",
  9.                     Value = 17
  10.                 },
  11.                 Input = Input {
  12.                     Source = "Output",
  13.                     SourceOp = "PipeRouter1"
  14.                 }
  15.             }
  16.         },
  17.         WeightP9 = BrightnessContrast {
  18.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -505.663970947266 } },
  19.             NameSet = true,
  20.             Inputs = {
  21.                 Gain = Input {
  22.                     Expression = "CustomTool1.Frame9",
  23.                     Value = 0
  24.                 },
  25.                 Input = Input {
  26.                     Source = "Output",
  27.                     SourceOp = "Previous9"
  28.                 }
  29.             }
  30.         },
  31.         Previous8 = TimeStretcher {
  32.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -472.663970947266 } },
  33.             NameSet = true,
  34.             Inputs = {
  35.                 SourceTime = Input {
  36.                     Expression = "time-8",
  37.                     Value = 18
  38.                 },
  39.                 Input = Input {
  40.                     Source = "Output",
  41.                     SourceOp = "PipeRouter1"
  42.                 }
  43.             }
  44.         },
  45.         WeightP8 = BrightnessContrast {
  46.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -472.663970947266 } },
  47.             NameSet = true,
  48.             Inputs = {
  49.                 Gain = Input {
  50.                     Expression = "CustomTool1.Frame8",
  51.                     Value = 0
  52.                 },
  53.                 Input = Input {
  54.                     Source = "Output",
  55.                     SourceOp = "Previous8"
  56.                 }
  57.             }
  58.         },
  59.         Merge1_7 = Merge {
  60.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -472.663970947266 } },
  61.             Inputs = {
  62.                 PerformDepthMerge = Input { Value = 0 },
  63.                 Background = Input {
  64.                     Source = "Output",
  65.                     SourceOp = "WeightP9"
  66.                 },
  67.                 Foreground = Input {
  68.                     Source = "Output",
  69.                     SourceOp = "WeightP8"
  70.                 },
  71.                 BurnIn = Input { Value = 1 }
  72.             }
  73.         },
  74.         Previous7 = TimeStretcher {
  75.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -439.663970947266 } },
  76.             NameSet = true,
  77.             Inputs = {
  78.                 SourceTime = Input {
  79.                     Expression = "time-7",
  80.                     Value = 19
  81.                 },
  82.                 Input = Input {
  83.                     Source = "Output",
  84.                     SourceOp = "PipeRouter1"
  85.                 }
  86.             }
  87.         },
  88.         WeightP7 = BrightnessContrast {
  89.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -439.663970947266 } },
  90.             NameSet = true,
  91.             Inputs = {
  92.                 Gain = Input {
  93.                     Expression = "CustomTool1.Frame7",
  94.                     Value = 0
  95.                 },
  96.                 Input = Input {
  97.                     Source = "Output",
  98.                     SourceOp = "Previous7"
  99.                 }
  100.             }
  101.         },
  102.         Merge1_6 = Merge {
  103.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -439.663970947266 } },
  104.             Inputs = {
  105.                 PerformDepthMerge = Input { Value = 0 },
  106.                 Background = Input {
  107.                     Source = "Output",
  108.                     SourceOp = "Merge1_7"
  109.                 },
  110.                 Foreground = Input {
  111.                     Source = "Output",
  112.                     SourceOp = "WeightP7"
  113.                 },
  114.                 BurnIn = Input { Value = 1 }
  115.             }
  116.         },
  117.         Previous6 = TimeStretcher {
  118.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -406.663940429688 } },
  119.             NameSet = true,
  120.             Inputs = {
  121.                 SourceTime = Input {
  122.                     Expression = "time-6",
  123.                     Value = 20
  124.                 },
  125.                 Input = Input {
  126.                     Source = "Output",
  127.                     SourceOp = "PipeRouter1"
  128.                 }
  129.             }
  130.         },
  131.         WeightP6 = BrightnessContrast {
  132.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -406.663940429688 } },
  133.             NameSet = true,
  134.             Inputs = {
  135.                 Gain = Input {
  136.                     Expression = "CustomTool1.Frame6",
  137.                     Value = 0
  138.                 },
  139.                 Input = Input {
  140.                     Source = "Output",
  141.                     SourceOp = "Previous6"
  142.                 }
  143.             }
  144.         },
  145.         Merge1_5 = Merge {
  146.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -406.663940429688 } },
  147.             Inputs = {
  148.                 PerformDepthMerge = Input { Value = 0 },
  149.                 Background = Input {
  150.                     Source = "Output",
  151.                     SourceOp = "Merge1_6"
  152.                 },
  153.                 Foreground = Input {
  154.                     Source = "Output",
  155.                     SourceOp = "WeightP6"
  156.                 },
  157.                 BurnIn = Input { Value = 1 }
  158.             }
  159.         },
  160.         Previous5 = TimeStretcher {
  161.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -373.663970947266 } },
  162.             NameSet = true,
  163.             Inputs = {
  164.                 SourceTime = Input {
  165.                     Expression = "time-5",
  166.                     Value = 21
  167.                 },
  168.                 Input = Input {
  169.                     Source = "Output",
  170.                     SourceOp = "PipeRouter1"
  171.                 }
  172.             }
  173.         },
  174.         WeightP5 = BrightnessContrast {
  175.             ViewInfo = OperatorInfo { Pos = { 632.90869140625, -373.663970947266 } },
  176.             NameSet = true,
  177.             Inputs = {
  178.                 Gain = Input {
  179.                     Expression = "CustomTool1.Frame5",
  180.                     Value = 0
  181.                 },
  182.                 Input = Input {
  183.                     Source = "Output",
  184.                     SourceOp = "Previous5"
  185.                 }
  186.             }
  187.         },
  188.         Merge1_4 = Merge {
  189.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -373.663970947266 } },
  190.             Inputs = {
  191.                 PerformDepthMerge = Input { Value = 0 },
  192.                 Background = Input {
  193.                     Source = "Output",
  194.                     SourceOp = "Merge1_5"
  195.                 },
  196.                 Foreground = Input {
  197.                     Source = "Output",
  198.                     SourceOp = "WeightP5"
  199.                 },
  200.                 BurnIn = Input { Value = 1 }
  201.             }
  202.         },
  203.         Previous4 = TimeStretcher {
  204.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -340.663940429688 } },
  205.             NameSet = true,
  206.             Inputs = {
  207.                 SourceTime = Input {
  208.                     Expression = "time-4",
  209.                     Value = 22
  210.                 },
  211.                 Input = Input {
  212.                     Source = "Output",
  213.                     SourceOp = "PipeRouter1"
  214.                 }
  215.             }
  216.         },
  217.         WeightP4 = BrightnessContrast {
  218.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -340.663940429688 } },
  219.             NameSet = true,
  220.             Inputs = {
  221.                 Gain = Input {
  222.                     Expression = "CustomTool1.Frame4",
  223.                     Value = 0
  224.                 },
  225.                 Input = Input {
  226.                     Source = "Output",
  227.                     SourceOp = "Previous4"
  228.                 }
  229.             }
  230.         },
  231.         Merge1_3 = Merge {
  232.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -340.663940429688 } },
  233.             Inputs = {
  234.                 PerformDepthMerge = Input { Value = 0 },
  235.                 Background = Input {
  236.                     Source = "Output",
  237.                     SourceOp = "Merge1_4"
  238.                 },
  239.                 Foreground = Input {
  240.                     Source = "Output",
  241.                     SourceOp = "WeightP4"
  242.                 },
  243.                 BurnIn = Input { Value = 1 }
  244.             }
  245.         },
  246.         Previous3 = TimeStretcher {
  247.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -307.663940429688 } },
  248.             NameSet = true,
  249.             Inputs = {
  250.                 SourceTime = Input {
  251.                     Expression = "time-3",
  252.                     Value = 23
  253.                 },
  254.                 Input = Input {
  255.                     Source = "Output",
  256.                     SourceOp = "PipeRouter1"
  257.                 }
  258.             }
  259.         },
  260.         WeightP3 = BrightnessContrast {
  261.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -307.663940429688 } },
  262.             NameSet = true,
  263.             Inputs = {
  264.                 Gain = Input {
  265.                     Expression = "CustomTool1.Frame3",
  266.                     Value = 0
  267.                 },
  268.                 Input = Input {
  269.                     Source = "Output",
  270.                     SourceOp = "Previous3"
  271.                 }
  272.             }
  273.         },
  274.         Merge1_2 = Merge {
  275.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -307.663940429688 } },
  276.             Inputs = {
  277.                 PerformDepthMerge = Input { Value = 0 },
  278.                 Background = Input {
  279.                     Source = "Output",
  280.                     SourceOp = "Merge1_3"
  281.                 },
  282.                 Foreground = Input {
  283.                     Source = "Output",
  284.                     SourceOp = "WeightP3"
  285.                 },
  286.                 BurnIn = Input { Value = 1 }
  287.             }
  288.         },
  289.         Previous2 = TimeStretcher {
  290.             ViewInfo = OperatorInfo { Pos = { 524.530639648438, -274.696960449219 } },
  291.             NameSet = true,
  292.             Inputs = {
  293.                 SourceTime = Input {
  294.                     Expression = "time-2",
  295.                     Value = 24
  296.                 },
  297.                 Input = Input {
  298.                     Source = "Output",
  299.                     SourceOp = "PipeRouter1"
  300.                 }
  301.             }
  302.         },
  303.         WeightP2 = BrightnessContrast {
  304.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -274.696960449219 } },
  305.             NameSet = true,
  306.             Inputs = {
  307.                 Gain = Input {
  308.                     Expression = "CustomTool1.Frame2",
  309.                     Value = 0
  310.                 },
  311.                 Input = Input {
  312.                     Source = "Output",
  313.                     SourceOp = "Previous2"
  314.                 }
  315.             }
  316.         },
  317.         Merge1_1 = Merge {
  318.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -274.696960449219 } },
  319.             Inputs = {
  320.                 PerformDepthMerge = Input { Value = 0 },
  321.                 Background = Input {
  322.                     Source = "Output",
  323.                     SourceOp = "Merge1_2"
  324.                 },
  325.                 Foreground = Input {
  326.                     Source = "Output",
  327.                     SourceOp = "WeightP2"
  328.                 },
  329.                 BurnIn = Input { Value = 1 }
  330.             }
  331.         },
  332.         Previous1 = TimeStretcher {
  333.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -241.696960449219 } },
  334.             NameSet = true,
  335.             Inputs = {
  336.                 SourceTime = Input {
  337.                     Expression = "time-1",
  338.                     Value = 25
  339.                 },
  340.                 Input = Input {
  341.                     Source = "Output",
  342.                     SourceOp = "PipeRouter1"
  343.                 }
  344.             }
  345.         },
  346.         WeightP1 = BrightnessContrast {
  347.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -241.696960449219 } },
  348.             NameSet = true,
  349.             Inputs = {
  350.                 Gain = Input { Expression = "CustomTool1.Frame1" },
  351.                 Input = Input {
  352.                     Source = "Output",
  353.                     SourceOp = "Previous1"
  354.                 }
  355.             }
  356.         },
  357.         Merge1 = Merge {
  358.             ViewInfo = OperatorInfo { Pos = { 791.931274414063, -241.696960449219 } },
  359.             Inputs = {
  360.                 PerformDepthMerge = Input { Value = 0 },
  361.                 Background = Input {
  362.                     Source = "Output",
  363.                     SourceOp = "Merge1_1"
  364.                 },
  365.                 Foreground = Input {
  366.                     Source = "Output",
  367.                     SourceOp = "WeightP1"
  368.                 },
  369.                 BurnIn = Input { Value = 1 }
  370.             }
  371.         },
  372.         BurnIn1 = Merge {
  373.             ViewInfo = OperatorInfo { Pos = { 921.368286132813, -184.332931518555 } },
  374.             NameSet = true,
  375.             Inputs = {
  376.                 PerformDepthMerge = Input { Value = 0 },
  377.                 Background = Input {
  378.                     Source = "Output",
  379.                     SourceOp = "Merge1"
  380.                 },
  381.                 Foreground = Input {
  382.                     Source = "Output",
  383.                     SourceOp = "Frame"
  384.                 },
  385.                 BurnIn = Input { Value = 1 }
  386.             }
  387.         },
  388.         Next1 = TimeStretcher {
  389.             ViewInfo = OperatorInfo { Pos = { 521.976684570313, -127.732940673828 } },
  390.             NameSet = true,
  391.             Inputs = {
  392.                 SourceTime = Input {
  393.                     Expression = "time+1",
  394.                     Value = 27
  395.                 },
  396.                 Input = Input {
  397.                     Source = "Output",
  398.                     SourceOp = "PipeRouter1"
  399.                 }
  400.             }
  401.         },
  402.         WeightN1 = BrightnessContrast {
  403.             ViewInfo = OperatorInfo { Pos = { 631.9765625, -127.732940673828 } },
  404.             NameSet = true,
  405.             Inputs = {
  406.                 Gain = Input { Expression = "CustomTool1.Frame1" },
  407.                 Input = Input {
  408.                     Source = "Output",
  409.                     SourceOp = "Next1"
  410.                 }
  411.             }
  412.         },
  413.         Next2 = TimeStretcher {
  414.             ViewInfo = OperatorInfo { Pos = { 521.976684570313, -86.8251342773438 } },
  415.             NameSet = true,
  416.             Inputs = {
  417.                 SourceTime = Input {
  418.                     Expression = "time+2",
  419.                     Value = 28
  420.                 },
  421.                 Input = Input {
  422.                     Source = "Output",
  423.                     SourceOp = "PipeRouter1"
  424.                 }
  425.             }
  426.         },
  427.         WeightN2 = BrightnessContrast {
  428.             ViewInfo = OperatorInfo { Pos = { 631.286499023438, -86.8251342773438 } },
  429.             NameSet = true,
  430.             Inputs = {
  431.                 Gain = Input {
  432.                     Expression = "CustomTool1.Frame2",
  433.                     Value = 0
  434.                 },
  435.                 Input = Input {
  436.                     Source = "Output",
  437.                     SourceOp = "Next2"
  438.                 }
  439.             }
  440.         },
  441.         Next3 = TimeStretcher {
  442.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -43.6969604492188 } },
  443.             NameSet = true,
  444.             Inputs = {
  445.                 SourceTime = Input {
  446.                     Expression = "time+3",
  447.                     Value = 29
  448.                 },
  449.                 Input = Input {
  450.                     Source = "Output",
  451.                     SourceOp = "PipeRouter1"
  452.                 }
  453.             }
  454.         },
  455.         WeightN3 = BrightnessContrast {
  456.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -43.6969604492188 } },
  457.             NameSet = true,
  458.             Inputs = {
  459.                 Gain = Input {
  460.                     Expression = "CustomTool1.Frame3",
  461.                     Value = 0
  462.                 },
  463.                 Input = Input {
  464.                     Source = "Output",
  465.                     SourceOp = "Next3"
  466.                 }
  467.             }
  468.         },
  469.         Next4 = TimeStretcher {
  470.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, -10.6969604492188 } },
  471.             NameSet = true,
  472.             Inputs = {
  473.                 SourceTime = Input {
  474.                     Expression = "time+4",
  475.                     Value = 30
  476.                 },
  477.                 Input = Input {
  478.                     Source = "Output",
  479.                     SourceOp = "PipeRouter1"
  480.                 }
  481.             }
  482.         },
  483.         WeightN4 = BrightnessContrast {
  484.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, -10.6969604492188 } },
  485.             NameSet = true,
  486.             Inputs = {
  487.                 Gain = Input {
  488.                     Expression = "CustomTool1.Frame4",
  489.                     Value = 0
  490.                 },
  491.                 Input = Input {
  492.                     Source = "Output",
  493.                     SourceOp = "Next4"
  494.                 }
  495.             }
  496.         },
  497.         Next5 = TimeStretcher {
  498.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, 22.3030395507813 } },
  499.             NameSet = true,
  500.             Inputs = {
  501.                 SourceTime = Input {
  502.                     Expression = "time+5",
  503.                     Value = 31
  504.                 },
  505.                 Input = Input {
  506.                     Source = "Output",
  507.                     SourceOp = "PipeRouter1"
  508.                 }
  509.             }
  510.         },
  511.         WeightN5 = BrightnessContrast {
  512.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, 22.3030395507813 } },
  513.             NameSet = true,
  514.             Inputs = {
  515.                 Gain = Input {
  516.                     Expression = "CustomTool1.Frame5",
  517.                     Value = 0
  518.                 },
  519.                 Input = Input {
  520.                     Source = "Output",
  521.                     SourceOp = "Next5"
  522.                 }
  523.             }
  524.         },
  525.         Next6 = TimeStretcher {
  526.             ViewInfo = OperatorInfo { Pos = { 526.11767578125, 57.8127746582031 } },
  527.             NameSet = true,
  528.             Inputs = {
  529.                 SourceTime = Input {
  530.                     Expression = "time+6",
  531.                     Value = 32
  532.                 },
  533.                 Input = Input {
  534.                     Source = "Output",
  535.                     SourceOp = "PipeRouter1"
  536.                 }
  537.             }
  538.         },
  539.         WeightN6 = BrightnessContrast {
  540.             ViewInfo = OperatorInfo { Pos = { 636.11767578125, 57.8127746582031 } },
  541.             NameSet = true,
  542.             Inputs = {
  543.                 Gain = Input {
  544.                     Expression = "CustomTool1.Frame6",
  545.                     Value = 0
  546.                 },
  547.                 Input = Input {
  548.                     Source = "Output",
  549.                     SourceOp = "Next6"
  550.                 }
  551.             }
  552.         },
  553.         Next7 = TimeStretcher {
  554.             ViewInfo = OperatorInfo { Pos = { 526, 101.909088134766 } },
  555.             NameSet = true,
  556.             Inputs = {
  557.                 SourceTime = Input {
  558.                     Expression = "time+7",
  559.                     Value = 33
  560.                 },
  561.                 Input = Input {
  562.                     Source = "Output",
  563.                     SourceOp = "PipeRouter1"
  564.                 }
  565.             }
  566.         },
  567.         WeightN7 = BrightnessContrast {
  568.             ViewInfo = OperatorInfo { Pos = { 637.087646484375, 101.909088134766 } },
  569.             NameSet = true,
  570.             Inputs = {
  571.                 Gain = Input {
  572.                     Expression = "CustomTool1.Frame7",
  573.                     Value = 0
  574.                 },
  575.                 Input = Input {
  576.                     Source = "Output",
  577.                     SourceOp = "Next7"
  578.                 }
  579.             }
  580.         },
  581.         Next8 = TimeStretcher {
  582.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, 143.878082275391 } },
  583.             NameSet = true,
  584.             Inputs = {
  585.                 SourceTime = Input {
  586.                     Expression = "time+8",
  587.                     Value = 34
  588.                 },
  589.                 Input = Input {
  590.                     Source = "Output",
  591.                     SourceOp = "PipeRouter1"
  592.                 }
  593.             }
  594.         },
  595.         WeightN8 = BrightnessContrast {
  596.             ViewInfo = OperatorInfo { Pos = { 631.9765625, 143.878082275391 } },
  597.             NameSet = true,
  598.             Inputs = {
  599.                 Gain = Input {
  600.                     Expression = "CustomTool1.Frame8",
  601.                     Value = 0
  602.                 },
  603.                 Input = Input {
  604.                     Source = "Output",
  605.                     SourceOp = "Next8"
  606.                 }
  607.             }
  608.         },
  609.         Next9 = TimeStretcher {
  610.             ViewInfo = OperatorInfo { Pos = { 525.427490234375, 187.303009033203 } },
  611.             NameSet = true,
  612.             Inputs = {
  613.                 SourceTime = Input {
  614.                     Expression = "time+9",
  615.                     Value = 35
  616.                 },
  617.                 Input = Input {
  618.                     Source = "Output",
  619.                     SourceOp = "PipeRouter1"
  620.                 }
  621.             }
  622.         },
  623.         WeightN9 = BrightnessContrast {
  624.             ViewInfo = OperatorInfo { Pos = { 635.427490234375, 187.303009033203 } },
  625.             NameSet = true,
  626.             Inputs = {
  627.                 Gain = Input {
  628.                     Expression = "CustomTool1.Frame9",
  629.                     Value = 0
  630.                 },
  631.                 Input = Input {
  632.                     Source = "Output",
  633.                     SourceOp = "Next9"
  634.                 }
  635.             }
  636.         },
  637.         Merge2_6 = Merge {
  638.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, 187.303009033203 } },
  639.             Inputs = {
  640.                 Background = Input {
  641.                     Source = "Output",
  642.                     SourceOp = "WeightN9"
  643.                 },
  644.                 PerformDepthMerge = Input { Value = 0 },
  645.                 BurnIn = Input { Value = 1 }
  646.             }
  647.         },
  648.         Merge2_5 = Merge {
  649.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, 143.878082275391 } },
  650.             Inputs = {
  651.                 PerformDepthMerge = Input { Value = 0 },
  652.                 Background = Input {
  653.                     Source = "Output",
  654.                     SourceOp = "WeightN8"
  655.                 },
  656.                 Foreground = Input {
  657.                     Source = "Output",
  658.                     SourceOp = "Merge2_6"
  659.                 },
  660.                 BurnIn = Input { Value = 1 }
  661.             }
  662.         },
  663.         Merge2_4 = Merge {
  664.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, 101.909088134766 } },
  665.             Inputs = {
  666.                 PerformDepthMerge = Input { Value = 0 },
  667.                 Background = Input {
  668.                     Source = "Output",
  669.                     SourceOp = "WeightN7"
  670.                 },
  671.                 Foreground = Input {
  672.                     Source = "Output",
  673.                     SourceOp = "Merge2_5"
  674.                 },
  675.                 BurnIn = Input { Value = 1 }
  676.             }
  677.         },
  678.         Merge3 = Merge {
  679.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, 57.8127746582031 } },
  680.             Inputs = {
  681.                 PerformDepthMerge = Input { Value = 0 },
  682.                 Background = Input {
  683.                     Source = "Output",
  684.                     SourceOp = "WeightN6"
  685.                 },
  686.                 Foreground = Input {
  687.                     Source = "Output",
  688.                     SourceOp = "Merge2_4"
  689.                 },
  690.                 BurnIn = Input { Value = 1 }
  691.             }
  692.         },
  693.         Merge2_3 = Merge {
  694.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, 22.3030395507813 } },
  695.             Inputs = {
  696.                 PerformDepthMerge = Input { Value = 0 },
  697.                 Background = Input {
  698.                     Source = "Output",
  699.                     SourceOp = "WeightN5"
  700.                 },
  701.                 Foreground = Input {
  702.                     Source = "Output",
  703.                     SourceOp = "Merge3"
  704.                 },
  705.                 BurnIn = Input { Value = 1 }
  706.             }
  707.         },
  708.         Merge2_2 = Merge {
  709.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, -10.6969604492188 } },
  710.             Inputs = {
  711.                 PerformDepthMerge = Input { Value = 0 },
  712.                 Background = Input {
  713.                     Source = "Output",
  714.                     SourceOp = "WeightN4"
  715.                 },
  716.                 Foreground = Input {
  717.                     Source = "Output",
  718.                     SourceOp = "Merge2_3"
  719.                 },
  720.                 BurnIn = Input { Value = 1 }
  721.             }
  722.         },
  723.         Merge2_1 = Merge {
  724.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, -43.6969604492188 } },
  725.             Inputs = {
  726.                 PerformDepthMerge = Input { Value = 0 },
  727.                 Background = Input {
  728.                     Source = "Output",
  729.                     SourceOp = "WeightN3"
  730.                 },
  731.                 Foreground = Input {
  732.                     Source = "Output",
  733.                     SourceOp = "Merge2_2"
  734.                 },
  735.                 BurnIn = Input { Value = 1 }
  736.             }
  737.         },
  738.         Merge2 = Merge {
  739.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, -86.8251342773438 } },
  740.             Inputs = {
  741.                 PerformDepthMerge = Input { Value = 0 },
  742.                 Background = Input {
  743.                     Source = "Output",
  744.                     SourceOp = "WeightN2"
  745.                 },
  746.                 Foreground = Input {
  747.                     Source = "Output",
  748.                     SourceOp = "Merge2_1"
  749.                 },
  750.                 BurnIn = Input { Value = 1 }
  751.             }
  752.         },
  753.         Merge2_7 = Merge {
  754.             ViewInfo = OperatorInfo { Pos = { 791.241088867188, -127.732940673828 } },
  755.             Inputs = {
  756.                 PerformDepthMerge = Input { Value = 0 },
  757.                 Background = Input {
  758.                     Source = "Output",
  759.                     SourceOp = "WeightN1"
  760.                 },
  761.                 Foreground = Input {
  762.                     Source = "Output",
  763.                     SourceOp = "Merge2"
  764.                 },
  765.                 BurnIn = Input { Value = 1 }
  766.             }
  767.         },
  768.         BurnIn2 = Merge {
  769.             ViewInfo = OperatorInfo { Pos = { 921.368286132813, -151.102935791016 } },
  770.             NameSet = true,
  771.             Inputs = {
  772.                 PerformDepthMerge = Input { Value = 0 },
  773.                 Background = Input {
  774.                     Source = "Output",
  775.                     SourceOp = "BurnIn1"
  776.                 },
  777.                 Foreground = Input {
  778.                     Source = "Output",
  779.                     SourceOp = "Merge2_7"
  780.                 },
  781.                 BurnIn = Input { Value = 1 }
  782.             }
  783.         },
  784.         ExposureCompensation = BrightnessContrast {
  785.             NameSet = true,
  786.             UserControls = ordered() {
  787.                 Probe = {
  788.                     LINKS_Name = "Probe",
  789.                     INP_MaxAllowed = 1000000,
  790.                     INP_MaxScale = 1,
  791.                     INP_MinAllowed = -1000000,
  792.                     LINKID_DataType = "Number",
  793.                     INP_Integer = false,
  794.                     INPID_InputControl = "SliderControl",
  795.                     ICS_ControlPage = "Controls",
  796.                     INP_MinScale = 0
  797.                 }
  798.             },
  799.             Inputs = {
  800.                 FrameRenderScriptNest = Input { Value = 0 },
  801.                 Probe = Input {
  802.                     Expression = "(CustomTool1.Frame1+CustomTool1.Frame2+CustomTool1.Frame3+CustomTool1.Frame4+CustomTool1.Frame5+CustomTool1.Frame6+CustomTool1.Frame7+CustomTool1.Frame8+CustomTool1.Frame9)*2+1",
  803.                     Value = 3
  804.                 },
  805.                 CommentsNest = Input { Value = 0 },
  806.                 Gain = Input {
  807.                     Expression = "1/Probe",
  808.                     Value = 0.333333333333333
  809.                 },
  810.                 Input = Input {
  811.                     Source = "Output",
  812.                     SourceOp = "BurnIn2"
  813.                 }
  814.             },
  815.             ViewInfo = OperatorInfo { Pos = { 1053.18212890625, -151.102935791016 } }
  816.         },
  817.         TimeSpeed1 = TimeSpeed {
  818.             ViewInfo = OperatorInfo { Pos = { 1245.04650878906, -151.102935791016 } },
  819.             Inputs = {
  820.                 Input = Input {
  821.                     Source = "Output",
  822.                     SourceOp = "ExposureCompensation"
  823.                 },
  824.                 Speed = Input { Value = 5 }
  825.             }
  826.         },
  827.         CustomTool1 = Custom {
  828.             UserControls = ordered() {
  829.                 Frame1 = {
  830.                     LINKS_Name = "Frame 1",
  831.                     INP_MaxAllowed = 1000000,
  832.                     INP_MaxScale = 1,
  833.                     INP_MinAllowed = -1000000,
  834.                     LINKID_DataType = "Number",
  835.                     INP_Default = 0,
  836.                     INP_Integer = false,
  837.                     INPID_InputControl = "SliderControl",
  838.                     ICS_ControlPage = "Controls",
  839.                     INP_MinScale = -1
  840.                 },
  841.                 Frame2 = {
  842.                     LINKS_Name = "Frame 2",
  843.                     INP_MaxAllowed = 1000000,
  844.                     INP_MaxScale = 1,
  845.                     INP_MinAllowed = -1000000,
  846.                     LINKID_DataType = "Number",
  847.                     INP_Default = 0,
  848.                     INP_Integer = false,
  849.                     INPID_InputControl = "SliderControl",
  850.                     ICS_ControlPage = "Controls",
  851.                     INP_MinScale = -1
  852.                 },
  853.                 Frame3 = {
  854.                     LINKS_Name = "Frame 3",
  855.                     INP_MaxAllowed = 1000000,
  856.                     INP_MaxScale = 1,
  857.                     INP_MinAllowed = -1000000,
  858.                     LINKID_DataType = "Number",
  859.                     INP_Default = 0,
  860.                     INP_Integer = false,
  861.                     INPID_InputControl = "SliderControl",
  862.                     ICS_ControlPage = "Controls",
  863.                     INP_MinScale = -1
  864.                 },
  865.                 Frame4 = {
  866.                     LINKS_Name = "Frame 4",
  867.                     INP_MaxAllowed = 1000000,
  868.                     INP_MaxScale = 1,
  869.                     INP_MinAllowed = -1000000,
  870.                     LINKID_DataType = "Number",
  871.                     INP_Default = 0,
  872.                     INP_Integer = false,
  873.                     INPID_InputControl = "SliderControl",
  874.                     ICS_ControlPage = "Controls",
  875.                     INP_MinScale = -1
  876.                 },
  877.                 Frame5 = {
  878.                     LINKS_Name = "Frame 5",
  879.                     INP_MaxAllowed = 1000000,
  880.                     INP_MaxScale = 1,
  881.                     INP_MinAllowed = -1000000,
  882.                     LINKID_DataType = "Number",
  883.                     INP_Default = 0,
  884.                     INP_Integer = false,
  885.                     INPID_InputControl = "SliderControl",
  886.                     ICS_ControlPage = "Controls",
  887.                     INP_MinScale = -1
  888.                 },
  889.                 Frame6 = {
  890.                     LINKS_Name = "Frame 6",
  891.                     INP_MaxAllowed = 1000000,
  892.                     INP_MaxScale = 1,
  893.                     INP_MinAllowed = -1000000,
  894.                     LINKID_DataType = "Number",
  895.                     INP_Default = 0,
  896.                     INP_Integer = false,
  897.                     INPID_InputControl = "SliderControl",
  898.                     ICS_ControlPage = "Controls",
  899.                     INP_MinScale = -1
  900.                 },
  901.                 Frame7 = {
  902.                     LINKS_Name = "Frame 7",
  903.                     INP_MaxAllowed = 1000000,
  904.                     INP_MaxScale = 1,
  905.                     INP_MinAllowed = -1000000,
  906.                     LINKID_DataType = "Number",
  907.                     INP_Default = 0,
  908.                     INP_Integer = false,
  909.                     INPID_InputControl = "SliderControl",
  910.                     ICS_ControlPage = "Controls",
  911.                     INP_MinScale = -1
  912.                 },
  913.                 Frame8 = {
  914.                     LINKS_Name = "Frame 8",
  915.                     INP_MaxAllowed = 1000000,
  916.                     INP_MaxScale = 1,
  917.                     INP_MinAllowed = -1000000,
  918.                     LINKID_DataType = "Number",
  919.                     INP_Default = 0,
  920.                     INP_Integer = false,
  921.                     INPID_InputControl = "SliderControl",
  922.                     ICS_ControlPage = "Controls",
  923.                     INP_MinScale = -1
  924.                 },
  925.                 Frame9 = {
  926.                     LINKS_Name = "Frame 9",
  927.                     INP_MaxAllowed = 1000000,
  928.                     INP_MaxScale = 1,
  929.                     INP_MinAllowed = -1000000,
  930.                     LINKID_DataType = "Number",
  931.                     INP_Default = 0,
  932.                     INP_Integer = false,
  933.                     INPID_InputControl = "SliderControl",
  934.                     ICS_ControlPage = "Controls",
  935.                     INP_MinScale = -1
  936.                 }
  937.             },
  938.             ViewInfo = OperatorInfo {
  939.                 Pos = { 1121.83251953125, -270.481231689453 },
  940.                 Flags = {
  941.                     ShowPic = true
  942.                 }
  943.             },
  944.             CtrlWZoom = false,
  945.             CustomData = {
  946.                 Settings = {
  947.                     [2] = {
  948.                         Tools = ordered() {
  949.                             CustomTool1 = Custom {
  950.                                 UserControls = ordered() {
  951.                                     Frame1 = {
  952.                                         LINKS_Name = "Frame 1",
  953.                                         INP_MaxAllowed = 1000000,
  954.                                         INP_MaxScale = 1,
  955.                                         INP_MinAllowed = -1000000,
  956.                                         LINKID_DataType = "Number",
  957.                                         INP_Default = 0,
  958.                                         INP_Integer = false,
  959.                                         INPID_InputControl = "SliderControl",
  960.                                         ICS_ControlPage = "Controls",
  961.                                         INP_MinScale = -1
  962.                                     },
  963.                                     Frame2 = {
  964.                                         LINKS_Name = "Frame 2",
  965.                                         INP_MaxAllowed = 1000000,
  966.                                         INP_MaxScale = 1,
  967.                                         INP_MinAllowed = -1000000,
  968.                                         LINKID_DataType = "Number",
  969.                                         INP_Default = 0,
  970.                                         INP_Integer = false,
  971.                                         INPID_InputControl = "SliderControl",
  972.                                         ICS_ControlPage = "Controls",
  973.                                         INP_MinScale = -1
  974.                                     },
  975.                                     Frame3 = {
  976.                                         LINKS_Name = "Frame 3",
  977.                                         INP_MaxAllowed = 1000000,
  978.                                         INP_MaxScale = 1,
  979.                                         INP_MinAllowed = -1000000,
  980.                                         LINKID_DataType = "Number",
  981.                                         INP_Default = 0,
  982.                                         INP_Integer = false,
  983.                                         INPID_InputControl = "SliderControl",
  984.                                         ICS_ControlPage = "Controls",
  985.                                         INP_MinScale = -1
  986.                                     },
  987.                                     Frame4 = {
  988.                                         LINKS_Name = "Frame 4",
  989.                                         INP_MaxAllowed = 1000000,
  990.                                         INP_MaxScale = 1,
  991.                                         INP_MinAllowed = -1000000,
  992.                                         LINKID_DataType = "Number",
  993.                                         INP_Default = 0,
  994.                                         INP_Integer = false,
  995.                                         INPID_InputControl = "SliderControl",
  996.                                         ICS_ControlPage = "Controls",
  997.                                         INP_MinScale = -1
  998.                                     },
  999.                                     Frame5 = {
  1000.                                         LINKS_Name = "Frame 5",
  1001.                                         INP_MaxAllowed = 1000000,
  1002.                                         INP_MaxScale = 1,
  1003.                                         INP_MinAllowed = -1000000,
  1004.                                         LINKID_DataType = "Number",
  1005.                                         INP_Default = 0,
  1006.                                         INP_Integer = false,
  1007.                                         INPID_InputControl = "SliderControl",
  1008.                                         ICS_ControlPage = "Controls",
  1009.                                         INP_MinScale = -1
  1010.                                     },
  1011.                                     Frame6 = {
  1012.                                         LINKS_Name = "Frame 6",
  1013.                                         INP_MaxAllowed = 1000000,
  1014.                                         INP_MaxScale = 1,
  1015.                                         INP_MinAllowed = -1000000,
  1016.                                         LINKID_DataType = "Number",
  1017.                                         INP_Default = 0,
  1018.                                         INP_Integer = false,
  1019.                                         INPID_InputControl = "SliderControl",
  1020.                                         ICS_ControlPage = "Controls",
  1021.                                         INP_MinScale = -1
  1022.                                     },
  1023.                                     Frame7 = {
  1024.                                         LINKS_Name = "Frame 7",
  1025.                                         INP_MaxAllowed = 1000000,
  1026.                                         INP_MaxScale = 1,
  1027.                                         INP_MinAllowed = -1000000,
  1028.                                         LINKID_DataType = "Number",
  1029.                                         INP_Default = 0,
  1030.                                         INP_Integer = false,
  1031.                                         INPID_InputControl = "SliderControl",
  1032.                                         ICS_ControlPage = "Controls",
  1033.                                         INP_MinScale = -1
  1034.                                     },
  1035.                                     Frame8 = {
  1036.                                         LINKS_Name = "Frame 8",
  1037.                                         INP_MaxAllowed = 1000000,
  1038.                                         INP_MaxScale = 1,
  1039.                                         INP_MinAllowed = -1000000,
  1040.                                         LINKID_DataType = "Number",
  1041.                                         INP_Default = 0,
  1042.                                         INP_Integer = false,
  1043.                                         INPID_InputControl = "SliderControl",
  1044.                                         ICS_ControlPage = "Controls",
  1045.                                         INP_MinScale = -1
  1046.                                     },
  1047.                                     Frame9 = {
  1048.                                         LINKS_Name = "Frame 9",
  1049.                                         INP_MaxAllowed = 1000000,
  1050.                                         INP_MaxScale = 1,
  1051.                                         INP_MinAllowed = -1000000,
  1052.                                         LINKID_DataType = "Number",
  1053.                                         INP_Default = 0,
  1054.                                         INP_Integer = false,
  1055.                                         INPID_InputControl = "SliderControl",
  1056.                                         ICS_ControlPage = "Controls",
  1057.                                         INP_MinScale = -1
  1058.                                     }
  1059.                                 },
  1060.                                 ViewInfo = OperatorInfo {
  1061.                                     Pos = { 1121.83251953125, -270.481231689453 },
  1062.                                     Flags = {
  1063.                                         ShowPic = true
  1064.                                     }
  1065.                                 },
  1066.                                 CtrlWZoom = false,
  1067.                                 CustomData = {
  1068.                                 },
  1069.                                 Inputs = {
  1070.                                     ShowNumber5 = Input { Value = 0 },
  1071.                                     Frame4 = Input { Value = 0.575 },
  1072.                                     ShowNumber3 = Input { Value = 0 },
  1073.                                     ShowNumber4 = Input { Value = 0 },
  1074.                                     ShowLUT3 = Input { Value = 0 },
  1075.                                     Frame9 = Input { Value = -0.039 },
  1076.                                     Frame7 = Input { Value = -0.25 },
  1077.                                     ShowNumber2 = Input { Value = 0 },
  1078.                                     ShowNumber8 = Input { Value = 0 },
  1079.                                     ShowNumber7 = Input { Value = 0 },
  1080.                                     ShowPoint1 = Input { Value = 0 },
  1081.                                     ShowLUT4 = Input { Value = 0 },
  1082.                                     ShowPoint2 = Input { Value = 0 },
  1083.                                     Frame2 = Input { Value = 0.85 },
  1084.                                     Frame3 = Input { Value = 0.717 },
  1085.                                     ShowNumber6 = Input { Value = 0 },
  1086.                                     Frame5 = Input { Value = 0.24 },
  1087.                                     NumberControls = Input { Value = 1 },
  1088.                                     Frame1 = Input { Value = 1 },
  1089.                                     Frame8 = Input { Value = -0.17 },
  1090.                                     LUTIn3 = Input {
  1091.                                         Source = "Value",
  1092.                                         SourceOp = "CustomTool1LUTIn3"
  1093.                                     },
  1094.                                     ShowNumber1 = Input { Value = 0 },
  1095.                                     ShowPoint3 = Input { Value = 0 },
  1096.                                     LUTIn2 = Input {
  1097.                                         Source = "Value",
  1098.                                         SourceOp = "CustomTool1LUTIn2"
  1099.                                     },
  1100.                                     ShowPoint4 = Input { Value = 0 },
  1101.                                     ShowLUT2 = Input { Value = 0 },
  1102.                                     ShowLUT1 = Input { Value = 0 },
  1103.                                     LUTIn1 = Input {
  1104.                                         Source = "Value",
  1105.                                         SourceOp = "CustomTool1LUTIn1"
  1106.                                     },
  1107.                                     LUTIn4 = Input {
  1108.                                         Source = "Value",
  1109.                                         SourceOp = "CustomTool1LUTIn4"
  1110.                                     }
  1111.                                 }
  1112.                             },
  1113.                             CustomTool1LUTIn1 = LUTBezier {
  1114.                                 KeyColorSplines = {
  1115.                                     [0] = {
  1116.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1117.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1118.                                     }
  1119.                                 },
  1120.                                 NameSet = true,
  1121.                                 SplineColor = { Red = 204, Green = 0, Blue = 0 }
  1122.                             },
  1123.                             CustomTool1LUTIn2 = LUTBezier {
  1124.                                 KeyColorSplines = {
  1125.                                     [0] = {
  1126.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1127.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1128.                                     }
  1129.                                 },
  1130.                                 NameSet = true,
  1131.                                 SplineColor = { Red = 0, Green = 204, Blue = 0 }
  1132.                             },
  1133.                             CustomTool1LUTIn3 = LUTBezier {
  1134.                                 KeyColorSplines = {
  1135.                                     [0] = {
  1136.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1137.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1138.                                     }
  1139.                                 },
  1140.                                 NameSet = true,
  1141.                                 SplineColor = { Red = 0, Green = 0, Blue = 204 }
  1142.                             },
  1143.                             CustomTool1LUTIn4 = LUTBezier {
  1144.                                 KeyColorSplines = {
  1145.                                     [0] = {
  1146.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1147.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1148.                                     }
  1149.                                 },
  1150.                                 NameSet = true,
  1151.                                 SplineColor = { Red = 204, Green = 204, Blue = 204 }
  1152.                             }
  1153.                         }
  1154.                     },
  1155.                     [3] = {
  1156.                         Tools = ordered() {
  1157.                             CustomTool1 = Custom {
  1158.                                 UserControls = ordered() {
  1159.                                     Frame1 = {
  1160.                                         LINKS_Name = "Frame 1",
  1161.                                         INP_MaxAllowed = 1000000,
  1162.                                         INP_MaxScale = 1,
  1163.                                         INP_MinAllowed = -1000000,
  1164.                                         LINKID_DataType = "Number",
  1165.                                         INP_Default = 0,
  1166.                                         INP_Integer = false,
  1167.                                         INPID_InputControl = "SliderControl",
  1168.                                         ICS_ControlPage = "Controls",
  1169.                                         INP_MinScale = -1
  1170.                                     },
  1171.                                     Frame2 = {
  1172.                                         LINKS_Name = "Frame 2",
  1173.                                         INP_MaxAllowed = 1000000,
  1174.                                         INP_MaxScale = 1,
  1175.                                         INP_MinAllowed = -1000000,
  1176.                                         LINKID_DataType = "Number",
  1177.                                         INP_Default = 0,
  1178.                                         INP_Integer = false,
  1179.                                         INPID_InputControl = "SliderControl",
  1180.                                         ICS_ControlPage = "Controls",
  1181.                                         INP_MinScale = -1
  1182.                                     },
  1183.                                     Frame3 = {
  1184.                                         LINKS_Name = "Frame 3",
  1185.                                         INP_MaxAllowed = 1000000,
  1186.                                         INP_MaxScale = 1,
  1187.                                         INP_MinAllowed = -1000000,
  1188.                                         LINKID_DataType = "Number",
  1189.                                         INP_Default = 0,
  1190.                                         INP_Integer = false,
  1191.                                         INPID_InputControl = "SliderControl",
  1192.                                         ICS_ControlPage = "Controls",
  1193.                                         INP_MinScale = -1
  1194.                                     },
  1195.                                     Frame4 = {
  1196.                                         LINKS_Name = "Frame 4",
  1197.                                         INP_MaxAllowed = 1000000,
  1198.                                         INP_MaxScale = 1,
  1199.                                         INP_MinAllowed = -1000000,
  1200.                                         LINKID_DataType = "Number",
  1201.                                         INP_Default = 0,
  1202.                                         INP_Integer = false,
  1203.                                         INPID_InputControl = "SliderControl",
  1204.                                         ICS_ControlPage = "Controls",
  1205.                                         INP_MinScale = -1
  1206.                                     },
  1207.                                     Frame5 = {
  1208.                                         LINKS_Name = "Frame 5",
  1209.                                         INP_MaxAllowed = 1000000,
  1210.                                         INP_MaxScale = 1,
  1211.                                         INP_MinAllowed = -1000000,
  1212.                                         LINKID_DataType = "Number",
  1213.                                         INP_Default = 0,
  1214.                                         INP_Integer = false,
  1215.                                         INPID_InputControl = "SliderControl",
  1216.                                         ICS_ControlPage = "Controls",
  1217.                                         INP_MinScale = -1
  1218.                                     },
  1219.                                     Frame6 = {
  1220.                                         LINKS_Name = "Frame 6",
  1221.                                         INP_MaxAllowed = 1000000,
  1222.                                         INP_MaxScale = 1,
  1223.                                         INP_MinAllowed = -1000000,
  1224.                                         LINKID_DataType = "Number",
  1225.                                         INP_Default = 0,
  1226.                                         INP_Integer = false,
  1227.                                         INPID_InputControl = "SliderControl",
  1228.                                         ICS_ControlPage = "Controls",
  1229.                                         INP_MinScale = -1
  1230.                                     },
  1231.                                     Frame7 = {
  1232.                                         LINKS_Name = "Frame 7",
  1233.                                         INP_MaxAllowed = 1000000,
  1234.                                         INP_MaxScale = 1,
  1235.                                         INP_MinAllowed = -1000000,
  1236.                                         LINKID_DataType = "Number",
  1237.                                         INP_Default = 0,
  1238.                                         INP_Integer = false,
  1239.                                         INPID_InputControl = "SliderControl",
  1240.                                         ICS_ControlPage = "Controls",
  1241.                                         INP_MinScale = -1
  1242.                                     },
  1243.                                     Frame8 = {
  1244.                                         LINKS_Name = "Frame 8",
  1245.                                         INP_MaxAllowed = 1000000,
  1246.                                         INP_MaxScale = 1,
  1247.                                         INP_MinAllowed = -1000000,
  1248.                                         LINKID_DataType = "Number",
  1249.                                         INP_Default = 0,
  1250.                                         INP_Integer = false,
  1251.                                         INPID_InputControl = "SliderControl",
  1252.                                         ICS_ControlPage = "Controls",
  1253.                                         INP_MinScale = -1
  1254.                                     },
  1255.                                     Frame9 = {
  1256.                                         LINKS_Name = "Frame 9",
  1257.                                         INP_MaxAllowed = 1000000,
  1258.                                         INP_MaxScale = 1,
  1259.                                         INP_MinAllowed = -1000000,
  1260.                                         LINKID_DataType = "Number",
  1261.                                         INP_Default = 0,
  1262.                                         INP_Integer = false,
  1263.                                         INPID_InputControl = "SliderControl",
  1264.                                         ICS_ControlPage = "Controls",
  1265.                                         INP_MinScale = -1
  1266.                                     }
  1267.                                 },
  1268.                                 ViewInfo = OperatorInfo {
  1269.                                     Pos = { 1121.83251953125, -270.481231689453 },
  1270.                                     Flags = {
  1271.                                         ShowPic = true
  1272.                                     }
  1273.                                 },
  1274.                                 CtrlWZoom = false,
  1275.                                 CustomData = {
  1276.                                 },
  1277.                                 Inputs = {
  1278.                                     ShowNumber5 = Input { Value = 0 },
  1279.                                     Frame4 = Input { Value = 0.858 },
  1280.                                     ShowNumber3 = Input { Value = 0 },
  1281.                                     Frame7 = Input { Value = 0.551 },
  1282.                                     ShowNumber4 = Input { Value = 0 },
  1283.                                     ShowLUT3 = Input { Value = 0 },
  1284.                                     Frame9 = Input { Value = 0.362 },
  1285.                                     Frame1 = Input { Value = 1 },
  1286.                                     ShowNumber2 = Input { Value = 0 },
  1287.                                     ShowNumber8 = Input { Value = 0 },
  1288.                                     ShowNumber7 = Input { Value = 0 },
  1289.                                     ShowPoint1 = Input { Value = 0 },
  1290.                                     ShowLUT4 = Input { Value = 0 },
  1291.                                     ShowPoint2 = Input { Value = 0 },
  1292.                                     Frame2 = Input { Value = 1 },
  1293.                                     Frame3 = Input { Value = 0.937 },
  1294.                                     ShowNumber6 = Input { Value = 0 },
  1295.                                     Frame5 = Input { Value = 0.772 },
  1296.                                     NumberControls = Input { Value = 1 },
  1297.                                     Frame6 = Input { Value = 0.677 },
  1298.                                     Frame8 = Input { Value = 0.465 },
  1299.                                     LUTIn3 = Input {
  1300.                                         Source = "Value",
  1301.                                         SourceOp = "CustomTool1LUTIn3"
  1302.                                     },
  1303.                                     ShowNumber1 = Input { Value = 0 },
  1304.                                     ShowPoint3 = Input { Value = 0 },
  1305.                                     LUTIn2 = Input {
  1306.                                         Source = "Value",
  1307.                                         SourceOp = "CustomTool1LUTIn2"
  1308.                                     },
  1309.                                     ShowPoint4 = Input { Value = 0 },
  1310.                                     ShowLUT2 = Input { Value = 0 },
  1311.                                     ShowLUT1 = Input { Value = 0 },
  1312.                                     LUTIn1 = Input {
  1313.                                         Source = "Value",
  1314.                                         SourceOp = "CustomTool1LUTIn1"
  1315.                                     },
  1316.                                     LUTIn4 = Input {
  1317.                                         Source = "Value",
  1318.                                         SourceOp = "CustomTool1LUTIn4"
  1319.                                     }
  1320.                                 }
  1321.                             },
  1322.                             CustomTool1LUTIn1 = LUTBezier {
  1323.                                 KeyColorSplines = {
  1324.                                     [0] = {
  1325.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1326.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1327.                                     }
  1328.                                 },
  1329.                                 NameSet = true,
  1330.                                 SplineColor = { Red = 204, Green = 0, Blue = 0 }
  1331.                             },
  1332.                             CustomTool1LUTIn2 = LUTBezier {
  1333.                                 KeyColorSplines = {
  1334.                                     [0] = {
  1335.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1336.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1337.                                     }
  1338.                                 },
  1339.                                 NameSet = true,
  1340.                                 SplineColor = { Red = 0, Green = 204, Blue = 0 }
  1341.                             },
  1342.                             CustomTool1LUTIn3 = LUTBezier {
  1343.                                 KeyColorSplines = {
  1344.                                     [0] = {
  1345.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1346.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1347.                                     }
  1348.                                 },
  1349.                                 NameSet = true,
  1350.                                 SplineColor = { Red = 0, Green = 0, Blue = 204 }
  1351.                             },
  1352.                             CustomTool1LUTIn4 = LUTBezier {
  1353.                                 KeyColorSplines = {
  1354.                                     [0] = {
  1355.                                         [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1356.                                         { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1357.                                     }
  1358.                                 },
  1359.                                 NameSet = true,
  1360.                                 SplineColor = { Red = 204, Green = 204, Blue = 204 }
  1361.                             }
  1362.                         }
  1363.                     }
  1364.                 }
  1365.             },
  1366.             Inputs = {
  1367.                 ShowNumber5 = Input { Value = 0 },
  1368.                 ShowNumber3 = Input { Value = 0 },
  1369.                 ShowNumber4 = Input { Value = 0 },
  1370.                 ShowNumber2 = Input { Value = 0 },
  1371.                 ShowNumber8 = Input { Value = 0 },
  1372.                 ShowNumber7 = Input { Value = 0 },
  1373.                 ShowPoint1 = Input { Value = 0 },
  1374.                 ShowLUT4 = Input { Value = 0 },
  1375.                 ShowPoint2 = Input { Value = 0 },
  1376.                 ShowNumber6 = Input { Value = 0 },
  1377.                 NumberControls = Input { Value = 1 },
  1378.                 Frame1 = Input { Value = 1 },
  1379.                 ShowLUT3 = Input { Value = 0 },
  1380.                 LUTIn3 = Input {
  1381.                     Source = "Value",
  1382.                     SourceOp = "CustomTool1LUTIn3"
  1383.                 },
  1384.                 ShowNumber1 = Input { Value = 0 },
  1385.                 ShowPoint3 = Input { Value = 0 },
  1386.                 LUTIn2 = Input {
  1387.                     Source = "Value",
  1388.                     SourceOp = "CustomTool1LUTIn2"
  1389.                 },
  1390.                 ShowPoint4 = Input { Value = 0 },
  1391.                 ShowLUT2 = Input { Value = 0 },
  1392.                 ShowLUT1 = Input { Value = 0 },
  1393.                 LUTIn1 = Input {
  1394.                     Source = "Value",
  1395.                     SourceOp = "CustomTool1LUTIn1"
  1396.                 },
  1397.                 LUTIn4 = Input {
  1398.                     Source = "Value",
  1399.                     SourceOp = "CustomTool1LUTIn4"
  1400.                 }
  1401.             }
  1402.         },
  1403.         CustomTool1LUTIn1 = LUTBezier {
  1404.             KeyColorSplines = {
  1405.                 [0] = {
  1406.                     [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1407.                     { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1408.                 }
  1409.             },
  1410.             NameSet = true,
  1411.             SplineColor = { Red = 204, Green = 0, Blue = 0 }
  1412.         },
  1413.         CustomTool1LUTIn2 = LUTBezier {
  1414.             KeyColorSplines = {
  1415.                 [0] = {
  1416.                     [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1417.                     { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1418.                 }
  1419.             },
  1420.             NameSet = true,
  1421.             SplineColor = { Red = 0, Green = 204, Blue = 0 }
  1422.         },
  1423.         CustomTool1LUTIn3 = LUTBezier {
  1424.             KeyColorSplines = {
  1425.                 [0] = {
  1426.                     [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1427.                     { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1428.                 }
  1429.             },
  1430.             NameSet = true,
  1431.             SplineColor = { Red = 0, Green = 0, Blue = 204 }
  1432.         },
  1433.         CustomTool1LUTIn4 = LUTBezier {
  1434.             KeyColorSplines = {
  1435.                 [0] = {
  1436.                     [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  1437.                     { 1, Flags = { Linear = true }, LH = { 0.666666666666667, 0.666666666666667 } }
  1438.                 }
  1439.             },
  1440.             NameSet = true,
  1441.             SplineColor = { Red = 204, Green = 204, Blue = 204 }
  1442.         },
  1443.         PipeRouter1 = PipeRouter {
  1444.             ViewInfo = PipeRouterInfo { Pos = { 315.851226806641, -184.332931518555 } }
  1445.         },
  1446.         Frame = TimeStretcher {
  1447.             ViewInfo = OperatorInfo { Pos = { 522.7236328125, -184.332931518555 } },
  1448.             NameSet = true,
  1449.             Inputs = {
  1450.                 SourceTime = Input {
  1451.                     Expression = "time",
  1452.                     Value = 494
  1453.                 },
  1454.                 Input = Input {
  1455.                     Source = "Output",
  1456.                     SourceOp = "PipeRouter1"
  1457.                 }
  1458.             }
  1459.         },
  1460.         OriginalREF = TimeSpeed {
  1461.             NameSet = true,
  1462.             ViewInfo = OperatorInfo { Pos = { 1243.36950683594, -184.332931518555 } },
  1463.             SourceOp = "TimeSpeed1",
  1464.             Inputs = {
  1465.                 EndRenderScripts = Input { },
  1466.                 SettingsNest = Input { },
  1467.                 StartRenderScripts = Input { },
  1468.                 FrameRenderScriptNest = Input { },
  1469.                 CommentsNest = Input { },
  1470.                 Input = Input {
  1471.                     Source = "Output",
  1472.                     SourceOp = "Frame"
  1473.                 },
  1474.                 ["EnableWarp.Nest"] = Input { }
  1475.             }
  1476.         }
  1477.     }
  1478. }

User avatar
Tory
Fusioneer
Posts: 77
Joined: Fri Apr 13, 2018 11:29 am
Real name: Tory Hooton
Been thanked: 6 times
Contact:

Re: acceptable looking high frame rate footage

#19

Post by Tory » Thu Aug 15, 2019 10:53 am

Chad wrote:
Fri Aug 09, 2019 7:46 am
It's very fast if you do it in one tool, but you could do it slowly with 24 Merge2D
Can anyone shed light on how to do this in one tool? Expressions in a Custom Tool? Fuse? Why is this faster?

Is there a way to have a Custom Tool look at frames ahead or behind with a variable?

Is there a post or thread about how to optimize a flow or tool?

Thanks for any hints :)

User avatar
Chad
Fusionator
Posts: 1432
Joined: Fri Aug 08, 2014 1:11 pm
Been thanked: 17 times

Re: acceptable looking high frame rate footage

#20

Post by Chad » Thu Aug 15, 2019 11:13 am

CT can't look at other frames, but a Fuse or plugin can.