Welcome to WSL!

Make yourself at home, but before posting, please may I ask you to read the following topics.


Posting 101
Server space, screenshots, and you

Thank you!

PS. please pretty please:


Image

Custom MainInputs

Moderator: SecondMan

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Custom MainInputs

#1

Post by Kristof » Tue Nov 29, 2016 5:33 am

Can you add custom MainInputs as user controls? So that the inputs show up in the flow view? If so, how?

Tags:

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

Re: Custom MainInputs

#2

Post by Chad » Tue Nov 29, 2016 9:38 am

For Image or other datatypes?

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#3

Post by Kristof » Tue Nov 29, 2016 9:59 am

Just images.

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

Re: Custom MainInputs

#4

Post by Chad » Tue Nov 29, 2016 2:50 pm

  1. UserControls = ordered() {
  2.                 NewControl = {
  3.                     LINKS_Name = "New Control",
  4.                     LINK_Main = 1,
  5.                     LINKID_DataType = "Image",
  6.                 }
  7.             }

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#5

Post by Kristof » Wed Nov 30, 2016 1:23 am

Thank you kindly. :)

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

Re: Custom MainInputs

#6

Post by Chad » Wed Nov 30, 2016 5:19 pm

Ok, but what are you going to DO with it, unless it's a tool that already had a wireless link...?

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#7

Post by Kristof » Fri Dec 02, 2016 8:08 am

I'm using it to drive the resolution of a Renderer 3D, Backgrounds, or anything that creates an image. Makes my comps scalable if they decide to render AOVs at lower resolutions during the course of a production. I have been doing this for a while but it was hidden in the image tab as an ImageControl. I prefer to do things explicitly, so I want it to be visible in the flow view.
  1. {
  2.     Tools = ordered() {
  3.         renderer3D_implicit = Renderer3D {
  4.             NameSet = true,
  5.             Inputs = {
  6.                 Width = Input {
  7.                     Value = 1998,
  8.                     Expression = "self:GetSourceTool(\"Source\").Output.OriginalWidth",
  9.                 },
  10.                 Height = Input {
  11.                     Value = 1080,
  12.                     Expression = "self:GetSourceTool(\"Source\").Output.OriginalHeight",
  13.                 },
  14.                 PixelAspect = Input { Expression = "Point(self:GetSourceTool(\"Source\").Output.XScale, self:GetSourceTool(\"Source\").Output.YScale)", },
  15.                 RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  16.                 ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  17.                 ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
  18.                 ["RendererOpenGL.Channels.WorldCoord"] = Input { Value = 1, },
  19.                 ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
  20.                 ["RendererOpenGL.TweakFilterHeight"] = Input { Value = 2, },
  21.             },
  22.             ViewInfo = OperatorInfo { Pos = { 385, 115.5 } },
  23.             Colors = { TextColor = { R = 0, G = 0, B = 0 }, },
  24.             UserControls = ordered() {
  25.                 Source = {
  26.                     LINKID_DataType = "Image",
  27.                     INP_Default = 0,
  28.                     IC_ControlPage = 0,
  29.                     INPID_InputControl = "ImageControl",
  30.                     LINKS_Name = "Source",
  31.                 }
  32.             }
  33.         },
  34.         renderer3D_explicit = Renderer3D {
  35.             CtrlWZoom = false,
  36.             NameSet = true,
  37.             CustomData = {
  38.                 Settings = {
  39.                     [1] = {
  40.                         Tools = ordered() {
  41.                             Renderer3D = Renderer3D {
  42.                                 ViewInfo = OperatorInfo { Pos = { 1540, 907.5 } },
  43.                                 Inputs = {
  44.                                     ["RendererOpenGL.Texturing"] = Input { Value = 1 },
  45.                                     ["RendererOpenGL.TextureDepth"] = Input { Value = 4 },
  46.                                     SceneInput = Input {
  47.                                         SourceOp = "Merge3D1_1",
  48.                                         Source = "Output"
  49.                                     },
  50.                                     Width = Input { Value = 2048 },
  51.                                     ImageSource = Input {
  52.                                         SourceOp = "imageSource_wire",
  53.                                         Source = "Output"
  54.                                     },
  55.                                     ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  56.                                     GlobalIn = Input { Value = 1001 },
  57.                                     RendererType = Input { Value = FuID { "RendererOpenGL" } },
  58.                                     GlobalOut = Input { Value = 1500 },
  59.                                     Depth = Input { Value = 4 },
  60.                                     CameraSelector = Input { Value = FuID { "l_fromMetaData_cam" } },
  61.                                     Height = Input { Value = 1152 }
  62.                                 },
  63.                                 Name = "Renderer3D",
  64.                                 CtrlWZoom = false,
  65.                                 NameSet = true,
  66.                                 UserControls = ordered() {
  67.                                     ImageSource = {
  68.                                         LINKS_Name = "Image Source",
  69.                                         LINK_Main = 2,
  70.                                         INP_Required = false,
  71.                                         LINKID_DataType = "Image"
  72.                                     }
  73.                                 },
  74.                                 CustomData = {
  75.                                 }
  76.                             }
  77.                         }
  78.                     },
  79.                     [2] = {
  80.                         Tools = ordered() {
  81.                             Renderer3D = Renderer3D {
  82.                                 Inputs = {
  83.                                     ["RendererOpenGL.Texturing"] = Input { Value = 1 },
  84.                                     ["RendererOpenGL.TextureDepth"] = Input { Value = 4 },
  85.                                     SceneInput = Input {
  86.                                         SourceOp = "Merge3D1_1",
  87.                                         Source = "Output"
  88.                                     },
  89.                                     Width = Input {
  90.                                         Value = 2048,
  91.                                         Expression = "Renderer3D.ImageSource.OriginalWidth"
  92.                                     },
  93.                                     ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  94.                                     GlobalIn = Input { Value = 1001 },
  95.                                     RendererType = Input { Value = FuID { "RendererOpenGL" } },
  96.                                     GlobalOut = Input { Value = 1500 },
  97.                                     Depth = Input { Value = 4 },
  98.                                     ImageSource = Input {
  99.                                         SourceOp = "imageSource_wire",
  100.                                         Source = "Output"
  101.                                     },
  102.                                     Height = Input {
  103.                                         Value = 1152,
  104.                                         Expression = "Renderer3D.ImageSource.OriginalHeight"
  105.                                     }
  106.                                 },
  107.                                 ViewInfo = OperatorInfo { Pos = { 1540, 907.5 } },
  108.                                 CtrlWZoom = false,
  109.                                 NameSet = true,
  110.                                 UserControls = ordered() {
  111.                                     ImageSource = {
  112.                                         LINKS_Name = "Image Source",
  113.                                         LINK_Main = 2,
  114.                                         INP_Required = false,
  115.                                         LINKID_DataType = "Image"
  116.                                     }
  117.                                 },
  118.                                 CustomData = {
  119.                                 }
  120.                             }
  121.                         }
  122.                     },
  123.                 }
  124.             },
  125.             Inputs = {
  126.                 Width = Input { Value = 2048, },
  127.                 Height = Input { Value = 1152, },
  128.                 Depth = Input { Value = 4, },
  129.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  130.                 RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  131.                 ImageSource = Input {
  132.                     SourceOp = "imageSource_wire",
  133.                     Source = "Output",
  134.                 },
  135.                 ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  136.                 ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  137.             },
  138.             ViewInfo = OperatorInfo { Pos = { 550, 115.5 } },
  139.             UserControls = ordered() {
  140.                 ImageSource = {
  141.                     LINK_Main = 2,
  142.                     LINKID_DataType = "Image",
  143.                     ICS_ControlPage = "Image",
  144.                     INP_Required = false,
  145.                     LINKS_Name = "Image Source"
  146.                 }
  147.             }
  148.         },
  149.         imageSource_wire = Fuse.Wireless {
  150.             NameSet = true,
  151.             ViewInfo = OperatorInfo { Pos = { 550, 82.5 } },
  152.         }
  153.     }
  154. }

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

Re: Custom MainInputs

#8

Post by Chad » Fri Dec 02, 2016 8:39 am

Oh, neat. I like it.

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#9

Post by Kristof » Fri Dec 02, 2016 10:41 am

Thanks :)

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

Re: Custom MainInputs

#10

Post by SecondMan » Sat Dec 03, 2016 3:44 pm

Sounds like a sweet idea. I usually just expression link, but I may prefer this. I just don't see it working in your example? Am I missing something?

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#11

Post by Kristof » Sun Dec 04, 2016 1:36 am

SecondMan wrote:Sounds like a sweet idea. I usually just expression link, but I may prefer this. I just don't see it working in your example? Am I missing something?
Ah, good catch Pieter! Thanks. I renamed the Renderer3D with the S1 preset applied, and unfortunately Fusion doesn't automatically update the expression used in S2 of the demo comp featured above. It does when you have S2 active of course. Would make a nice feature request if it would handle those situations behind the scenes. I started to include a node's name when using expressions because of this recent change in Fusion's behavior regarding expressions:

https://www.steakunderwater.com/wesuckle ... f=19&t=999

Fortunately, it does work if I take it out (apply preset S3) which makes it _the_ expression to use as it is more robust. I took the time to demo such a workflow with notes included. So this would supersede the half-arsed demo I posted earlier.

Useful feature: the "INP_Required = false," statement, added to the custom MainInput "ImageSource". If you don't include it, the render node would still not work even though you are not using the expression to drive the resolution (S1 preset on the render node)--confusing for an non-initiated user.
  1. {
  2.     Tools = ordered() {
  3.         cam_mg = Merge3D {
  4.             NameSet = true,
  5.             Inputs = {
  6.                 SceneInput1 = Input {
  7.                     SourceOp = "cam_xf",
  8.                     Source = "Output",
  9.                 },
  10.                 SceneInput2 = Input {
  11.                     SourceOp = "light_mg",
  12.                     Source = "Output",
  13.                 },
  14.             },
  15.             ViewInfo = OperatorInfo { Pos = { 1155, 280.5 } },
  16.         },
  17.         beauty_rn = Renderer3D {
  18.             CtrlWZoom = false,
  19.             NameSet = true,
  20.             CurrentSettings = 3,
  21.             CustomData = {
  22.                 Settings = {
  23.                     [1] = {
  24.                         Tools = ordered() {
  25.                             beauty_rn = Renderer3D {
  26.                                 CtrlWZoom = false,
  27.                                 NameSet = true,
  28.                                 CustomData = {
  29.                                 },
  30.                                 Inputs = {
  31.                                     GlobalIn = Input { Value = 1001, },
  32.                                     GlobalOut = Input { Value = 2001, },
  33.                                     Width = Input { Value = 2048, },
  34.                                     Height = Input { Value = 1152, },
  35.                                     Depth = Input { Value = 4, },
  36.                                     ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  37.                                     SceneInput = Input {
  38.                                         SourceOp = "cam_mg",
  39.                                         Source = "Output",
  40.                                     },
  41.                                     RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  42.                                     ImageSource = Input {
  43.                                         SourceOp = "imageSource_wire",
  44.                                         Source = "Output",
  45.                                     },
  46.                                     ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  47.                                     ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
  48.                                     ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
  49.                                     ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
  50.                                     ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  51.                                     ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  52.                                 },
  53.                                 ViewInfo = OperatorInfo { Pos = { 1320, 280.5 } },
  54.                                 UserControls = ordered() {
  55.                                     ImageSource = {
  56.                                         LINK_Main = 2,
  57.                                         LINKID_DataType = "Image",
  58.                                         ICS_ControlPage = "Image",
  59.                                         INP_Required = false,
  60.                                         LINKS_Name = "Image Source"
  61.                                     }
  62.                                 }
  63.                             }
  64.                         }
  65.                     },
  66.                     [2] = {
  67.                         Tools = ordered() {
  68.                             beauty_rn = Renderer3D {
  69.                                 CtrlWZoom = false,
  70.                                 NameSet = true,
  71.                                 CustomData = {
  72.                                 },
  73.                                 Inputs = {
  74.                                     GlobalIn = Input { Value = 1001, },
  75.                                     GlobalOut = Input { Value = 2001, },
  76.                                     Width = Input {
  77.                                         Value = 720,
  78.                                         Expression = "beauty_rn.ImageSource.OriginalWidth",
  79.                                     },
  80.                                     Height = Input {
  81.                                         Value = 576,
  82.                                         Expression = "beauty_rn.ImageSource.OriginalHeight",
  83.                                     },
  84.                                     Depth = Input { Value = 4, },
  85.                                     ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  86.                                     SceneInput = Input {
  87.                                         SourceOp = "cam_mg",
  88.                                         Source = "Output",
  89.                                     },
  90.                                     RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  91.                                     ImageSource = Input {
  92.                                         SourceOp = "imageSource_wire",
  93.                                         Source = "Output",
  94.                                     },
  95.                                     ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  96.                                     ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
  97.                                     ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
  98.                                     ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  99.                                     ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  100.                                 },
  101.                                 ViewInfo = OperatorInfo { Pos = { 1320, 280.5 } },
  102.                                 UserControls = ordered() {
  103.                                     ImageSource = {
  104.                                         LINK_Main = 2,
  105.                                         LINKID_DataType = "Image",
  106.                                         ICS_ControlPage = "Image",
  107.                                         INP_Required = false,
  108.                                         LINKS_Name = "Image Source"
  109.                                     }
  110.                                 }
  111.                             }
  112.                         }
  113.                     },
  114.                     [3] = {
  115.                         Tools = ordered() {
  116.                             beauty_rn = Renderer3D {
  117.                                 CtrlWZoom = false,
  118.                                 NameSet = true,
  119.                                 CustomData = {
  120.                                 },
  121.                                 Inputs = {
  122.                                     GlobalIn = Input { Value = 1001, },
  123.                                     GlobalOut = Input { Value = 2001, },
  124.                                     Width = Input {
  125.                                         Value = 720,
  126.                                         Expression = "ImageSource.OriginalWidth",
  127.                                     },
  128.                                     Height = Input {
  129.                                         Value = 576,
  130.                                         Expression = "ImageSource.OriginalHeight",
  131.                                     },
  132.                                     Depth = Input { Value = 4, },
  133.                                     ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  134.                                     SceneInput = Input {
  135.                                         SourceOp = "cam_mg",
  136.                                         Source = "Output",
  137.                                     },
  138.                                     RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  139.                                     ImageSource = Input {
  140.                                         SourceOp = "imageSource_wire",
  141.                                         Source = "Output",
  142.                                     },
  143.                                     ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  144.                                     ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
  145.                                     ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
  146.                                     ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  147.                                     ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  148.                                 },
  149.                                 ViewInfo = OperatorInfo { Pos = { 1320, 280.5 } },
  150.                                 UserControls = ordered() {
  151.                                     ImageSource = {
  152.                                         LINK_Main = 2,
  153.                                         LINKID_DataType = "Image",
  154.                                         ICS_ControlPage = "Image",
  155.                                         INP_Required = false,
  156.                                         LINKS_Name = "Image Source"
  157.                                     }
  158.                                 },
  159.                                 Name = "beauty_rn"
  160.                             }
  161.                         }
  162.                     },
  163.                 }
  164.             },
  165.             Inputs = {
  166.                 GlobalIn = Input { Value = 1001, },
  167.                 GlobalOut = Input { Value = 2001, },
  168.                 Width = Input {
  169.                     Value = 720,
  170.                     Expression = "ImageSource.OriginalWidth",
  171.                 },
  172.                 Height = Input {
  173.                     Value = 576,
  174.                     Expression = "ImageSource.OriginalHeight",
  175.                 },
  176.                 Depth = Input { Value = 4, },
  177.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  178.                 SceneInput = Input {
  179.                     SourceOp = "cam_mg",
  180.                     Source = "Output",
  181.                 },
  182.                 RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  183.                 ImageSource = Input {
  184.                     SourceOp = "imageSource_wire",
  185.                     Source = "Output",
  186.                 },
  187.                 ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  188.                 ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
  189.                 ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
  190.                 ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  191.                 ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  192.             },
  193.             ViewInfo = OperatorInfo { Pos = { 1320, 280.5 } },
  194.             UserControls = ordered() {
  195.                 ImageSource = {
  196.                     LINK_Main = 2,
  197.                     LINKID_DataType = "Image",
  198.                     ICS_ControlPage = "Image",
  199.                     INP_Required = false,
  200.                     LINKS_Name = "Image Source"
  201.                 }
  202.             }
  203.         },
  204.         imageSource_wire = Fuse.Wireless {
  205.             NameSet = true,
  206.             Inputs = {
  207.                 Input = Input {
  208.                     SourceOp = "imageSource",
  209.                     Source = "Output",
  210.                 },
  211.             },
  212.             ViewInfo = OperatorInfo { Pos = { 1320, 247.5 } },
  213.         },
  214.         sphere_xf = Transform3D {
  215.             NameSet = true,
  216.             Inputs = {
  217.                 SceneInput = Input {
  218.                     SourceOp = "sphere",
  219.                     Source = "Output",
  220.                 },
  221.                 ["Transform3DOp.Translate.Y"] = Input { Value = 1, },
  222.             },
  223.             ViewInfo = OperatorInfo { Pos = { 935, 49.5 } },
  224.         },
  225.         sphere_mg = Merge3D {
  226.             NameSet = true,
  227.             Inputs = {
  228.                 SceneInput1 = Input {
  229.                     SourceOp = "enviroSphere_xf",
  230.                     Source = "Output",
  231.                 },
  232.                 SceneInput2 = Input {
  233.                     SourceOp = "PipeRouter1",
  234.                     Source = "Output",
  235.                 },
  236.             },
  237.             ViewInfo = OperatorInfo { Pos = { 1155, 115.5 } },
  238.         },
  239.         cam = Camera3D {
  240.             NameSet = true,
  241.             Inputs = {
  242.                 AoV = Input { Value = 19.2642683071402, },
  243.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
  244.                 FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
  245.                 ApertureW = Input { Value = 0.831496062992126, },
  246.                 ApertureH = Input { Value = 0.467716535433071, },
  247.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
  248.                 ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
  249.             },
  250.             ViewInfo = OperatorInfo { Pos = { 935, 280.5 } },
  251.         },
  252.         cam_xf = Transform3D {
  253.             NameSet = true,
  254.             Inputs = {
  255.                 SceneInput = Input {
  256.                     SourceOp = "cam",
  257.                     Source = "Output",
  258.                 },
  259.                 ["Transform3DOp.Translate.Y"] = Input { Value = 3.83132094509938, },
  260.                 ["Transform3DOp.Translate.Z"] = Input { Value = 20.4024214688433, },
  261.                 ["Transform3DOp.Rotate.X"] = Input { Value = -8.4507042, },
  262.             },
  263.             ViewInfo = OperatorInfo { Pos = { 1045, 280.5 } },
  264.         },
  265.         imageSource = Background {
  266.             NameSet = true,
  267.             Inputs = {
  268.                 GlobalIn = Input { Value = 1001, },
  269.                 GlobalOut = Input { Value = 2001, },
  270.                 Width = Input { Value = 720, },
  271.                 Height = Input { Value = 576, },
  272.                 TopLeftRed = Input { Value = 0.735356986522675, },
  273.                 TopLeftGreen = Input { Value = 0.735356986522675, },
  274.                 TopLeftBlue = Input { Value = 0.735356986522675, },
  275.                 Gradient = Input {
  276.                     Value = Gradient {
  277.                         Colors = {
  278.                             [0] = { 0, 0, 0, 1 },
  279.                             [1] = { 1, 1, 1, 1 }
  280.                         }
  281.                     },
  282.                 },
  283.             },
  284.             ViewInfo = OperatorInfo { Pos = { 1155, -16.5 } },
  285.         },
  286.         enviroSphere_cullFront = Override3D {
  287.             NameSet = true,
  288.             Inputs = {
  289.                 SceneInput = Input {
  290.                     SourceOp = "sphere",
  291.                     Source = "Output",
  292.                 },
  293.                 ["Visibility.DoCullFrontFace"] = Input { Value = 1, },
  294.                 ["Visibility.CullFrontFace"] = Input { Value = 1, },
  295.             },
  296.             ViewInfo = OperatorInfo { Pos = { 935, 115.5 } },
  297.         },
  298.         plane_mg = Merge3D {
  299.             NameSet = true,
  300.             Inputs = {
  301.                 SceneInput1 = Input {
  302.                     SourceOp = "plane_xf",
  303.                     Source = "Output",
  304.                 },
  305.                 SceneInput2 = Input {
  306.                     SourceOp = "sphere_mg",
  307.                     Source = "Output",
  308.                 },
  309.             },
  310.             ViewInfo = OperatorInfo { Pos = { 1155, 148.5 } },
  311.         },
  312.         light_mg = Merge3D {
  313.             NameSet = true,
  314.             Inputs = {
  315.                 SceneInput1 = Input {
  316.                     SourceOp = "DirectionalLight1",
  317.                     Source = "Output",
  318.                 },
  319.                 SceneInput2 = Input {
  320.                     SourceOp = "plane_mg",
  321.                     Source = "Output",
  322.                 },
  323.             },
  324.             ViewInfo = OperatorInfo { Pos = { 1155, 214.5 } },
  325.         },
  326.         plane_xf = Transform3D {
  327.             NameSet = true,
  328.             Inputs = {
  329.                 SceneInput = Input {
  330.                     SourceOp = "plane",
  331.                     Source = "Output",
  332.                 },
  333.                 ["Transform3DOp.Rotate.X"] = Input { Value = -90, },
  334.                 ["Transform3DOp.Scale.X"] = Input { Value = 100, },
  335.             },
  336.             ViewInfo = OperatorInfo { Pos = { 1045, 148.5 } },
  337.         },
  338.         enviroSphere_xf = Transform3D {
  339.             NameSet = true,
  340.             Inputs = {
  341.                 SceneInput = Input {
  342.                     SourceOp = "enviroSphere_cullFront",
  343.                     Source = "Output",
  344.                 },
  345.                 ["Transform3DOp.Scale.X"] = Input { Value = 500, },
  346.             },
  347.             ViewInfo = OperatorInfo { Pos = { 1045, 115.5 } },
  348.         },
  349.         sphere = Shape3D {
  350.             NameSet = true,
  351.             Inputs = {
  352.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  353.                 Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
  354.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  355.                 ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
  356.             },
  357.             ViewInfo = OperatorInfo { Pos = { 825, 82.5 } },
  358.         },
  359.         plane = Shape3D {
  360.             NameSet = true,
  361.             Inputs = {
  362.                 ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
  363.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, }
  364.             },
  365.             ViewInfo = OperatorInfo { Pos = { 935, 148.5 } },
  366.         },
  367.         DirectionalLight1 = LightDirectional {
  368.             Inputs = {
  369.                 ["Transform3DOp.Rotate.X"] = Input { Value = -45, },
  370.                 ["Transform3DOp.Rotate.Y"] = Input { Value = 45, },
  371.             },
  372.             ViewInfo = OperatorInfo { Pos = { 1045, 214.5 } },
  373.         },
  374.         PipeRouter1 = PipeRouter {
  375.             Inputs = {
  376.                 Input = Input {
  377.                     SourceOp = "sphere_xf",
  378.                     Source = "Output",
  379.                 },
  380.             },
  381.             ViewInfo = PipeRouterInfo { Pos = { 1155, 49.5 } },
  382.         },
  383.         Note2 = Note {
  384.             Inputs = {
  385.                 Comments = Input { Value = "Useful feature: the \"INP_Required = false,\" statement, added to the custom MainInput \"ImageSource\". If you don't include it, the render node would still not work even though you are not using the expression to drive the resolution (S1 preset on the render node)--confusing for an non-initiated user.", }
  386.             },
  387.             ViewInfo = StickyNoteInfo {
  388.                 Pos = { 1430, 49.5 },
  389.                 Flags = {
  390.                     Expanded = true
  391.                 },
  392.                 Size = { 196, 179.3 }
  393.             },
  394.         },
  395.         Note1 = Note {
  396.             Inputs = {
  397.                 Comments = Input { Value = "Play around with the presets used in the \"beauty_rn\" node. S3 is the most robust as the applied expression doesn't use the node's name. So if you would be using preset S1 (mimics the default Fusion setting) and you rename the node and switch to S2 (this expression does include the name of the node) it will no longer work. \n\nWould be cool if Fusion would update the expressions stored in the presets if one would rename the node. \n\nIdeally, you should also apply expressions to Pixel Aspect etc. The idea is to have a scalable comp that is being driven by loaders for instance, with content coming from the 3D department. Sometimes it happens that they render AOVs at a lower resolution in order to cut down on render times. If you have a huge multi-pass comp and you're generating extra fluff directly in comp (particle effects etc) you need to account for the change in resolution--with this workflow all is handled automatically.", }
  398.             },
  399.             ViewInfo = StickyNoteInfo {
  400.                 Pos = { 1265, 346.5 },
  401.                 Flags = {
  402.                     Expanded = true
  403.                 },
  404.                 Size = { 362, 302.3 }
  405.             },
  406.         },
  407.         Note2_1 = Note {
  408.             Inputs = {
  409.                 Comments = Input { Value = "This background node is used in this demo comp to drive the resolution of the \"beauty_rn\" node--a Renderer3D node. It is connected via the \"imageSource_wire\" node.", }
  410.             },
  411.             ViewInfo = StickyNoteInfo {
  412.                 Pos = { 1100, -214.5 },
  413.                 Flags = {
  414.                     Expanded = true
  415.                 },
  416.                 Size = { 196, 179.3 }
  417.             },
  418.         }
  419.     }
  420. }

User avatar
Kristof
Fusionista
Posts: 787
Joined: Thu Aug 07, 2014 1:30 pm
Answers: 2
Been thanked: 24 times

Re: Custom MainInputs

#12

Post by Kristof » Fri Jan 06, 2017 5:27 am

Warning. This will expose a bug. It will apply the ImageSource input as a merge would, if you add an EffectMask. Weird!
Paste in a comp with globals and current frame set to 1001:
  1. {
  2.     Tools = ordered() {
  3.         Plasma1 = Plasma {
  4.             Inputs = {
  5.                 GlobalIn = Input { Value = 1001, },
  6.                 GlobalOut = Input { Value = 1500, },
  7.                 Width = Input { Value = 1920, },
  8.                 Height = Input { Value = 1080, },
  9.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  10.             },
  11.             ViewInfo = OperatorInfo { Pos = { 319, 145 } },
  12.         },
  13.         Background_1 = Background {
  14.             CtrlWZoom = false,
  15.             NameSet = true,
  16.             CustomData = {
  17.                 Settings = {
  18.                 }
  19.             },
  20.             Inputs = {
  21.                 GlobalIn = Input { Value = 1001, },
  22.                 GlobalOut = Input { Value = 1500, },
  23.                 Width = Input {
  24.                     Value = 1920,
  25.                     Expression = "Background_1.ImageSource.OriginalWidth",
  26.                 },
  27.                 Height = Input {
  28.                     Value = 1080,
  29.                     Expression = "Background_1.ImageSource.OriginalHeight",
  30.                 },
  31.                 Depth = Input { Value = 4, },
  32.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  33.                 TopLeftRed = Input { Value = 1, },
  34.                 TopLeftGreen = Input { Value = 1, },
  35.                 TopLeftBlue = Input { Value = 1, },
  36.                 Gradient = Input {
  37.                     Value = Gradient {
  38.                         Colors = {
  39.                             [0] = { 0, 0, 0, 1 },
  40.                             [1] = { 1, 1, 1, 1 }
  41.                         }
  42.                     },
  43.                 },
  44.                 ImageSource = Input {
  45.                     SourceOp = "imageSource_wire_1",
  46.                     Source = "Output",
  47.                 },
  48.                 EffectMask = Input {
  49.                     SourceOp = "vignette_mask_1",
  50.                     Source = "Mask",
  51.                 }
  52.             },
  53.             ViewInfo = OperatorInfo { Pos = { 429, 178 } },
  54.             UserControls = ordered() {
  55.                 ImageSource = {
  56.                     LINK_Main = 2,
  57.                     LINKID_DataType = "Image",
  58.                     ICS_ControlPage = "Image",
  59.                     INP_Required = false,
  60.                     LINKS_Name = "Image Source"
  61.                 }
  62.             }
  63.         },
  64.         Background_1_1 = Background {
  65.             NameSet = true,
  66.             CustomData = {
  67.                 Settings = {
  68.                 }
  69.             },
  70.             Inputs = {
  71.                 GlobalIn = Input { Value = 1001, },
  72.                 GlobalOut = Input { Value = 1500, },
  73.                 Width = Input {
  74.                     Value = 1920,
  75.                     Expression = "Background_1_1.ImageSource.OriginalWidth",
  76.                 },
  77.                 Height = Input {
  78.                     Value = 1080,
  79.                     Expression = "Background_1_1.ImageSource.OriginalHeight",
  80.                 },
  81.                 Depth = Input { Value = 4, },
  82.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  83.                 TopLeftRed = Input { Value = 1, },
  84.                 TopLeftGreen = Input { Value = 1, },
  85.                 TopLeftBlue = Input { Value = 1, },
  86.                 Gradient = Input {
  87.                     Value = Gradient {
  88.                         Colors = {
  89.                             [0] = { 0, 0, 0, 1 },
  90.                             [1] = { 1, 1, 1, 1 }
  91.                         }
  92.                     },
  93.                 },
  94.                 ImageSource = Input {
  95.                     SourceOp = "imageSource_wire_1",
  96.                     Source = "Output",
  97.                 },
  98.             },
  99.             ViewInfo = OperatorInfo { Pos = { 539, 178 } },
  100.             UserControls = ordered() {
  101.                 ImageSource = {
  102.                     LINK_Main = 2,
  103.                     LINKID_DataType = "Image",
  104.                     ICS_ControlPage = "Image",
  105.                     INP_Required = false,
  106.                     LINKS_Name = "Image Source"
  107.                 }
  108.             }
  109.         },
  110.         imageSource_wire_1 = Fuse.Wireless {
  111.             NameSet = true,
  112.             Inputs = {
  113.                 Input = Input {
  114.                     SourceOp = "Plasma1",
  115.                     Source = "Output",
  116.                 },
  117.             },
  118.             ViewInfo = OperatorInfo { Pos = { 484, 112 } },
  119.         },
  120.         vignette_mask_1 = EllipseMask {
  121.             NameSet = true,
  122.             Inputs = {
  123.                 Invert = Input { Value = 1, },
  124.                 MaskWidth = Input { Value = 2048, },
  125.                 MaskHeight = Input { Value = 1152, },
  126.                 PixelAspect = Input { Value = { 1, 1 }, },
  127.                 ClippingMode = Input { Value = FuID { "None" }, },
  128.                 Width = Input { Value = 0.957622744209497, },
  129.                 Height = Input { Value = 0.957622744209497, },
  130.             },
  131.             ViewInfo = OperatorInfo { Pos = { 319, 178 } },
  132.         }
  133.     }
  134. }