In the olden days, producers knew what visual effects were. Now they’ve gotten into this methodology where they’ll hire a middleman – a visual effects supervisor, and this person works for the producing studio.
They’re middle managers. And when you go into a review with one of them, there’s this weird sort of competition that happens.

It’s a game called ‘Find What’s Wrong With This Shot’. And there’s always going to be something wrong, because everything’s subjective. And you can micromanage it down to a pixel, and that happens all the time. We’re doing it digitally, so there’s no pressure to save on film costs or whatever, so it’s not unusual to go through 500 revisions of the same shot, moving pixels around and scrutinizing this or that.

That’s not how you manage artists. You encourage artists, and then you’ll get – you know – art.

If your idea of managing artists is just pointing out what’s wrong and making them fix it over and over again, you end up with artists who just stand around asking “OK lady, where do you want this sofa? You want it over there? No? Fine. You want it over there? I don’t give a fuck. I’ll put it wherever you want it.” It’s creative mismanagement, it’s part of the whole corporate modality. The fish stinks from the head on down. Back on Star Wars, Robocop, we never thought about what was wrong with a shot.

We just thought about how to make it better.

Phil Tippett

CustomShader3D: Cg shader editing in your comp

Moderator: SecondMan

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#61

Post by Kristof » Wed Dec 21, 2016 8:42 am

Could the ZtoWorldPos node be re-made using the CustomShader3D?

Tags:

User avatar
Chad
Fusionator
Posts: 1119
Joined: Fri Aug 08, 2014 12:11 pm
Has thanked: 6 times
Been thanked: 23 times

Re: CustomShader3D: Cg shader editing in your comp

#62

Post by Chad » Wed Dec 21, 2016 9:32 am

Sure. Use a transform matrix input and connect it to the camera manually.

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#63

Post by Kristof » Wed Dec 21, 2016 2:33 pm

Yay! Thanks Chad, this is awesome. You might frown on my enthusiasm, but being able to do and understand this kind of thing means a lot to me.

So the trick is to convert a world position to a position in view space and then the blue channel will give you the depth buffer. How can I make it return a mono output?

Now, how can I transform red and green to screen coordinates? with the the bottom left corner being 0,0 and the top right 1,1?
  1. {
  2.     Tools = ordered() {
  3.         Shape3D2 = Shape3D {
  4.             Inputs = {
  5.                 ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
  6.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, }
  7.             },
  8.             ViewInfo = OperatorInfo { Pos = { 1045, 214.5 } },
  9.         },
  10.         Transform3D2 = Transform3D {
  11.             Inputs = {
  12.                 SceneInput = Input {
  13.                     SourceOp = "Shape3D2",
  14.                     Source = "Output",
  15.                 },
  16.                 ["Transform3DOp.Rotate.X"] = Input { Value = -90, },
  17.                 ["Transform3DOp.Scale.X"] = Input { Value = 100, },
  18.             },
  19.             ViewInfo = OperatorInfo { Pos = { 1155, 214.5 } },
  20.         },
  21.         Shape3D1 = Shape3D {
  22.             Inputs = {
  23.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  24.                 Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
  25.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  26.                 ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
  27.             },
  28.             ViewInfo = OperatorInfo { Pos = { 1155, 181.5 } },
  29.         },
  30.         Transform3D3 = Transform3D {
  31.             Inputs = {
  32.                 SceneInput = Input {
  33.                     SourceOp = "Override3D1",
  34.                     Source = "Output",
  35.                 },
  36.                 ["Transform3DOp.Scale.X"] = Input { Value = 500, },
  37.             },
  38.             ViewInfo = OperatorInfo { Pos = { 1155, 247.5 } },
  39.         },
  40.         WirelessLink3D1 = Fuse.Wireless3D {
  41.             Inputs = {
  42.                 Input = Input {
  43.                     SourceOp = "Shape3D1",
  44.                     Source = "Output",
  45.                 },
  46.             },
  47.             ViewInfo = OperatorInfo { Pos = { 935, 247.5 } },
  48.         },
  49.         Shape3D1_1 = Shape3D {
  50.             Inputs = {
  51.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  52.                 Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
  53.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  54.                 ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
  55.                 ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 6, }
  56.             },
  57.             ViewInfo = OperatorInfo { Pos = { 990, 280.5 } },
  58.         },
  59.         Transform3D1_1 = Transform3D {
  60.             Inputs = {
  61.                 SceneInput = Input {
  62.                     SourceOp = "Shape3D1_1",
  63.                     Source = "Output",
  64.                 },
  65.                 ["Transform3DOp.Translate.X"] = Input { Value = -1.8591549, },
  66.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.5, },
  67.             },
  68.             ViewInfo = OperatorInfo { Pos = { 1100, 280.5 } },
  69.         },
  70.         Override3D1 = Override3D {
  71.             Inputs = {
  72.                 SceneInput = Input {
  73.                     SourceOp = "WirelessLink3D1",
  74.                     Source = "Output",
  75.                 },
  76.                 ["Visibility.DoCullFrontFace"] = Input { Value = 1, },
  77.                 ["Visibility.CullFrontFace"] = Input { Value = 1, },
  78.             },
  79.             ViewInfo = OperatorInfo { Pos = { 1045, 247.5 } },
  80.         },
  81.         Transform3D1 = Transform3D {
  82.             Inputs = {
  83.                 SceneInput = Input {
  84.                     SourceOp = "Shape3D1",
  85.                     Source = "Output",
  86.                 },
  87.                 ["Transform3DOp.Translate.Y"] = Input { Value = 1, },
  88.             },
  89.             ViewInfo = OperatorInfo { Pos = { 1265, 181.5 } },
  90.         },
  91.         Merge3D2 = Merge3D {
  92.             Inputs = {
  93.                 SceneInput1 = Input {
  94.                     SourceOp = "Transform3D3",
  95.                     Source = "Output",
  96.                 },
  97.                 SceneInput2 = Input {
  98.                     SourceOp = "Merge3D1",
  99.                     Source = "Output",
  100.                 },
  101.             },
  102.             ViewInfo = OperatorInfo { Pos = { 1265, 247.5 } },
  103.         },
  104.         Merge3D5 = Merge3D {
  105.             Inputs = {
  106.                 SceneInput1 = Input {
  107.                     SourceOp = "Transform3D1_1",
  108.                     Source = "Output",
  109.                 },
  110.                 SceneInput2 = Input {
  111.                     SourceOp = "Merge3D2",
  112.                     Source = "Output",
  113.                 },
  114.             },
  115.             ViewInfo = OperatorInfo { Pos = { 1265, 280.5 } },
  116.         },
  117.         Merge3D1 = Merge3D {
  118.             Inputs = {
  119.                 SceneInput1 = Input {
  120.                     SourceOp = "Transform3D2",
  121.                     Source = "Output",
  122.                 },
  123.                 SceneInput2 = Input {
  124.                     SourceOp = "Transform3D1",
  125.                     Source = "Output",
  126.                 },
  127.             },
  128.             ViewInfo = OperatorInfo { Pos = { 1265, 214.5 } },
  129.         },
  130.         Merge3D3 = Merge3D {
  131.             Inputs = {
  132.                 SceneInput1 = Input {
  133.                     SourceOp = "Camera3D1",
  134.                     Source = "Output",
  135.                 },
  136.                 SceneInput2 = Input {
  137.                     SourceOp = "Merge3D5",
  138.                     Source = "Output",
  139.                 },
  140.             },
  141.             ViewInfo = OperatorInfo { Pos = { 1265, 346.5 } },
  142.         },
  143.         Camera3D1 = Camera3D {
  144.             Inputs = {
  145.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.9577465, },
  146.                 ["Transform3DOp.Translate.Z"] = Input { Value = 14.3661972, },
  147.                 AoV = Input { Value = 19.2642683071402, },
  148.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
  149.                 FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
  150.                 ApertureW = Input { Value = 0.831496062992126, },
  151.                 ApertureH = Input { Value = 0.467716535433071, },
  152.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  153.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  154.             },
  155.             ViewInfo = OperatorInfo { Pos = { 990, 346.5 } },
  156.         },
  157.         depthRGB = ChannelBoolean {
  158.             NameSet = true,
  159.             Inputs = {
  160.                 ToRed = Input { Value = 18, },
  161.                 ToGreen = Input { Value = 18, },
  162.                 ToBlue = Input { Value = 18, },
  163.                 ToAlpha = Input { Value = 16, },
  164.                 Background = Input {
  165.                     SourceOp = "Renderer3D1",
  166.                     Source = "Output",
  167.                 },
  168.             },
  169.             ViewInfo = OperatorInfo { Pos = { 1595, 379.5 } },
  170.         },
  171.         posRGB = ChannelBoolean {
  172.             NameSet = true,
  173.             Inputs = {
  174.                 ToRed = Input { Value = 35, },
  175.                 ToGreen = Input { Value = 36, },
  176.                 ToBlue = Input { Value = 37, },
  177.                 ToAlpha = Input { Value = 16, },
  178.                 Background = Input {
  179.                     SourceOp = "Renderer3D1",
  180.                     Source = "Output",
  181.                 },
  182.             },
  183.             ViewInfo = OperatorInfo { Pos = { 1595, 412.5 } },
  184.         },
  185.         Merge3D4 = Merge3D {
  186.             Inputs = {
  187.                 SceneInput1 = Input {
  188.                     SourceOp = "DirectionalLight1",
  189.                     Source = "Output",
  190.                 },
  191.                 SceneInput2 = Input {
  192.                     SourceOp = "Merge3D3",
  193.                     Source = "Output",
  194.                 },
  195.             },
  196.             ViewInfo = OperatorInfo { Pos = { 1265, 412.5 } },
  197.         },
  198.         DirectionalLight1 = LightDirectional {
  199.             Inputs = {
  200.                 ["Transform3DOp.Rotate.X"] = Input { Value = -45, },
  201.             },
  202.             ViewInfo = OperatorInfo { Pos = { 1155, 412.5 } },
  203.         },
  204.         Renderer3D1 = Renderer3D {
  205.             Inputs = {
  206.                 GlobalIn = Input { Value = 1001, },
  207.                 GlobalOut = Input { Value = 2001, },
  208.                 Width = Input { Value = 1920, },
  209.                 Height = Input { Value = 1080, },
  210.                 Depth = Input { Value = 4, },
  211.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  212.                 SceneInput = Input {
  213.                     SourceOp = "Merge3D4",
  214.                     Source = "Output",
  215.                 },
  216.                 RendererType = Input { Value = FuID { "RendererOpenGL" }, },
  217.                 ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
  218.                 ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
  219.                 ["RendererOpenGL.Channels.Z"] = Input { Value = 1, },
  220.                 ["RendererOpenGL.Channels.WorldCoord"] = Input { Value = 1, },
  221.                 ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
  222.                 ["RendererOpenGL.Texturing"] = Input { Value = 1, },
  223.                 ["RendererOpenGL.TextureDepth"] = Input { Value = 4, },
  224.             },
  225.             ViewInfo = OperatorInfo { Pos = { 1430, 412.5 } },
  226.         },
  227.         BrightnessContrast1 = BrightnessContrast {
  228.             Inputs = {
  229.                 Gain = Input { Value = -1, },
  230.                 Input = Input {
  231.                     SourceOp = "depthRGB",
  232.                     Source = "Output",
  233.                 },
  234.             },
  235.             ViewInfo = OperatorInfo { Pos = { 1705, 379.5 } },
  236.         },
  237.         CustomShader3D1 = Indicated.CustomShaderOperator3D {
  238.             CurrentSettings = 6,
  239.             CustomData = {
  240.                 Settings = {
  241.                     [1] = {
  242.                         Tools = ordered() {
  243.                             CustomShader3D1 = Indicated.CustomShaderOperator3D {
  244.                                 CtrlWZoom = false,
  245.                                 CustomData = {
  246.                                 },
  247.                                 Inputs = {
  248.                                     ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  249.                                     ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n return float4(mul(Camera,float4(ChildMtl.Shade(f).rgb,1)));\n}", },
  250.                                     MatrixGroup = Input { Value = 1, },
  251.                                     MaterialID = Input { Value = 2, },
  252.                                     ChildMtl = Input {
  253.                                         SourceOp = "posRGB",
  254.                                         Source = "Output",
  255.                                         CustomData = {
  256.                                             Metadata = {
  257.                                                 Type = "Material",
  258.                                                 Set = "ChildMtl"
  259.                                             }
  260.                                         },
  261.                                     },
  262.                                     CameraTx = Input {
  263.                                         CustomData = {
  264.                                             Metadata = {
  265.                                                 Type = "Matrix",
  266.                                                 Set = "Camera",
  267.                                                 Input = "Tx"
  268.                                             }
  269.                                         },
  270.                                         Expression = "Camera3D1.Transform3DOp.Translate.X",
  271.                                     },
  272.                                     CameraTy = Input {
  273.                                         Value = 0.9577465,
  274.                                         CustomData = {
  275.                                             Metadata = {
  276.                                                 Type = "Matrix",
  277.                                                 Set = "Camera",
  278.                                                 Input = "Ty"
  279.                                             }
  280.                                         },
  281.                                         Expression = "Camera3D1.Transform3DOp.Translate.Y",
  282.                                     },
  283.                                     CameraTz = Input {
  284.                                         Value = 14.3661972,
  285.                                         CustomData = {
  286.                                             Metadata = {
  287.                                                 Type = "Matrix",
  288.                                                 Set = "Camera",
  289.                                                 Input = "Tz"
  290.                                             }
  291.                                         },
  292.                                         Expression = "Camera3D1.Transform3DOp.Translate.Z",
  293.                                     },
  294.                                     CameraRotationOrder = Input {
  295.                                         CustomData = {
  296.                                             Metadata = {
  297.                                                 Type = "Matrix",
  298.                                                 Set = "Camera",
  299.                                                 Input = "RotationOrder"
  300.                                             }
  301.                                         },
  302.                                     },
  303.                                     CameraRx = Input {
  304.                                         CustomData = {
  305.                                             Metadata = {
  306.                                                 Type = "Matrix",
  307.                                                 Set = "Camera",
  308.                                                 Input = "Rx"
  309.                                             }
  310.                                         },
  311.                                         Expression = "Camera3D1.Transform3DOp.Rotate.X",
  312.                                     },
  313.                                     CameraRy = Input {
  314.                                         CustomData = {
  315.                                             Metadata = {
  316.                                                 Type = "Matrix",
  317.                                                 Set = "Camera",
  318.                                                 Input = "Ry"
  319.                                             }
  320.                                         },
  321.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  322.                                     },
  323.                                     CameraRz = Input {
  324.                                         CustomData = {
  325.                                             Metadata = {
  326.                                                 Type = "Matrix",
  327.                                                 Set = "Camera",
  328.                                                 Input = "Rz"
  329.                                             }
  330.                                         },
  331.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  332.                                     },
  333.                                     CameraSx = Input {
  334.                                         CustomData = {
  335.                                             Metadata = {
  336.                                                 Type = "Matrix",
  337.                                                 Set = "Camera",
  338.                                                 Input = "Sx"
  339.                                             }
  340.                                         },
  341.                                     },
  342.                                     CameraSy = Input {
  343.                                         CustomData = {
  344.                                             Metadata = {
  345.                                                 Type = "Matrix",
  346.                                                 Set = "Camera",
  347.                                                 Input = "Sy"
  348.                                             }
  349.                                         },
  350.                                     },
  351.                                     CameraSz = Input {
  352.                                         CustomData = {
  353.                                             Metadata = {
  354.                                                 Type = "Matrix",
  355.                                                 Set = "Camera",
  356.                                                 Input = "Sz"
  357.                                             }
  358.                                         },
  359.                                     },
  360.                                     CameraPx = Input {
  361.                                         CustomData = {
  362.                                             Metadata = {
  363.                                                 Type = "Matrix",
  364.                                                 Set = "Camera",
  365.                                                 Input = "Px"
  366.                                             }
  367.                                         },
  368.                                     },
  369.                                     CameraPy = Input {
  370.                                         CustomData = {
  371.                                             Metadata = {
  372.                                                 Type = "Matrix",
  373.                                                 Set = "Camera",
  374.                                                 Input = "Py"
  375.                                             }
  376.                                         },
  377.                                     },
  378.                                     CameraPz = Input {
  379.                                         CustomData = {
  380.                                             Metadata = {
  381.                                                 Type = "Matrix",
  382.                                                 Set = "Camera",
  383.                                                 Input = "Pz"
  384.                                             }
  385.                                         },
  386.                                     },
  387.                                 },
  388.                                 ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  389.                                 UserControls = ordered() {
  390.                                     ChildMtl = {
  391.                                         {
  392.                                             LINKID_DataType = "MtlGraph3D"
  393.                                         },
  394.                                         {
  395.                                             LINKID_DataType = "Image"
  396.                                         },
  397.                                         {
  398.                                             LINKID_AllowedDataType = "Image"
  399.                                         },
  400.                                         {
  401.                                             LINKID_AllowedDataType = "Mask"
  402.                                         },
  403.                                         INP_AcceptsGLImages = true,
  404.                                         LINK_Main = 1,
  405.                                         INP_AcceptsMasks = true,
  406.                                         INPID_InputControl = "ImageControl",
  407.                                         INP_Required = false,
  408.                                         IC_ControlPage = 0,
  409.                                     },
  410.                                     ChildMtlLabel = {
  411.                                         IC_ControlPage = 1,
  412.                                         ICD_Width = 0.9,
  413.                                         INP_External = false,
  414.                                         INPID_InputControl = "LabelControl",
  415.                                         ICS_Name = "ChildMtl",
  416.                                         INP_Passive = true,
  417.                                     },
  418.                                     ChildMtlDeleteButton = {
  419.                                         INP_DoNotifyChanged = 1,
  420.                                         INP_External = 0,
  421.                                         IC_ControlPage = 1,
  422.                                         ICD_Width = 0.1,
  423.                                         ICS_Name = "",
  424.                                         LINKID_DataType = "Number",
  425.                                         MBTNC_ButtonHeight = 18,
  426.                                         INPID_InputControl = "MultiButtonControl",
  427.                                         MBTNC_AddButton = "X",
  428.                                         MBTNC_Type = "Toggle",
  429.                                     },
  430.                                     CameraTx = {
  431.                                         LINKID_DataType = "Number",
  432.                                         ICS_Name = "X Translation",
  433.                                         INP_Default = 0,
  434.                                         INP_MinScale = -0.5,
  435.                                         INPID_InputControl = "ScrewControl",
  436.                                         INP_MaxScale = 0.5,
  437.                                         IC_ControlPage = 4,
  438.                                     },
  439.                                     CameraTy = {
  440.                                         LINKID_DataType = "Number",
  441.                                         ICS_Name = "Y Translation",
  442.                                         INP_Default = 0,
  443.                                         INP_MinScale = -0.5,
  444.                                         INPID_InputControl = "ScrewControl",
  445.                                         INP_MaxScale = 0.5,
  446.                                         IC_ControlPage = 4,
  447.                                     },
  448.                                     CameraTz = {
  449.                                         LINKID_DataType = "Number",
  450.                                         ICS_Name = "Z Translation",
  451.                                         INP_Default = 0,
  452.                                         INP_MinScale = -0.5,
  453.                                         INPID_InputControl = "ScrewControl",
  454.                                         INP_MaxScale = 0.5,
  455.                                         IC_ControlPage = 4,
  456.                                     },
  457.                                     CameraRotationOrder = {
  458.                                         {
  459.                                             MBTNC_AddButton = "XYZ"
  460.                                         },
  461.                                         {
  462.                                             MBTNC_AddButton = "XZY"
  463.                                         },
  464.                                         {
  465.                                             MBTNC_AddButton = "YXZ"
  466.                                         },
  467.                                         {
  468.                                             MBTNC_AddButton = "YZX"
  469.                                         },
  470.                                         {
  471.                                             MBTNC_AddButton = "ZXY"
  472.                                         },
  473.                                         {
  474.                                             MBTNC_AddButton = "ZYX"
  475.                                         },
  476.                                         LINKID_DataType = "FuID",
  477.                                         ICS_Name = "Rotation order",
  478.                                         MBTNC_StretchToFit = true,
  479.                                         INPID_InputControl = "MultiButtonIDControl",
  480.                                         INPID_DefaultID = "XYZ",
  481.                                         IC_ControlPage = 4,
  482.                                     },
  483.                                     CameraRx = {
  484.                                         LINKID_DataType = "Number",
  485.                                         ICS_Name = "X Rotation",
  486.                                         INP_Default = 0,
  487.                                         INP_MinScale = -180,
  488.                                         IC_ControlPage = 4,
  489.                                         INPID_InputControl = "ScrewControl",
  490.                                         INP_MaxScale = 180,
  491.                                         IC_Steps = 3601,
  492.                                     },
  493.                                     CameraRy = {
  494.                                         LINKID_DataType = "Number",
  495.                                         ICS_Name = "Y Rotation",
  496.                                         INP_Default = 0,
  497.                                         INP_MinScale = -180,
  498.                                         IC_ControlPage = 4,
  499.                                         INPID_InputControl = "ScrewControl",
  500.                                         INP_MaxScale = 180,
  501.                                         IC_Steps = 3601,
  502.                                     },
  503.                                     CameraRz = {
  504.                                         LINKID_DataType = "Number",
  505.                                         ICS_Name = "Z Rotation",
  506.                                         INP_Default = 0,
  507.                                         INP_MinScale = -180,
  508.                                         IC_ControlPage = 4,
  509.                                         INPID_InputControl = "ScrewControl",
  510.                                         INP_MaxScale = 180,
  511.                                         IC_Steps = 3601,
  512.                                     },
  513.                                     CameraSx = {
  514.                                         LINKID_DataType = "Number",
  515.                                         ICS_Name = "X Scale",
  516.                                         INP_Default = 1,
  517.                                         INP_MinScale = -3,
  518.                                         INPID_InputControl = "SliderControl",
  519.                                         INP_MaxScale = 3,
  520.                                         IC_ControlPage = 4,
  521.                                     },
  522.                                     CameraSy = {
  523.                                         LINKID_DataType = "Number",
  524.                                         ICS_Name = "Y Scale",
  525.                                         INP_Default = 1,
  526.                                         INP_MinScale = -3,
  527.                                         INPID_InputControl = "SliderControl",
  528.                                         INP_MaxScale = 3,
  529.                                         IC_ControlPage = 4,
  530.                                     },
  531.                                     CameraSz = {
  532.                                         LINKID_DataType = "Number",
  533.                                         ICS_Name = "Z Scale",
  534.                                         INP_Default = 1,
  535.                                         INP_MinScale = -3,
  536.                                         INPID_InputControl = "SliderControl",
  537.                                         INP_MaxScale = 3,
  538.                                         IC_ControlPage = 4,
  539.                                     },
  540.                                     CameraPx = {
  541.                                         LINKID_DataType = "Number",
  542.                                         ICS_Name = "X Pivot",
  543.                                         INP_Default = 0,
  544.                                         INP_MinScale = -1,
  545.                                         INPID_InputControl = "ScrewControl",
  546.                                         INP_MaxScale = 1,
  547.                                         IC_ControlPage = 4,
  548.                                     },
  549.                                     CameraPy = {
  550.                                         LINKID_DataType = "Number",
  551.                                         ICS_Name = "Y Pivot",
  552.                                         INP_Default = 0,
  553.                                         INP_MinScale = -1,
  554.                                         INPID_InputControl = "ScrewControl",
  555.                                         INP_MaxScale = 1,
  556.                                         IC_ControlPage = 4,
  557.                                     },
  558.                                     CameraPz = {
  559.                                         LINKID_DataType = "Number",
  560.                                         ICS_Name = "Z Pivot",
  561.                                         INP_Default = 0,
  562.                                         INP_MinScale = -1,
  563.                                         INPID_InputControl = "ScrewControl",
  564.                                         INP_MaxScale = 1,
  565.                                         IC_ControlPage = 4,
  566.                                     },
  567.                                     CameraLabel = {
  568.                                         IC_ControlPage = 1,
  569.                                         ICD_Width = 0.9,
  570.                                         INP_External = false,
  571.                                         INPID_InputControl = "LabelControl",
  572.                                         INP_Passive = true,
  573.                                         ICS_Name = "Camera",
  574.                                     },
  575.                                     CameraDeleteButton = {
  576.                                         INP_DoNotifyChanged = 1,
  577.                                         INP_External = 0,
  578.                                         LINKID_DataType = "Number",
  579.                                         ICD_Width = 0.1,
  580.                                         ICS_Name = "",
  581.                                         IC_ControlPage = 1,
  582.                                         MBTNC_ButtonHeight = 18,
  583.                                         INPID_InputControl = "MultiButtonControl",
  584.                                         MBTNC_AddButton = "X",
  585.                                         MBTNC_Type = "Toggle",
  586.                                     }
  587.                                 }
  588.                             }
  589.                         }
  590.                     },
  591.                     [2] = {
  592.                         Tools = ordered() {
  593.                             CustomShader3D1 = Indicated.CustomShaderOperator3D {
  594.                                 CtrlWZoom = false,
  595.                                 CustomData = {
  596.                                 },
  597.                                 Inputs = {
  598.                                     ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  599.                                     ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n return distance(Camera,float4(ChildMtl.Shade(f).rgb,1));\n}", },
  600.                                     MatrixGroup = Input { Value = 1, },
  601.                                     MaterialID = Input { Value = 2, },
  602.                                     ChildMtl = Input {
  603.                                         SourceOp = "posRGB",
  604.                                         Source = "Output",
  605.                                         CustomData = {
  606.                                             Metadata = {
  607.                                                 Type = "Material",
  608.                                                 Set = "ChildMtl"
  609.                                             }
  610.                                         },
  611.                                     },
  612.                                     CameraTx = Input {
  613.                                         CustomData = {
  614.                                             Metadata = {
  615.                                                 Type = "Matrix",
  616.                                                 Set = "Camera",
  617.                                                 Input = "Tx"
  618.                                             }
  619.                                         },
  620.                                         Expression = "Camera3D1.Transform3DOp.Translate.X",
  621.                                     },
  622.                                     CameraTy = Input {
  623.                                         Value = 0.9577465,
  624.                                         CustomData = {
  625.                                             Metadata = {
  626.                                                 Type = "Matrix",
  627.                                                 Set = "Camera",
  628.                                                 Input = "Ty"
  629.                                             }
  630.                                         },
  631.                                         Expression = "Camera3D1.Transform3DOp.Translate.Y",
  632.                                     },
  633.                                     CameraTz = Input {
  634.                                         Value = 14.3661972,
  635.                                         CustomData = {
  636.                                             Metadata = {
  637.                                                 Type = "Matrix",
  638.                                                 Set = "Camera",
  639.                                                 Input = "Tz"
  640.                                             }
  641.                                         },
  642.                                         Expression = "Camera3D1.Transform3DOp.Translate.Z",
  643.                                     },
  644.                                     CameraRotationOrder = Input {
  645.                                         CustomData = {
  646.                                             Metadata = {
  647.                                                 Type = "Matrix",
  648.                                                 Set = "Camera",
  649.                                                 Input = "RotationOrder"
  650.                                             }
  651.                                         },
  652.                                     },
  653.                                     CameraRx = Input {
  654.                                         CustomData = {
  655.                                             Metadata = {
  656.                                                 Type = "Matrix",
  657.                                                 Set = "Camera",
  658.                                                 Input = "Rx"
  659.                                             }
  660.                                         },
  661.                                         Expression = "Camera3D1.Transform3DOp.Rotate.X",
  662.                                     },
  663.                                     CameraRy = Input {
  664.                                         CustomData = {
  665.                                             Metadata = {
  666.                                                 Type = "Matrix",
  667.                                                 Set = "Camera",
  668.                                                 Input = "Ry"
  669.                                             }
  670.                                         },
  671.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  672.                                     },
  673.                                     CameraRz = Input {
  674.                                         CustomData = {
  675.                                             Metadata = {
  676.                                                 Type = "Matrix",
  677.                                                 Set = "Camera",
  678.                                                 Input = "Rz"
  679.                                             }
  680.                                         },
  681.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  682.                                     },
  683.                                     CameraSx = Input {
  684.                                         CustomData = {
  685.                                             Metadata = {
  686.                                                 Type = "Matrix",
  687.                                                 Set = "Camera",
  688.                                                 Input = "Sx"
  689.                                             }
  690.                                         },
  691.                                     },
  692.                                     CameraSy = Input {
  693.                                         CustomData = {
  694.                                             Metadata = {
  695.                                                 Type = "Matrix",
  696.                                                 Set = "Camera",
  697.                                                 Input = "Sy"
  698.                                             }
  699.                                         },
  700.                                     },
  701.                                     CameraSz = Input {
  702.                                         CustomData = {
  703.                                             Metadata = {
  704.                                                 Type = "Matrix",
  705.                                                 Set = "Camera",
  706.                                                 Input = "Sz"
  707.                                             }
  708.                                         },
  709.                                     },
  710.                                     CameraPx = Input {
  711.                                         CustomData = {
  712.                                             Metadata = {
  713.                                                 Type = "Matrix",
  714.                                                 Set = "Camera",
  715.                                                 Input = "Px"
  716.                                             }
  717.                                         },
  718.                                     },
  719.                                     CameraPy = Input {
  720.                                         CustomData = {
  721.                                             Metadata = {
  722.                                                 Type = "Matrix",
  723.                                                 Set = "Camera",
  724.                                                 Input = "Py"
  725.                                             }
  726.                                         },
  727.                                     },
  728.                                     CameraPz = Input {
  729.                                         CustomData = {
  730.                                             Metadata = {
  731.                                                 Type = "Matrix",
  732.                                                 Set = "Camera",
  733.                                                 Input = "Pz"
  734.                                             }
  735.                                         },
  736.                                     },
  737.                                 },
  738.                                 ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  739.                                 UserControls = ordered() {
  740.                                     ChildMtl = {
  741.                                         {
  742.                                             LINKID_DataType = "MtlGraph3D"
  743.                                         },
  744.                                         {
  745.                                             LINKID_DataType = "Image"
  746.                                         },
  747.                                         {
  748.                                             LINKID_AllowedDataType = "Image"
  749.                                         },
  750.                                         {
  751.                                             LINKID_AllowedDataType = "Mask"
  752.                                         },
  753.                                         INP_AcceptsGLImages = true,
  754.                                         LINK_Main = 1,
  755.                                         INP_AcceptsMasks = true,
  756.                                         INPID_InputControl = "ImageControl",
  757.                                         INP_Required = false,
  758.                                         IC_ControlPage = 0,
  759.                                     },
  760.                                     ChildMtlLabel = {
  761.                                         IC_ControlPage = 1,
  762.                                         ICD_Width = 0.9,
  763.                                         INP_External = false,
  764.                                         INPID_InputControl = "LabelControl",
  765.                                         ICS_Name = "ChildMtl",
  766.                                         INP_Passive = true,
  767.                                     },
  768.                                     ChildMtlDeleteButton = {
  769.                                         INP_DoNotifyChanged = 1,
  770.                                         INP_External = 0,
  771.                                         IC_ControlPage = 1,
  772.                                         ICD_Width = 0.1,
  773.                                         ICS_Name = "",
  774.                                         LINKID_DataType = "Number",
  775.                                         MBTNC_ButtonHeight = 18,
  776.                                         INPID_InputControl = "MultiButtonControl",
  777.                                         MBTNC_AddButton = "X",
  778.                                         MBTNC_Type = "Toggle",
  779.                                     },
  780.                                     CameraTx = {
  781.                                         LINKID_DataType = "Number",
  782.                                         ICS_Name = "X Translation",
  783.                                         INP_Default = 0,
  784.                                         INP_MinScale = -0.5,
  785.                                         INPID_InputControl = "ScrewControl",
  786.                                         INP_MaxScale = 0.5,
  787.                                         IC_ControlPage = 4,
  788.                                     },
  789.                                     CameraTy = {
  790.                                         LINKID_DataType = "Number",
  791.                                         ICS_Name = "Y Translation",
  792.                                         INP_Default = 0,
  793.                                         INP_MinScale = -0.5,
  794.                                         INPID_InputControl = "ScrewControl",
  795.                                         INP_MaxScale = 0.5,
  796.                                         IC_ControlPage = 4,
  797.                                     },
  798.                                     CameraTz = {
  799.                                         LINKID_DataType = "Number",
  800.                                         ICS_Name = "Z Translation",
  801.                                         INP_Default = 0,
  802.                                         INP_MinScale = -0.5,
  803.                                         INPID_InputControl = "ScrewControl",
  804.                                         INP_MaxScale = 0.5,
  805.                                         IC_ControlPage = 4,
  806.                                     },
  807.                                     CameraRotationOrder = {
  808.                                         {
  809.                                             MBTNC_AddButton = "XYZ"
  810.                                         },
  811.                                         {
  812.                                             MBTNC_AddButton = "XZY"
  813.                                         },
  814.                                         {
  815.                                             MBTNC_AddButton = "YXZ"
  816.                                         },
  817.                                         {
  818.                                             MBTNC_AddButton = "YZX"
  819.                                         },
  820.                                         {
  821.                                             MBTNC_AddButton = "ZXY"
  822.                                         },
  823.                                         {
  824.                                             MBTNC_AddButton = "ZYX"
  825.                                         },
  826.                                         LINKID_DataType = "FuID",
  827.                                         ICS_Name = "Rotation order",
  828.                                         MBTNC_StretchToFit = true,
  829.                                         INPID_InputControl = "MultiButtonIDControl",
  830.                                         INPID_DefaultID = "XYZ",
  831.                                         IC_ControlPage = 4,
  832.                                     },
  833.                                     CameraRx = {
  834.                                         LINKID_DataType = "Number",
  835.                                         ICS_Name = "X Rotation",
  836.                                         INP_Default = 0,
  837.                                         INP_MinScale = -180,
  838.                                         IC_ControlPage = 4,
  839.                                         INPID_InputControl = "ScrewControl",
  840.                                         INP_MaxScale = 180,
  841.                                         IC_Steps = 3601,
  842.                                     },
  843.                                     CameraRy = {
  844.                                         LINKID_DataType = "Number",
  845.                                         ICS_Name = "Y Rotation",
  846.                                         INP_Default = 0,
  847.                                         INP_MinScale = -180,
  848.                                         IC_ControlPage = 4,
  849.                                         INPID_InputControl = "ScrewControl",
  850.                                         INP_MaxScale = 180,
  851.                                         IC_Steps = 3601,
  852.                                     },
  853.                                     CameraRz = {
  854.                                         LINKID_DataType = "Number",
  855.                                         ICS_Name = "Z Rotation",
  856.                                         INP_Default = 0,
  857.                                         INP_MinScale = -180,
  858.                                         IC_ControlPage = 4,
  859.                                         INPID_InputControl = "ScrewControl",
  860.                                         INP_MaxScale = 180,
  861.                                         IC_Steps = 3601,
  862.                                     },
  863.                                     CameraSx = {
  864.                                         LINKID_DataType = "Number",
  865.                                         ICS_Name = "X Scale",
  866.                                         INP_Default = 1,
  867.                                         INP_MinScale = -3,
  868.                                         INPID_InputControl = "SliderControl",
  869.                                         INP_MaxScale = 3,
  870.                                         IC_ControlPage = 4,
  871.                                     },
  872.                                     CameraSy = {
  873.                                         LINKID_DataType = "Number",
  874.                                         ICS_Name = "Y Scale",
  875.                                         INP_Default = 1,
  876.                                         INP_MinScale = -3,
  877.                                         INPID_InputControl = "SliderControl",
  878.                                         INP_MaxScale = 3,
  879.                                         IC_ControlPage = 4,
  880.                                     },
  881.                                     CameraSz = {
  882.                                         LINKID_DataType = "Number",
  883.                                         ICS_Name = "Z Scale",
  884.                                         INP_Default = 1,
  885.                                         INP_MinScale = -3,
  886.                                         INPID_InputControl = "SliderControl",
  887.                                         INP_MaxScale = 3,
  888.                                         IC_ControlPage = 4,
  889.                                     },
  890.                                     CameraPx = {
  891.                                         LINKID_DataType = "Number",
  892.                                         ICS_Name = "X Pivot",
  893.                                         INP_Default = 0,
  894.                                         INP_MinScale = -1,
  895.                                         INPID_InputControl = "ScrewControl",
  896.                                         INP_MaxScale = 1,
  897.                                         IC_ControlPage = 4,
  898.                                     },
  899.                                     CameraPy = {
  900.                                         LINKID_DataType = "Number",
  901.                                         ICS_Name = "Y Pivot",
  902.                                         INP_Default = 0,
  903.                                         INP_MinScale = -1,
  904.                                         INPID_InputControl = "ScrewControl",
  905.                                         INP_MaxScale = 1,
  906.                                         IC_ControlPage = 4,
  907.                                     },
  908.                                     CameraPz = {
  909.                                         LINKID_DataType = "Number",
  910.                                         ICS_Name = "Z Pivot",
  911.                                         INP_Default = 0,
  912.                                         INP_MinScale = -1,
  913.                                         INPID_InputControl = "ScrewControl",
  914.                                         INP_MaxScale = 1,
  915.                                         IC_ControlPage = 4,
  916.                                     },
  917.                                     CameraLabel = {
  918.                                         IC_ControlPage = 1,
  919.                                         ICD_Width = 0.9,
  920.                                         INP_External = false,
  921.                                         INPID_InputControl = "LabelControl",
  922.                                         INP_Passive = true,
  923.                                         ICS_Name = "Camera",
  924.                                     },
  925.                                     CameraDeleteButton = {
  926.                                         INP_DoNotifyChanged = 1,
  927.                                         INP_External = 0,
  928.                                         LINKID_DataType = "Number",
  929.                                         ICD_Width = 0.1,
  930.                                         ICS_Name = "",
  931.                                         IC_ControlPage = 1,
  932.                                         MBTNC_ButtonHeight = 18,
  933.                                         INPID_InputControl = "MultiButtonControl",
  934.                                         MBTNC_AddButton = "X",
  935.                                         MBTNC_Type = "Toggle",
  936.                                     }
  937.                                 },
  938.                             }
  939.                         }
  940.                     },
  941.                     [3] = {
  942.                         Tools = ordered() {
  943.                             CustomShader3D1 = Indicated.CustomShaderOperator3D {
  944.                                 CtrlWZoom = false,
  945.                                 CustomData = {
  946.                                 },
  947.                                 Inputs = {
  948.                                     ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  949.                                     ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n return mul(Camera,float4(ChildMtl.Shade(f).rgb,1));\n}", },
  950.                                     MatrixGroup = Input { Value = 1, },
  951.                                     MaterialID = Input { Value = 2, },
  952.                                     ChildMtl = Input {
  953.                                         SourceOp = "posRGB",
  954.                                         Source = "Output",
  955.                                         CustomData = {
  956.                                             Metadata = {
  957.                                                 Type = "Material",
  958.                                                 Set = "ChildMtl"
  959.                                             }
  960.                                         },
  961.                                     },
  962.                                     CameraTx = Input {
  963.                                         CustomData = {
  964.                                             Metadata = {
  965.                                                 Type = "Matrix",
  966.                                                 Set = "Camera",
  967.                                                 Input = "Tx"
  968.                                             }
  969.                                         },
  970.                                         Expression = "Camera3D1.Transform3DOp.Translate.X",
  971.                                     },
  972.                                     CameraTy = Input {
  973.                                         Value = 0.9577465,
  974.                                         CustomData = {
  975.                                             Metadata = {
  976.                                                 Type = "Matrix",
  977.                                                 Set = "Camera",
  978.                                                 Input = "Ty"
  979.                                             }
  980.                                         },
  981.                                         Expression = "Camera3D1.Transform3DOp.Translate.Y",
  982.                                     },
  983.                                     CameraTz = Input {
  984.                                         Value = 14.3661972,
  985.                                         CustomData = {
  986.                                             Metadata = {
  987.                                                 Type = "Matrix",
  988.                                                 Set = "Camera",
  989.                                                 Input = "Tz"
  990.                                             }
  991.                                         },
  992.                                         Expression = "Camera3D1.Transform3DOp.Translate.Z",
  993.                                     },
  994.                                     CameraRotationOrder = Input {
  995.                                         CustomData = {
  996.                                             Metadata = {
  997.                                                 Type = "Matrix",
  998.                                                 Set = "Camera",
  999.                                                 Input = "RotationOrder"
  1000.                                             }
  1001.                                         },
  1002.                                     },
  1003.                                     CameraRx = Input {
  1004.                                         CustomData = {
  1005.                                             Metadata = {
  1006.                                                 Type = "Matrix",
  1007.                                                 Set = "Camera",
  1008.                                                 Input = "Rx"
  1009.                                             }
  1010.                                         },
  1011.                                         Expression = "Camera3D1.Transform3DOp.Rotate.X",
  1012.                                     },
  1013.                                     CameraRy = Input {
  1014.                                         CustomData = {
  1015.                                             Metadata = {
  1016.                                                 Type = "Matrix",
  1017.                                                 Set = "Camera",
  1018.                                                 Input = "Ry"
  1019.                                             }
  1020.                                         },
  1021.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  1022.                                     },
  1023.                                     CameraRz = Input {
  1024.                                         CustomData = {
  1025.                                             Metadata = {
  1026.                                                 Type = "Matrix",
  1027.                                                 Set = "Camera",
  1028.                                                 Input = "Rz"
  1029.                                             }
  1030.                                         },
  1031.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  1032.                                     },
  1033.                                     CameraSx = Input {
  1034.                                         CustomData = {
  1035.                                             Metadata = {
  1036.                                                 Type = "Matrix",
  1037.                                                 Set = "Camera",
  1038.                                                 Input = "Sx"
  1039.                                             }
  1040.                                         },
  1041.                                     },
  1042.                                     CameraSy = Input {
  1043.                                         CustomData = {
  1044.                                             Metadata = {
  1045.                                                 Type = "Matrix",
  1046.                                                 Set = "Camera",
  1047.                                                 Input = "Sy"
  1048.                                             }
  1049.                                         },
  1050.                                     },
  1051.                                     CameraSz = Input {
  1052.                                         CustomData = {
  1053.                                             Metadata = {
  1054.                                                 Type = "Matrix",
  1055.                                                 Set = "Camera",
  1056.                                                 Input = "Sz"
  1057.                                             }
  1058.                                         },
  1059.                                     },
  1060.                                     CameraPx = Input {
  1061.                                         CustomData = {
  1062.                                             Metadata = {
  1063.                                                 Type = "Matrix",
  1064.                                                 Set = "Camera",
  1065.                                                 Input = "Px"
  1066.                                             }
  1067.                                         },
  1068.                                     },
  1069.                                     CameraPy = Input {
  1070.                                         CustomData = {
  1071.                                             Metadata = {
  1072.                                                 Type = "Matrix",
  1073.                                                 Set = "Camera",
  1074.                                                 Input = "Py"
  1075.                                             }
  1076.                                         },
  1077.                                     },
  1078.                                     CameraPz = Input {
  1079.                                         CustomData = {
  1080.                                             Metadata = {
  1081.                                                 Type = "Matrix",
  1082.                                                 Set = "Camera",
  1083.                                                 Input = "Pz"
  1084.                                             }
  1085.                                         },
  1086.                                     },
  1087.                                 },
  1088.                                 ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  1089.                                 UserControls = ordered() {
  1090.                                     ChildMtl = {
  1091.                                         {
  1092.                                             LINKID_DataType = "MtlGraph3D"
  1093.                                         },
  1094.                                         {
  1095.                                             LINKID_DataType = "Image"
  1096.                                         },
  1097.                                         {
  1098.                                             LINKID_AllowedDataType = "Image"
  1099.                                         },
  1100.                                         {
  1101.                                             LINKID_AllowedDataType = "Mask"
  1102.                                         },
  1103.                                         INP_AcceptsGLImages = true,
  1104.                                         LINK_Main = 1,
  1105.                                         INP_AcceptsMasks = true,
  1106.                                         INPID_InputControl = "ImageControl",
  1107.                                         INP_Required = false,
  1108.                                         IC_ControlPage = 0,
  1109.                                     },
  1110.                                     ChildMtlLabel = {
  1111.                                         IC_ControlPage = 1,
  1112.                                         ICD_Width = 0.9,
  1113.                                         INP_External = false,
  1114.                                         INPID_InputControl = "LabelControl",
  1115.                                         ICS_Name = "ChildMtl",
  1116.                                         INP_Passive = true,
  1117.                                     },
  1118.                                     ChildMtlDeleteButton = {
  1119.                                         INP_DoNotifyChanged = 1,
  1120.                                         INP_External = 0,
  1121.                                         IC_ControlPage = 1,
  1122.                                         ICD_Width = 0.1,
  1123.                                         ICS_Name = "",
  1124.                                         LINKID_DataType = "Number",
  1125.                                         MBTNC_ButtonHeight = 18,
  1126.                                         INPID_InputControl = "MultiButtonControl",
  1127.                                         MBTNC_AddButton = "X",
  1128.                                         MBTNC_Type = "Toggle",
  1129.                                     },
  1130.                                     CameraTx = {
  1131.                                         LINKID_DataType = "Number",
  1132.                                         ICS_Name = "X Translation",
  1133.                                         INP_Default = 0,
  1134.                                         INP_MinScale = -0.5,
  1135.                                         INPID_InputControl = "ScrewControl",
  1136.                                         INP_MaxScale = 0.5,
  1137.                                         IC_ControlPage = 4,
  1138.                                     },
  1139.                                     CameraTy = {
  1140.                                         LINKID_DataType = "Number",
  1141.                                         ICS_Name = "Y Translation",
  1142.                                         INP_Default = 0,
  1143.                                         INP_MinScale = -0.5,
  1144.                                         INPID_InputControl = "ScrewControl",
  1145.                                         INP_MaxScale = 0.5,
  1146.                                         IC_ControlPage = 4,
  1147.                                     },
  1148.                                     CameraTz = {
  1149.                                         LINKID_DataType = "Number",
  1150.                                         ICS_Name = "Z Translation",
  1151.                                         INP_Default = 0,
  1152.                                         INP_MinScale = -0.5,
  1153.                                         INPID_InputControl = "ScrewControl",
  1154.                                         INP_MaxScale = 0.5,
  1155.                                         IC_ControlPage = 4,
  1156.                                     },
  1157.                                     CameraRotationOrder = {
  1158.                                         {
  1159.                                             MBTNC_AddButton = "XYZ"
  1160.                                         },
  1161.                                         {
  1162.                                             MBTNC_AddButton = "XZY"
  1163.                                         },
  1164.                                         {
  1165.                                             MBTNC_AddButton = "YXZ"
  1166.                                         },
  1167.                                         {
  1168.                                             MBTNC_AddButton = "YZX"
  1169.                                         },
  1170.                                         {
  1171.                                             MBTNC_AddButton = "ZXY"
  1172.                                         },
  1173.                                         {
  1174.                                             MBTNC_AddButton = "ZYX"
  1175.                                         },
  1176.                                         LINKID_DataType = "FuID",
  1177.                                         ICS_Name = "Rotation order",
  1178.                                         MBTNC_StretchToFit = true,
  1179.                                         INPID_InputControl = "MultiButtonIDControl",
  1180.                                         INPID_DefaultID = "XYZ",
  1181.                                         IC_ControlPage = 4,
  1182.                                     },
  1183.                                     CameraRx = {
  1184.                                         LINKID_DataType = "Number",
  1185.                                         ICS_Name = "X Rotation",
  1186.                                         INP_Default = 0,
  1187.                                         INP_MinScale = -180,
  1188.                                         IC_ControlPage = 4,
  1189.                                         INPID_InputControl = "ScrewControl",
  1190.                                         INP_MaxScale = 180,
  1191.                                         IC_Steps = 3601,
  1192.                                     },
  1193.                                     CameraRy = {
  1194.                                         LINKID_DataType = "Number",
  1195.                                         ICS_Name = "Y Rotation",
  1196.                                         INP_Default = 0,
  1197.                                         INP_MinScale = -180,
  1198.                                         IC_ControlPage = 4,
  1199.                                         INPID_InputControl = "ScrewControl",
  1200.                                         INP_MaxScale = 180,
  1201.                                         IC_Steps = 3601,
  1202.                                     },
  1203.                                     CameraRz = {
  1204.                                         LINKID_DataType = "Number",
  1205.                                         ICS_Name = "Z Rotation",
  1206.                                         INP_Default = 0,
  1207.                                         INP_MinScale = -180,
  1208.                                         IC_ControlPage = 4,
  1209.                                         INPID_InputControl = "ScrewControl",
  1210.                                         INP_MaxScale = 180,
  1211.                                         IC_Steps = 3601,
  1212.                                     },
  1213.                                     CameraSx = {
  1214.                                         LINKID_DataType = "Number",
  1215.                                         ICS_Name = "X Scale",
  1216.                                         INP_Default = 1,
  1217.                                         INP_MinScale = -3,
  1218.                                         INPID_InputControl = "SliderControl",
  1219.                                         INP_MaxScale = 3,
  1220.                                         IC_ControlPage = 4,
  1221.                                     },
  1222.                                     CameraSy = {
  1223.                                         LINKID_DataType = "Number",
  1224.                                         ICS_Name = "Y Scale",
  1225.                                         INP_Default = 1,
  1226.                                         INP_MinScale = -3,
  1227.                                         INPID_InputControl = "SliderControl",
  1228.                                         INP_MaxScale = 3,
  1229.                                         IC_ControlPage = 4,
  1230.                                     },
  1231.                                     CameraSz = {
  1232.                                         LINKID_DataType = "Number",
  1233.                                         ICS_Name = "Z Scale",
  1234.                                         INP_Default = 1,
  1235.                                         INP_MinScale = -3,
  1236.                                         INPID_InputControl = "SliderControl",
  1237.                                         INP_MaxScale = 3,
  1238.                                         IC_ControlPage = 4,
  1239.                                     },
  1240.                                     CameraPx = {
  1241.                                         LINKID_DataType = "Number",
  1242.                                         ICS_Name = "X Pivot",
  1243.                                         INP_Default = 0,
  1244.                                         INP_MinScale = -1,
  1245.                                         INPID_InputControl = "ScrewControl",
  1246.                                         INP_MaxScale = 1,
  1247.                                         IC_ControlPage = 4,
  1248.                                     },
  1249.                                     CameraPy = {
  1250.                                         LINKID_DataType = "Number",
  1251.                                         ICS_Name = "Y Pivot",
  1252.                                         INP_Default = 0,
  1253.                                         INP_MinScale = -1,
  1254.                                         INPID_InputControl = "ScrewControl",
  1255.                                         INP_MaxScale = 1,
  1256.                                         IC_ControlPage = 4,
  1257.                                     },
  1258.                                     CameraPz = {
  1259.                                         LINKID_DataType = "Number",
  1260.                                         ICS_Name = "Z Pivot",
  1261.                                         INP_Default = 0,
  1262.                                         INP_MinScale = -1,
  1263.                                         INPID_InputControl = "ScrewControl",
  1264.                                         INP_MaxScale = 1,
  1265.                                         IC_ControlPage = 4,
  1266.                                     },
  1267.                                     CameraLabel = {
  1268.                                         IC_ControlPage = 1,
  1269.                                         ICD_Width = 0.9,
  1270.                                         INP_External = false,
  1271.                                         INPID_InputControl = "LabelControl",
  1272.                                         INP_Passive = true,
  1273.                                         ICS_Name = "Camera",
  1274.                                     },
  1275.                                     CameraDeleteButton = {
  1276.                                         INP_DoNotifyChanged = 1,
  1277.                                         INP_External = 0,
  1278.                                         LINKID_DataType = "Number",
  1279.                                         ICD_Width = 0.1,
  1280.                                         ICS_Name = "",
  1281.                                         IC_ControlPage = 1,
  1282.                                         MBTNC_ButtonHeight = 18,
  1283.                                         INPID_InputControl = "MultiButtonControl",
  1284.                                         MBTNC_AddButton = "X",
  1285.                                         MBTNC_Type = "Toggle",
  1286.                                     }
  1287.                                 }
  1288.                             }
  1289.                         }
  1290.                     },
  1291.                     [4] = {
  1292.                         Tools = ordered() {
  1293.                             CustomShader3D1 = Indicated.CustomShaderOperator3D {
  1294.                                 CtrlWZoom = false,
  1295.                                 CustomData = {
  1296.                                 },
  1297.                                 Inputs = {
  1298.                                     ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  1299.                                     ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n return mul(inverse(Camera),float4(ChildMtl.Shade(f).rgb,1));\n}", },
  1300.                                     MatrixGroup = Input { Value = 1, },
  1301.                                     MaterialID = Input { Value = 2, },
  1302.                                     ChildMtl = Input {
  1303.                                         SourceOp = "posRGB",
  1304.                                         Source = "Output",
  1305.                                         CustomData = {
  1306.                                             Metadata = {
  1307.                                                 Type = "Material",
  1308.                                                 Set = "ChildMtl"
  1309.                                             }
  1310.                                         },
  1311.                                     },
  1312.                                     CameraTx = Input {
  1313.                                         CustomData = {
  1314.                                             Metadata = {
  1315.                                                 Type = "Matrix",
  1316.                                                 Set = "Camera",
  1317.                                                 Input = "Tx"
  1318.                                             }
  1319.                                         },
  1320.                                         Expression = "Camera3D1.Transform3DOp.Translate.X",
  1321.                                     },
  1322.                                     CameraTy = Input {
  1323.                                         Value = 0.9577465,
  1324.                                         CustomData = {
  1325.                                             Metadata = {
  1326.                                                 Type = "Matrix",
  1327.                                                 Set = "Camera",
  1328.                                                 Input = "Ty"
  1329.                                             }
  1330.                                         },
  1331.                                         Expression = "Camera3D1.Transform3DOp.Translate.Y",
  1332.                                     },
  1333.                                     CameraTz = Input {
  1334.                                         Value = 14.3661972,
  1335.                                         CustomData = {
  1336.                                             Metadata = {
  1337.                                                 Type = "Matrix",
  1338.                                                 Set = "Camera",
  1339.                                                 Input = "Tz"
  1340.                                             }
  1341.                                         },
  1342.                                         Expression = "Camera3D1.Transform3DOp.Translate.Z",
  1343.                                     },
  1344.                                     CameraRotationOrder = Input {
  1345.                                         CustomData = {
  1346.                                             Metadata = {
  1347.                                                 Type = "Matrix",
  1348.                                                 Set = "Camera",
  1349.                                                 Input = "RotationOrder"
  1350.                                             }
  1351.                                         },
  1352.                                     },
  1353.                                     CameraRx = Input {
  1354.                                         CustomData = {
  1355.                                             Metadata = {
  1356.                                                 Type = "Matrix",
  1357.                                                 Set = "Camera",
  1358.                                                 Input = "Rx"
  1359.                                             }
  1360.                                         },
  1361.                                         Expression = "Camera3D1.Transform3DOp.Rotate.X",
  1362.                                     },
  1363.                                     CameraRy = Input {
  1364.                                         CustomData = {
  1365.                                             Metadata = {
  1366.                                                 Type = "Matrix",
  1367.                                                 Set = "Camera",
  1368.                                                 Input = "Ry"
  1369.                                             }
  1370.                                         },
  1371.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  1372.                                     },
  1373.                                     CameraRz = Input {
  1374.                                         CustomData = {
  1375.                                             Metadata = {
  1376.                                                 Type = "Matrix",
  1377.                                                 Set = "Camera",
  1378.                                                 Input = "Rz"
  1379.                                             }
  1380.                                         },
  1381.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  1382.                                     },
  1383.                                     CameraSx = Input {
  1384.                                         CustomData = {
  1385.                                             Metadata = {
  1386.                                                 Type = "Matrix",
  1387.                                                 Set = "Camera",
  1388.                                                 Input = "Sx"
  1389.                                             }
  1390.                                         },
  1391.                                     },
  1392.                                     CameraSy = Input {
  1393.                                         CustomData = {
  1394.                                             Metadata = {
  1395.                                                 Type = "Matrix",
  1396.                                                 Set = "Camera",
  1397.                                                 Input = "Sy"
  1398.                                             }
  1399.                                         },
  1400.                                     },
  1401.                                     CameraSz = Input {
  1402.                                         CustomData = {
  1403.                                             Metadata = {
  1404.                                                 Type = "Matrix",
  1405.                                                 Set = "Camera",
  1406.                                                 Input = "Sz"
  1407.                                             }
  1408.                                         },
  1409.                                     },
  1410.                                     CameraPx = Input {
  1411.                                         CustomData = {
  1412.                                             Metadata = {
  1413.                                                 Type = "Matrix",
  1414.                                                 Set = "Camera",
  1415.                                                 Input = "Px"
  1416.                                             }
  1417.                                         },
  1418.                                     },
  1419.                                     CameraPy = Input {
  1420.                                         CustomData = {
  1421.                                             Metadata = {
  1422.                                                 Type = "Matrix",
  1423.                                                 Set = "Camera",
  1424.                                                 Input = "Py"
  1425.                                             }
  1426.                                         },
  1427.                                     },
  1428.                                     CameraPz = Input {
  1429.                                         CustomData = {
  1430.                                             Metadata = {
  1431.                                                 Type = "Matrix",
  1432.                                                 Set = "Camera",
  1433.                                                 Input = "Pz"
  1434.                                             }
  1435.                                         },
  1436.                                     },
  1437.                                 },
  1438.                                 ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  1439.                                 UserControls = ordered() {
  1440.                                     ChildMtl = {
  1441.                                         {
  1442.                                             LINKID_DataType = "MtlGraph3D"
  1443.                                         },
  1444.                                         {
  1445.                                             LINKID_DataType = "Image"
  1446.                                         },
  1447.                                         {
  1448.                                             LINKID_AllowedDataType = "Image"
  1449.                                         },
  1450.                                         {
  1451.                                             LINKID_AllowedDataType = "Mask"
  1452.                                         },
  1453.                                         INP_AcceptsGLImages = true,
  1454.                                         LINK_Main = 1,
  1455.                                         INP_AcceptsMasks = true,
  1456.                                         INPID_InputControl = "ImageControl",
  1457.                                         INP_Required = false,
  1458.                                         IC_ControlPage = 0,
  1459.                                     },
  1460.                                     ChildMtlLabel = {
  1461.                                         IC_ControlPage = 1,
  1462.                                         ICD_Width = 0.9,
  1463.                                         INP_External = false,
  1464.                                         INPID_InputControl = "LabelControl",
  1465.                                         ICS_Name = "ChildMtl",
  1466.                                         INP_Passive = true,
  1467.                                     },
  1468.                                     ChildMtlDeleteButton = {
  1469.                                         INP_DoNotifyChanged = 1,
  1470.                                         INP_External = 0,
  1471.                                         IC_ControlPage = 1,
  1472.                                         ICD_Width = 0.1,
  1473.                                         ICS_Name = "",
  1474.                                         LINKID_DataType = "Number",
  1475.                                         MBTNC_ButtonHeight = 18,
  1476.                                         INPID_InputControl = "MultiButtonControl",
  1477.                                         MBTNC_AddButton = "X",
  1478.                                         MBTNC_Type = "Toggle",
  1479.                                     },
  1480.                                     CameraTx = {
  1481.                                         LINKID_DataType = "Number",
  1482.                                         ICS_Name = "X Translation",
  1483.                                         INP_Default = 0,
  1484.                                         INP_MinScale = -0.5,
  1485.                                         INPID_InputControl = "ScrewControl",
  1486.                                         INP_MaxScale = 0.5,
  1487.                                         IC_ControlPage = 4,
  1488.                                     },
  1489.                                     CameraTy = {
  1490.                                         LINKID_DataType = "Number",
  1491.                                         ICS_Name = "Y Translation",
  1492.                                         INP_Default = 0,
  1493.                                         INP_MinScale = -0.5,
  1494.                                         INPID_InputControl = "ScrewControl",
  1495.                                         INP_MaxScale = 0.5,
  1496.                                         IC_ControlPage = 4,
  1497.                                     },
  1498.                                     CameraTz = {
  1499.                                         LINKID_DataType = "Number",
  1500.                                         ICS_Name = "Z Translation",
  1501.                                         INP_Default = 0,
  1502.                                         INP_MinScale = -0.5,
  1503.                                         INPID_InputControl = "ScrewControl",
  1504.                                         INP_MaxScale = 0.5,
  1505.                                         IC_ControlPage = 4,
  1506.                                     },
  1507.                                     CameraRotationOrder = {
  1508.                                         {
  1509.                                             MBTNC_AddButton = "XYZ"
  1510.                                         },
  1511.                                         {
  1512.                                             MBTNC_AddButton = "XZY"
  1513.                                         },
  1514.                                         {
  1515.                                             MBTNC_AddButton = "YXZ"
  1516.                                         },
  1517.                                         {
  1518.                                             MBTNC_AddButton = "YZX"
  1519.                                         },
  1520.                                         {
  1521.                                             MBTNC_AddButton = "ZXY"
  1522.                                         },
  1523.                                         {
  1524.                                             MBTNC_AddButton = "ZYX"
  1525.                                         },
  1526.                                         LINKID_DataType = "FuID",
  1527.                                         ICS_Name = "Rotation order",
  1528.                                         MBTNC_StretchToFit = true,
  1529.                                         INPID_InputControl = "MultiButtonIDControl",
  1530.                                         INPID_DefaultID = "XYZ",
  1531.                                         IC_ControlPage = 4,
  1532.                                     },
  1533.                                     CameraRx = {
  1534.                                         LINKID_DataType = "Number",
  1535.                                         ICS_Name = "X Rotation",
  1536.                                         INP_Default = 0,
  1537.                                         INP_MinScale = -180,
  1538.                                         IC_ControlPage = 4,
  1539.                                         INPID_InputControl = "ScrewControl",
  1540.                                         INP_MaxScale = 180,
  1541.                                         IC_Steps = 3601,
  1542.                                     },
  1543.                                     CameraRy = {
  1544.                                         LINKID_DataType = "Number",
  1545.                                         ICS_Name = "Y Rotation",
  1546.                                         INP_Default = 0,
  1547.                                         INP_MinScale = -180,
  1548.                                         IC_ControlPage = 4,
  1549.                                         INPID_InputControl = "ScrewControl",
  1550.                                         INP_MaxScale = 180,
  1551.                                         IC_Steps = 3601,
  1552.                                     },
  1553.                                     CameraRz = {
  1554.                                         LINKID_DataType = "Number",
  1555.                                         ICS_Name = "Z Rotation",
  1556.                                         INP_Default = 0,
  1557.                                         INP_MinScale = -180,
  1558.                                         IC_ControlPage = 4,
  1559.                                         INPID_InputControl = "ScrewControl",
  1560.                                         INP_MaxScale = 180,
  1561.                                         IC_Steps = 3601,
  1562.                                     },
  1563.                                     CameraSx = {
  1564.                                         LINKID_DataType = "Number",
  1565.                                         ICS_Name = "X Scale",
  1566.                                         INP_Default = 1,
  1567.                                         INP_MinScale = -3,
  1568.                                         INPID_InputControl = "SliderControl",
  1569.                                         INP_MaxScale = 3,
  1570.                                         IC_ControlPage = 4,
  1571.                                     },
  1572.                                     CameraSy = {
  1573.                                         LINKID_DataType = "Number",
  1574.                                         ICS_Name = "Y Scale",
  1575.                                         INP_Default = 1,
  1576.                                         INP_MinScale = -3,
  1577.                                         INPID_InputControl = "SliderControl",
  1578.                                         INP_MaxScale = 3,
  1579.                                         IC_ControlPage = 4,
  1580.                                     },
  1581.                                     CameraSz = {
  1582.                                         LINKID_DataType = "Number",
  1583.                                         ICS_Name = "Z Scale",
  1584.                                         INP_Default = 1,
  1585.                                         INP_MinScale = -3,
  1586.                                         INPID_InputControl = "SliderControl",
  1587.                                         INP_MaxScale = 3,
  1588.                                         IC_ControlPage = 4,
  1589.                                     },
  1590.                                     CameraPx = {
  1591.                                         LINKID_DataType = "Number",
  1592.                                         ICS_Name = "X Pivot",
  1593.                                         INP_Default = 0,
  1594.                                         INP_MinScale = -1,
  1595.                                         INPID_InputControl = "ScrewControl",
  1596.                                         INP_MaxScale = 1,
  1597.                                         IC_ControlPage = 4,
  1598.                                     },
  1599.                                     CameraPy = {
  1600.                                         LINKID_DataType = "Number",
  1601.                                         ICS_Name = "Y Pivot",
  1602.                                         INP_Default = 0,
  1603.                                         INP_MinScale = -1,
  1604.                                         INPID_InputControl = "ScrewControl",
  1605.                                         INP_MaxScale = 1,
  1606.                                         IC_ControlPage = 4,
  1607.                                     },
  1608.                                     CameraPz = {
  1609.                                         LINKID_DataType = "Number",
  1610.                                         ICS_Name = "Z Pivot",
  1611.                                         INP_Default = 0,
  1612.                                         INP_MinScale = -1,
  1613.                                         INPID_InputControl = "ScrewControl",
  1614.                                         INP_MaxScale = 1,
  1615.                                         IC_ControlPage = 4,
  1616.                                     },
  1617.                                     CameraLabel = {
  1618.                                         IC_ControlPage = 1,
  1619.                                         ICD_Width = 0.9,
  1620.                                         INP_External = false,
  1621.                                         INPID_InputControl = "LabelControl",
  1622.                                         INP_Passive = true,
  1623.                                         ICS_Name = "Camera",
  1624.                                     },
  1625.                                     CameraDeleteButton = {
  1626.                                         INP_DoNotifyChanged = 1,
  1627.                                         INP_External = 0,
  1628.                                         LINKID_DataType = "Number",
  1629.                                         ICD_Width = 0.1,
  1630.                                         ICS_Name = "",
  1631.                                         IC_ControlPage = 1,
  1632.                                         MBTNC_ButtonHeight = 18,
  1633.                                         INPID_InputControl = "MultiButtonControl",
  1634.                                         MBTNC_AddButton = "X",
  1635.                                         MBTNC_Type = "Toggle",
  1636.                                     }
  1637.                                 }
  1638.                             }
  1639.                         }
  1640.                     },
  1641.                     [5] = {
  1642.                         Tools = ordered() {
  1643.                             CustomShader3D1 = Indicated.CustomShaderOperator3D {
  1644.                                 CtrlWZoom = false,
  1645.                                 CustomData = {
  1646.                                 },
  1647.                                 Inputs = {
  1648.                                     ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  1649.                                     ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n return mul(inverse(Camera),float4(ChildMtl.Shade(f).rgb,1));\n}", },
  1650.                                     MatrixGroup = Input { Value = 1, },
  1651.                                     MaterialID = Input { Value = 2, },
  1652.                                     ChildMtl = Input {
  1653.                                         SourceOp = "posRGB",
  1654.                                         Source = "Output",
  1655.                                         CustomData = {
  1656.                                             Metadata = {
  1657.                                                 Type = "Material",
  1658.                                                 Set = "ChildMtl"
  1659.                                             }
  1660.                                         },
  1661.                                     },
  1662.                                     CameraTx = Input {
  1663.                                         CustomData = {
  1664.                                             Metadata = {
  1665.                                                 Type = "Matrix",
  1666.                                                 Set = "Camera",
  1667.                                                 Input = "Tx"
  1668.                                             }
  1669.                                         },
  1670.                                         Expression = "Camera3D1.Transform3DOp.Translate.X",
  1671.                                     },
  1672.                                     CameraTy = Input {
  1673.                                         Value = 0.9577465,
  1674.                                         CustomData = {
  1675.                                             Metadata = {
  1676.                                                 Type = "Matrix",
  1677.                                                 Set = "Camera",
  1678.                                                 Input = "Ty"
  1679.                                             }
  1680.                                         },
  1681.                                         Expression = "Camera3D1.Transform3DOp.Translate.Y",
  1682.                                     },
  1683.                                     CameraTz = Input {
  1684.                                         Value = 14.3661972,
  1685.                                         CustomData = {
  1686.                                             Metadata = {
  1687.                                                 Type = "Matrix",
  1688.                                                 Set = "Camera",
  1689.                                                 Input = "Tz"
  1690.                                             }
  1691.                                         },
  1692.                                         Expression = "Camera3D1.Transform3DOp.Translate.Z",
  1693.                                     },
  1694.                                     CameraRotationOrder = Input {
  1695.                                         CustomData = {
  1696.                                             Metadata = {
  1697.                                                 Type = "Matrix",
  1698.                                                 Set = "Camera",
  1699.                                                 Input = "RotationOrder"
  1700.                                             }
  1701.                                         },
  1702.                                     },
  1703.                                     CameraRx = Input {
  1704.                                         CustomData = {
  1705.                                             Metadata = {
  1706.                                                 Type = "Matrix",
  1707.                                                 Set = "Camera",
  1708.                                                 Input = "Rx"
  1709.                                             }
  1710.                                         },
  1711.                                         Expression = "Camera3D1.Transform3DOp.Rotate.X",
  1712.                                     },
  1713.                                     CameraRy = Input {
  1714.                                         CustomData = {
  1715.                                             Metadata = {
  1716.                                                 Type = "Matrix",
  1717.                                                 Set = "Camera",
  1718.                                                 Input = "Ry"
  1719.                                             }
  1720.                                         },
  1721.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  1722.                                     },
  1723.                                     CameraRz = Input {
  1724.                                         CustomData = {
  1725.                                             Metadata = {
  1726.                                                 Type = "Matrix",
  1727.                                                 Set = "Camera",
  1728.                                                 Input = "Rz"
  1729.                                             }
  1730.                                         },
  1731.                                         Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  1732.                                     },
  1733.                                     CameraSx = Input {
  1734.                                         CustomData = {
  1735.                                             Metadata = {
  1736.                                                 Type = "Matrix",
  1737.                                                 Set = "Camera",
  1738.                                                 Input = "Sx"
  1739.                                             }
  1740.                                         },
  1741.                                     },
  1742.                                     CameraSy = Input {
  1743.                                         CustomData = {
  1744.                                             Metadata = {
  1745.                                                 Type = "Matrix",
  1746.                                                 Set = "Camera",
  1747.                                                 Input = "Sy"
  1748.                                             }
  1749.                                         },
  1750.                                     },
  1751.                                     CameraSz = Input {
  1752.                                         CustomData = {
  1753.                                             Metadata = {
  1754.                                                 Type = "Matrix",
  1755.                                                 Set = "Camera",
  1756.                                                 Input = "Sz"
  1757.                                             }
  1758.                                         },
  1759.                                     },
  1760.                                     CameraPx = Input {
  1761.                                         CustomData = {
  1762.                                             Metadata = {
  1763.                                                 Type = "Matrix",
  1764.                                                 Set = "Camera",
  1765.                                                 Input = "Px"
  1766.                                             }
  1767.                                         },
  1768.                                     },
  1769.                                     CameraPy = Input {
  1770.                                         CustomData = {
  1771.                                             Metadata = {
  1772.                                                 Type = "Matrix",
  1773.                                                 Set = "Camera",
  1774.                                                 Input = "Py"
  1775.                                             }
  1776.                                         },
  1777.                                     },
  1778.                                     CameraPz = Input {
  1779.                                         CustomData = {
  1780.                                             Metadata = {
  1781.                                                 Type = "Matrix",
  1782.                                                 Set = "Camera",
  1783.                                                 Input = "Pz"
  1784.                                             }
  1785.                                         },
  1786.                                     },
  1787.                                 },
  1788.                                 ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  1789.                                 UserControls = ordered() {
  1790.                                     ChildMtl = {
  1791.                                         {
  1792.                                             LINKID_DataType = "MtlGraph3D"
  1793.                                         },
  1794.                                         {
  1795.                                             LINKID_DataType = "Image"
  1796.                                         },
  1797.                                         {
  1798.                                             LINKID_AllowedDataType = "Image"
  1799.                                         },
  1800.                                         {
  1801.                                             LINKID_AllowedDataType = "Mask"
  1802.                                         },
  1803.                                         INP_AcceptsGLImages = true,
  1804.                                         LINK_Main = 1,
  1805.                                         INP_AcceptsMasks = true,
  1806.                                         INPID_InputControl = "ImageControl",
  1807.                                         INP_Required = false,
  1808.                                         IC_ControlPage = 0,
  1809.                                     },
  1810.                                     ChildMtlLabel = {
  1811.                                         IC_ControlPage = 1,
  1812.                                         ICD_Width = 0.9,
  1813.                                         INP_External = false,
  1814.                                         INPID_InputControl = "LabelControl",
  1815.                                         ICS_Name = "ChildMtl",
  1816.                                         INP_Passive = true,
  1817.                                     },
  1818.                                     ChildMtlDeleteButton = {
  1819.                                         INP_DoNotifyChanged = 1,
  1820.                                         INP_External = 0,
  1821.                                         IC_ControlPage = 1,
  1822.                                         ICD_Width = 0.1,
  1823.                                         ICS_Name = "",
  1824.                                         LINKID_DataType = "Number",
  1825.                                         MBTNC_ButtonHeight = 18,
  1826.                                         INPID_InputControl = "MultiButtonControl",
  1827.                                         MBTNC_AddButton = "X",
  1828.                                         MBTNC_Type = "Toggle",
  1829.                                     },
  1830.                                     CameraTx = {
  1831.                                         LINKID_DataType = "Number",
  1832.                                         ICS_Name = "X Translation",
  1833.                                         INP_Default = 0,
  1834.                                         INP_MinScale = -0.5,
  1835.                                         INPID_InputControl = "ScrewControl",
  1836.                                         INP_MaxScale = 0.5,
  1837.                                         IC_ControlPage = 4,
  1838.                                     },
  1839.                                     CameraTy = {
  1840.                                         LINKID_DataType = "Number",
  1841.                                         ICS_Name = "Y Translation",
  1842.                                         INP_Default = 0,
  1843.                                         INP_MinScale = -0.5,
  1844.                                         INPID_InputControl = "ScrewControl",
  1845.                                         INP_MaxScale = 0.5,
  1846.                                         IC_ControlPage = 4,
  1847.                                     },
  1848.                                     CameraTz = {
  1849.                                         LINKID_DataType = "Number",
  1850.                                         ICS_Name = "Z Translation",
  1851.                                         INP_Default = 0,
  1852.                                         INP_MinScale = -0.5,
  1853.                                         INPID_InputControl = "ScrewControl",
  1854.                                         INP_MaxScale = 0.5,
  1855.                                         IC_ControlPage = 4,
  1856.                                     },
  1857.                                     CameraRotationOrder = {
  1858.                                         {
  1859.                                             MBTNC_AddButton = "XYZ"
  1860.                                         },
  1861.                                         {
  1862.                                             MBTNC_AddButton = "XZY"
  1863.                                         },
  1864.                                         {
  1865.                                             MBTNC_AddButton = "YXZ"
  1866.                                         },
  1867.                                         {
  1868.                                             MBTNC_AddButton = "YZX"
  1869.                                         },
  1870.                                         {
  1871.                                             MBTNC_AddButton = "ZXY"
  1872.                                         },
  1873.                                         {
  1874.                                             MBTNC_AddButton = "ZYX"
  1875.                                         },
  1876.                                         LINKID_DataType = "FuID",
  1877.                                         ICS_Name = "Rotation order",
  1878.                                         MBTNC_StretchToFit = true,
  1879.                                         INPID_InputControl = "MultiButtonIDControl",
  1880.                                         INPID_DefaultID = "XYZ",
  1881.                                         IC_ControlPage = 4,
  1882.                                     },
  1883.                                     CameraRx = {
  1884.                                         LINKID_DataType = "Number",
  1885.                                         ICS_Name = "X Rotation",
  1886.                                         INP_Default = 0,
  1887.                                         INP_MinScale = -180,
  1888.                                         IC_ControlPage = 4,
  1889.                                         INPID_InputControl = "ScrewControl",
  1890.                                         INP_MaxScale = 180,
  1891.                                         IC_Steps = 3601,
  1892.                                     },
  1893.                                     CameraRy = {
  1894.                                         LINKID_DataType = "Number",
  1895.                                         ICS_Name = "Y Rotation",
  1896.                                         INP_Default = 0,
  1897.                                         INP_MinScale = -180,
  1898.                                         IC_ControlPage = 4,
  1899.                                         INPID_InputControl = "ScrewControl",
  1900.                                         INP_MaxScale = 180,
  1901.                                         IC_Steps = 3601,
  1902.                                     },
  1903.                                     CameraRz = {
  1904.                                         LINKID_DataType = "Number",
  1905.                                         ICS_Name = "Z Rotation",
  1906.                                         INP_Default = 0,
  1907.                                         INP_MinScale = -180,
  1908.                                         IC_ControlPage = 4,
  1909.                                         INPID_InputControl = "ScrewControl",
  1910.                                         INP_MaxScale = 180,
  1911.                                         IC_Steps = 3601,
  1912.                                     },
  1913.                                     CameraSx = {
  1914.                                         LINKID_DataType = "Number",
  1915.                                         ICS_Name = "X Scale",
  1916.                                         INP_Default = 1,
  1917.                                         INP_MinScale = -3,
  1918.                                         INPID_InputControl = "SliderControl",
  1919.                                         INP_MaxScale = 3,
  1920.                                         IC_ControlPage = 4,
  1921.                                     },
  1922.                                     CameraSy = {
  1923.                                         LINKID_DataType = "Number",
  1924.                                         ICS_Name = "Y Scale",
  1925.                                         INP_Default = 1,
  1926.                                         INP_MinScale = -3,
  1927.                                         INPID_InputControl = "SliderControl",
  1928.                                         INP_MaxScale = 3,
  1929.                                         IC_ControlPage = 4,
  1930.                                     },
  1931.                                     CameraSz = {
  1932.                                         LINKID_DataType = "Number",
  1933.                                         ICS_Name = "Z Scale",
  1934.                                         INP_Default = 1,
  1935.                                         INP_MinScale = -3,
  1936.                                         INPID_InputControl = "SliderControl",
  1937.                                         INP_MaxScale = 3,
  1938.                                         IC_ControlPage = 4,
  1939.                                     },
  1940.                                     CameraPx = {
  1941.                                         LINKID_DataType = "Number",
  1942.                                         ICS_Name = "X Pivot",
  1943.                                         INP_Default = 0,
  1944.                                         INP_MinScale = -1,
  1945.                                         INPID_InputControl = "ScrewControl",
  1946.                                         INP_MaxScale = 1,
  1947.                                         IC_ControlPage = 4,
  1948.                                     },
  1949.                                     CameraPy = {
  1950.                                         LINKID_DataType = "Number",
  1951.                                         ICS_Name = "Y Pivot",
  1952.                                         INP_Default = 0,
  1953.                                         INP_MinScale = -1,
  1954.                                         INPID_InputControl = "ScrewControl",
  1955.                                         INP_MaxScale = 1,
  1956.                                         IC_ControlPage = 4,
  1957.                                     },
  1958.                                     CameraPz = {
  1959.                                         LINKID_DataType = "Number",
  1960.                                         ICS_Name = "Z Pivot",
  1961.                                         INP_Default = 0,
  1962.                                         INP_MinScale = -1,
  1963.                                         INPID_InputControl = "ScrewControl",
  1964.                                         INP_MaxScale = 1,
  1965.                                         IC_ControlPage = 4,
  1966.                                     },
  1967.                                     CameraLabel = {
  1968.                                         IC_ControlPage = 1,
  1969.                                         ICD_Width = 0.9,
  1970.                                         INP_External = false,
  1971.                                         INPID_InputControl = "LabelControl",
  1972.                                         INP_Passive = true,
  1973.                                         ICS_Name = "Camera",
  1974.                                     },
  1975.                                     CameraDeleteButton = {
  1976.                                         INP_DoNotifyChanged = 1,
  1977.                                         INP_External = 0,
  1978.                                         LINKID_DataType = "Number",
  1979.                                         ICD_Width = 0.1,
  1980.                                         ICS_Name = "",
  1981.                                         IC_ControlPage = 1,
  1982.                                         MBTNC_ButtonHeight = 18,
  1983.                                         INPID_InputControl = "MultiButtonControl",
  1984.                                         MBTNC_AddButton = "X",
  1985.                                         MBTNC_Type = "Toggle",
  1986.                                     }
  1987.                                 }
  1988.                             }
  1989.                         }
  1990.                     },
  1991.                 }
  1992.             },
  1993.             Inputs = {
  1994.                 ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat4x4 Camera;\n\n", },
  1995.                 ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n float4 viewSpace = -mul(inverse(Camera),float4(ChildMtl.Shade(f).rgb,1));\n return float4(viewSpace.b,viewSpace.b,viewSpace.b,1);\n}", },
  1996.                 MatrixGroup = Input { Value = 1, },
  1997.                 MaterialID = Input { Value = 2, },
  1998.                 ChildMtl = Input {
  1999.                     SourceOp = "posRGB",
  2000.                     Source = "Output",
  2001.                     CustomData = {
  2002.                         Metadata = {
  2003.                             Type = "Material",
  2004.                             Set = "ChildMtl"
  2005.                         }
  2006.                     },
  2007.                 },
  2008.                 CameraTx = Input {
  2009.                     CustomData = {
  2010.                         Metadata = {
  2011.                             Type = "Matrix",
  2012.                             Set = "Camera",
  2013.                             Input = "Tx"
  2014.                         }
  2015.                     },
  2016.                     Expression = "Camera3D1.Transform3DOp.Translate.X",
  2017.                 },
  2018.                 CameraTy = Input {
  2019.                     Value = 0.9577465,
  2020.                     CustomData = {
  2021.                         Metadata = {
  2022.                             Type = "Matrix",
  2023.                             Set = "Camera",
  2024.                             Input = "Ty"
  2025.                         }
  2026.                     },
  2027.                     Expression = "Camera3D1.Transform3DOp.Translate.Y",
  2028.                 },
  2029.                 CameraTz = Input {
  2030.                     Value = 14.3661972,
  2031.                     CustomData = {
  2032.                         Metadata = {
  2033.                             Type = "Matrix",
  2034.                             Set = "Camera",
  2035.                             Input = "Tz"
  2036.                         }
  2037.                     },
  2038.                     Expression = "Camera3D1.Transform3DOp.Translate.Z",
  2039.                 },
  2040.                 CameraRotationOrder = Input {
  2041.                     CustomData = {
  2042.                         Metadata = {
  2043.                             Type = "Matrix",
  2044.                             Set = "Camera",
  2045.                             Input = "RotationOrder"
  2046.                         }
  2047.                     },
  2048.                 },
  2049.                 CameraRx = Input {
  2050.                     CustomData = {
  2051.                         Metadata = {
  2052.                             Type = "Matrix",
  2053.                             Set = "Camera",
  2054.                             Input = "Rx"
  2055.                         }
  2056.                     },
  2057.                     Expression = "Camera3D1.Transform3DOp.Rotate.X",
  2058.                 },
  2059.                 CameraRy = Input {
  2060.                     CustomData = {
  2061.                         Metadata = {
  2062.                             Type = "Matrix",
  2063.                             Set = "Camera",
  2064.                             Input = "Ry"
  2065.                         }
  2066.                     },
  2067.                     Expression = "Camera3D1.Transform3DOp.Rotate.Y",
  2068.                 },
  2069.                 CameraRz = Input {
  2070.                     CustomData = {
  2071.                         Metadata = {
  2072.                             Type = "Matrix",
  2073.                             Set = "Camera",
  2074.                             Input = "Rz"
  2075.                         }
  2076.                     },
  2077.                     Expression = "Camera3D1.Transform3DOp.Rotate.Z",
  2078.                 },
  2079.                 CameraSx = Input {
  2080.                     CustomData = {
  2081.                         Metadata = {
  2082.                             Type = "Matrix",
  2083.                             Set = "Camera",
  2084.                             Input = "Sx"
  2085.                         }
  2086.                     },
  2087.                 },
  2088.                 CameraSy = Input {
  2089.                     CustomData = {
  2090.                         Metadata = {
  2091.                             Type = "Matrix",
  2092.                             Set = "Camera",
  2093.                             Input = "Sy"
  2094.                         }
  2095.                     },
  2096.                 },
  2097.                 CameraSz = Input {
  2098.                     CustomData = {
  2099.                         Metadata = {
  2100.                             Type = "Matrix",
  2101.                             Set = "Camera",
  2102.                             Input = "Sz"
  2103.                         }
  2104.                     },
  2105.                 },
  2106.                 CameraPx = Input {
  2107.                     CustomData = {
  2108.                         Metadata = {
  2109.                             Type = "Matrix",
  2110.                             Set = "Camera",
  2111.                             Input = "Px"
  2112.                         }
  2113.                     },
  2114.                 },
  2115.                 CameraPy = Input {
  2116.                     CustomData = {
  2117.                         Metadata = {
  2118.                             Type = "Matrix",
  2119.                             Set = "Camera",
  2120.                             Input = "Py"
  2121.                         }
  2122.                     },
  2123.                 },
  2124.                 CameraPz = Input {
  2125.                     CustomData = {
  2126.                         Metadata = {
  2127.                             Type = "Matrix",
  2128.                             Set = "Camera",
  2129.                             Input = "Pz"
  2130.                         }
  2131.                     },
  2132.                 },
  2133.             },
  2134.             ViewInfo = OperatorInfo { Pos = { 1760, 412.5 } },
  2135.             UserControls = ordered() {
  2136.                 ChildMtl = {
  2137.                     {
  2138.                         LINKID_DataType = "MtlGraph3D"
  2139.                     },
  2140.                     {
  2141.                         LINKID_DataType = "Image"
  2142.                     },
  2143.                     {
  2144.                         LINKID_AllowedDataType = "Image"
  2145.                     },
  2146.                     {
  2147.                         LINKID_AllowedDataType = "Mask"
  2148.                     },
  2149.                     INP_AcceptsGLImages = true,
  2150.                     LINK_Main = 1,
  2151.                     INP_AcceptsMasks = true,
  2152.                     INPID_InputControl = "ImageControl",
  2153.                     INP_Required = false,
  2154.                     IC_ControlPage = 0,
  2155.                 },
  2156.                 ChildMtlLabel = {
  2157.                     IC_ControlPage = 1,
  2158.                     ICD_Width = 0.9,
  2159.                     INP_External = false,
  2160.                     INPID_InputControl = "LabelControl",
  2161.                     ICS_Name = "ChildMtl",
  2162.                     INP_Passive = true,
  2163.                 },
  2164.                 ChildMtlDeleteButton = {
  2165.                     INP_DoNotifyChanged = 1,
  2166.                     INP_External = 0,
  2167.                     IC_ControlPage = 1,
  2168.                     ICD_Width = 0.1,
  2169.                     ICS_Name = "",
  2170.                     LINKID_DataType = "Number",
  2171.                     MBTNC_ButtonHeight = 18,
  2172.                     INPID_InputControl = "MultiButtonControl",
  2173.                     MBTNC_AddButton = "X",
  2174.                     MBTNC_Type = "Toggle",
  2175.                 },
  2176.                 CameraTx = {
  2177.                     LINKID_DataType = "Number",
  2178.                     ICS_Name = "X Translation",
  2179.                     INP_Default = 0,
  2180.                     INP_MinScale = -0.5,
  2181.                     INPID_InputControl = "ScrewControl",
  2182.                     INP_MaxScale = 0.5,
  2183.                     IC_ControlPage = 4,
  2184.                 },
  2185.                 CameraTy = {
  2186.                     LINKID_DataType = "Number",
  2187.                     ICS_Name = "Y Translation",
  2188.                     INP_Default = 0,
  2189.                     INP_MinScale = -0.5,
  2190.                     INPID_InputControl = "ScrewControl",
  2191.                     INP_MaxScale = 0.5,
  2192.                     IC_ControlPage = 4,
  2193.                 },
  2194.                 CameraTz = {
  2195.                     LINKID_DataType = "Number",
  2196.                     ICS_Name = "Z Translation",
  2197.                     INP_Default = 0,
  2198.                     INP_MinScale = -0.5,
  2199.                     INPID_InputControl = "ScrewControl",
  2200.                     INP_MaxScale = 0.5,
  2201.                     IC_ControlPage = 4,
  2202.                 },
  2203.                 CameraRotationOrder = {
  2204.                     {
  2205.                         MBTNC_AddButton = "XYZ"
  2206.                     },
  2207.                     {
  2208.                         MBTNC_AddButton = "XZY"
  2209.                     },
  2210.                     {
  2211.                         MBTNC_AddButton = "YXZ"
  2212.                     },
  2213.                     {
  2214.                         MBTNC_AddButton = "YZX"
  2215.                     },
  2216.                     {
  2217.                         MBTNC_AddButton = "ZXY"
  2218.                     },
  2219.                     {
  2220.                         MBTNC_AddButton = "ZYX"
  2221.                     },
  2222.                     LINKID_DataType = "FuID",
  2223.                     ICS_Name = "Rotation order",
  2224.                     MBTNC_StretchToFit = true,
  2225.                     INPID_InputControl = "MultiButtonIDControl",
  2226.                     INPID_DefaultID = "XYZ",
  2227.                     IC_ControlPage = 4,
  2228.                 },
  2229.                 CameraRx = {
  2230.                     LINKID_DataType = "Number",
  2231.                     ICS_Name = "X Rotation",
  2232.                     INP_Default = 0,
  2233.                     INP_MinScale = -180,
  2234.                     IC_ControlPage = 4,
  2235.                     INPID_InputControl = "ScrewControl",
  2236.                     INP_MaxScale = 180,
  2237.                     IC_Steps = 3601,
  2238.                 },
  2239.                 CameraRy = {
  2240.                     LINKID_DataType = "Number",
  2241.                     ICS_Name = "Y Rotation",
  2242.                     INP_Default = 0,
  2243.                     INP_MinScale = -180,
  2244.                     IC_ControlPage = 4,
  2245.                     INPID_InputControl = "ScrewControl",
  2246.                     INP_MaxScale = 180,
  2247.                     IC_Steps = 3601,
  2248.                 },
  2249.                 CameraRz = {
  2250.                     LINKID_DataType = "Number",
  2251.                     ICS_Name = "Z Rotation",
  2252.                     INP_Default = 0,
  2253.                     INP_MinScale = -180,
  2254.                     IC_ControlPage = 4,
  2255.                     INPID_InputControl = "ScrewControl",
  2256.                     INP_MaxScale = 180,
  2257.                     IC_Steps = 3601,
  2258.                 },
  2259.                 CameraSx = {
  2260.                     LINKID_DataType = "Number",
  2261.                     ICS_Name = "X Scale",
  2262.                     INP_Default = 1,
  2263.                     INP_MinScale = -3,
  2264.                     INPID_InputControl = "SliderControl",
  2265.                     INP_MaxScale = 3,
  2266.                     IC_ControlPage = 4,
  2267.                 },
  2268.                 CameraSy = {
  2269.                     LINKID_DataType = "Number",
  2270.                     ICS_Name = "Y Scale",
  2271.                     INP_Default = 1,
  2272.                     INP_MinScale = -3,
  2273.                     INPID_InputControl = "SliderControl",
  2274.                     INP_MaxScale = 3,
  2275.                     IC_ControlPage = 4,
  2276.                 },
  2277.                 CameraSz = {
  2278.                     LINKID_DataType = "Number",
  2279.                     ICS_Name = "Z Scale",
  2280.                     INP_Default = 1,
  2281.                     INP_MinScale = -3,
  2282.                     INPID_InputControl = "SliderControl",
  2283.                     INP_MaxScale = 3,
  2284.                     IC_ControlPage = 4,
  2285.                 },
  2286.                 CameraPx = {
  2287.                     LINKID_DataType = "Number",
  2288.                     ICS_Name = "X Pivot",
  2289.                     INP_Default = 0,
  2290.                     INP_MinScale = -1,
  2291.                     INPID_InputControl = "ScrewControl",
  2292.                     INP_MaxScale = 1,
  2293.                     IC_ControlPage = 4,
  2294.                 },
  2295.                 CameraPy = {
  2296.                     LINKID_DataType = "Number",
  2297.                     ICS_Name = "Y Pivot",
  2298.                     INP_Default = 0,
  2299.                     INP_MinScale = -1,
  2300.                     INPID_InputControl = "ScrewControl",
  2301.                     INP_MaxScale = 1,
  2302.                     IC_ControlPage = 4,
  2303.                 },
  2304.                 CameraPz = {
  2305.                     LINKID_DataType = "Number",
  2306.                     ICS_Name = "Z Pivot",
  2307.                     INP_Default = 0,
  2308.                     INP_MinScale = -1,
  2309.                     INPID_InputControl = "ScrewControl",
  2310.                     INP_MaxScale = 1,
  2311.                     IC_ControlPage = 4,
  2312.                 },
  2313.                 CameraLabel = {
  2314.                     IC_ControlPage = 1,
  2315.                     ICD_Width = 0.9,
  2316.                     INP_External = false,
  2317.                     INPID_InputControl = "LabelControl",
  2318.                     INP_Passive = true,
  2319.                     ICS_Name = "Camera",
  2320.                 },
  2321.                 CameraDeleteButton = {
  2322.                     INP_DoNotifyChanged = 1,
  2323.                     INP_External = 0,
  2324.                     LINKID_DataType = "Number",
  2325.                     ICD_Width = 0.1,
  2326.                     ICS_Name = "",
  2327.                     IC_ControlPage = 1,
  2328.                     MBTNC_ButtonHeight = 18,
  2329.                     INPID_InputControl = "MultiButtonControl",
  2330.                     MBTNC_AddButton = "X",
  2331.                     MBTNC_Type = "Toggle",
  2332.                 }
  2333.             }
  2334.         },
  2335.         ZtoWorldPos1 = ZtoWorldPos {
  2336.             Inputs = {
  2337.                 Image = Input {
  2338.                     SourceOp = "Renderer3D1",
  2339.                     Source = "Output",
  2340.                 },
  2341.                 SceneInput = Input {
  2342.                     SourceOp = "Camera3D1",
  2343.                     Source = "Output",
  2344.                 },
  2345.                 Mode = Input { Value = FuID { "WorldPostoZ" }, },
  2346.             },
  2347.             ViewInfo = OperatorInfo { Pos = { 1595, 445.5 } },
  2348.         },
  2349.         ImagePlane3D1 = ImagePlane3D {
  2350.             Inputs = {
  2351.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
  2352.                 MaterialInput = Input {
  2353.                     SourceOp = "CustomShader3D1",
  2354.                     Source = "MaterialOutput",
  2355.                 },
  2356.                 ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
  2357.             },
  2358.             ViewInfo = OperatorInfo { Pos = { 1870, 412.5 } },
  2359.         },
  2360.         Renderer3D2 = Renderer3D {
  2361.             CtrlWZoom = false,
  2362.             Inputs = {
  2363.                 GlobalIn = Input { Value = 1001, },
  2364.                 GlobalOut = Input { Value = 2001, },
  2365.                 Width = Input { Value = 1920, },
  2366.                 Height = Input { Value = 1080, },
  2367.                 Depth = Input { Value = 4, },
  2368.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  2369.                 SceneInput = Input {
  2370.                     SourceOp = "ImagePlane3D1",
  2371.                     Source = "Output",
  2372.                 },
  2373.                 RendererType = Input { Value = FuID { "RendererOpenGLUV" }, },
  2374.                 ["RendererOpenGLUV.Texturing"] = Input { Value = 1, },
  2375.                 ["RendererOpenGLUV.TextureDepth"] = Input { Value = 4, },
  2376.             },
  2377.             ViewInfo = OperatorInfo { Pos = { 1980, 412.5 } },
  2378.         }
  2379.     }
  2380. }
Last edited by Kristof on Wed Dec 21, 2016 2:41 pm, edited 1 time in total.

User avatar
Chad
Fusionator
Posts: 1119
Joined: Fri Aug 08, 2014 12:11 pm
Has thanked: 6 times
Been thanked: 23 times

Re: CustomShader3D: Cg shader editing in your comp

#64

Post by Chad » Wed Dec 21, 2016 2:39 pm

Cool. Did you want to renormalize it, or is the "distance from the camera" the range you wanted?

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#65

Post by Kristof » Wed Dec 21, 2016 2:42 pm

Sorry, edited my original message to make clear what I'm on about--hopefully :)

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#66

Post by Kristof » Wed Dec 21, 2016 2:44 pm

Note to self: multiplying with the inverse of the camera matrix will convert WPP to view space.

resources:

http://www.opengl-tutorial.org/beginner ... -matrices/
https://ksimek.github.io/2013/08/13/intrinsic/
http://ogldev.atspace.co.uk/www/tutoria ... ial12.html

User avatar
Chad
Fusionator
Posts: 1119
Joined: Fri Aug 08, 2014 12:11 pm
Has thanked: 6 times
Been thanked: 23 times

Re: CustomShader3D: Cg shader editing in your comp

#67

Post by Chad » Wed Dec 21, 2016 2:56 pm

You want the red and green to always be (0,1)?

Currently you can't return a single channel output. Normally you'd fake it by smearing the value you want. But in image outputs, you can use a Fuse to create a real single channel image. I have one that does that, I'll send it along when I get back to my workstation.

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#68

Post by Kristof » Wed Dec 21, 2016 3:01 pm

Chad wrote:You want the red and green to always be (0,1)?
Yes, this will give me a 2d lookup (I tried to explain the context a few days ago). So refracting a wpp and then parsing it through the customshader will give me depth samples for everything including the bent (refracted/deflected) rays. And I'd also would like to have the refracted screen coordinates, and the starting point would be those red and green channels.

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#69

Post by Kristof » Thu Dec 22, 2016 7:59 am

Done! I'll post the version with some content to show the use case.

User avatar
Kristof
Fusionista
Posts: 384
Joined: Thu Aug 07, 2014 12:30 pm
Has thanked: 38 times
Been thanked: 8 times

Re: CustomShader3D: Cg shader editing in your comp

#70

Post by Kristof » Thu Dec 22, 2016 2:05 pm

Next step would be to use a new tool called xyz positioner instead of a uv positioner as that will give us depth sorting. There you go:
  1. {
  2.     Tools = ordered() {
  3.         Shape3D1 = Shape3D {
  4.             Inputs = {
  5.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  6.                 Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
  7.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  8.                 ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
  9.             },
  10.             ViewInfo = OperatorInfo { Pos = { 1155, 181.5 } },
  11.         },
  12.         Override3D1 = Override3D {
  13.             Inputs = {
  14.                 SceneInput = Input {
  15.                     SourceOp = "WirelessLink3D1",
  16.                     Source = "Output",
  17.                 },
  18.                 ["Visibility.DoCullFrontFace"] = Input { Value = 1, },
  19.                 ["Visibility.CullFrontFace"] = Input { Value = 1, },
  20.             },
  21.             ViewInfo = OperatorInfo { Pos = { 1045, 247.5 } },
  22.         },
  23.         Transform3D3 = Transform3D {
  24.             Inputs = {
  25.                 SceneInput = Input {
  26.                     SourceOp = "Override3D1",
  27.                     Source = "Output",
  28.                 },
  29.                 ["Transform3DOp.Scale.X"] = Input { Value = 500, },
  30.             },
  31.             ViewInfo = OperatorInfo { Pos = { 1155, 247.5 } },
  32.         },
  33.         Merge3D2 = Merge3D {
  34.             Inputs = {
  35.                 SceneInput1 = Input {
  36.                     SourceOp = "Transform3D3",
  37.                     Source = "Output",
  38.                 },
  39.                 SceneInput2 = Input {
  40.                     SourceOp = "Merge3D1",
  41.                     Source = "Output",
  42.                 },
  43.             },
  44.             ViewInfo = OperatorInfo { Pos = { 1265, 247.5 } },
  45.         },
  46.         Transform3D1 = Transform3D {
  47.             Inputs = {
  48.                 SceneInput = Input {
  49.                     SourceOp = "Shape3D1",
  50.                     Source = "Output",
  51.                 },
  52.                 ["Transform3DOp.Translate.Y"] = Input { Value = 1, },
  53.             },
  54.             ViewInfo = OperatorInfo { Pos = { 1265, 181.5 } },
  55.         },
  56.         Transform3D2 = Transform3D {
  57.             Inputs = {
  58.                 SceneInput = Input {
  59.                     SourceOp = "Shape3D2",
  60.                     Source = "Output",
  61.                 },
  62.                 ["Transform3DOp.Rotate.X"] = Input { Value = -90, },
  63.                 ["Transform3DOp.Scale.X"] = Input { Value = 100, },
  64.             },
  65.             ViewInfo = OperatorInfo { Pos = { 1155, 214.5 } },
  66.         },
  67.         Merge3D1 = Merge3D {
  68.             Inputs = {
  69.                 SceneInput1 = Input {
  70.                     SourceOp = "Transform3D2",
  71.                     Source = "Output",
  72.                 },
  73.                 SceneInput2 = Input {
  74.                     SourceOp = "Transform3D1",
  75.                     Source = "Output",
  76.                 },
  77.             },
  78.             ViewInfo = OperatorInfo { Pos = { 1265, 214.5 } },
  79.         },
  80.         Shape3D2 = Shape3D {
  81.             Inputs = {
  82.                 ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
  83.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, }
  84.             },
  85.             ViewInfo = OperatorInfo { Pos = { 1045, 214.5 } },
  86.         },
  87.         WirelessLink3D1 = Fuse.Wireless3D {
  88.             Inputs = {
  89.                 Input = Input {
  90.                     SourceOp = "Shape3D1",
  91.                     Source = "Output",
  92.                 },
  93.             },
  94.             ViewInfo = OperatorInfo { Pos = { 935, 247.5 } },
  95.         },
  96.         Merge3D5 = Merge3D {
  97.             Inputs = {
  98.                 SceneInput1 = Input {
  99.                     SourceOp = "Transform3D1_1",
  100.                     Source = "Output",
  101.                 },
  102.                 SceneInput2 = Input {
  103.                     SourceOp = "Merge3D2",
  104.                     Source = "Output",
  105.                 },
  106.             },
  107.             ViewInfo = OperatorInfo { Pos = { 1265, 280.5 } },
  108.         },
  109.         Transform3D1_1 = Transform3D {
  110.             Inputs = {
  111.                 SceneInput = Input {
  112.                     SourceOp = "Shape3D1_1",
  113.                     Source = "Output",
  114.                 },
  115.                 ["Transform3DOp.Translate.X"] = Input { Value = -1.8591549, },
  116.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.5, },
  117.             },
  118.             ViewInfo = OperatorInfo { Pos = { 1100, 280.5 } },
  119.         },
  120.         Shape3D1_1 = Shape3D {
  121.             Inputs = {
  122.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  123.                 ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
  124.                 Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
  125.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  126.                 ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 6, }
  127.             },
  128.             ViewInfo = OperatorInfo { Pos = { 990, 280.5 } },
  129.         },
  130.         Note1 = Note {
  131.             Inputs = {
  132.                 Comments = Input { Value = "If you assign a shader that is being driven by wpp and assign it to everything that is non-refractive and keep the refracting materials intact (stripping everything that will introduce false coordinates like dirt textures etc), you will end up with an image something like this. I am faking ray deflection by adding an offset using a bc node. These type of AOVs need to be unfiltered, so that's why I divide the matte by it's own alpha.", }
  133.             },
  134.             ViewInfo = StickyNoteInfo {
  135.                 Pos = { 1739, 115.5 },
  136.                 Flags = {
  137.                     Expanded = true
  138.                 },
  139.                 Size = { 260, 342.3 }
  140.             },
  141.         },
  142.         WirelessLink3D5 = Fuse.Wireless3D {
  143.             Inputs = {
  144.                 Input = Input {
  145.                     SourceOp = "camera",
  146.                     Source = "Output",
  147.                 },
  148.             },
  149.             ViewInfo = OperatorInfo { Pos = { 2035, 379.5 } },
  150.         },
  151.         Background2 = Background {
  152.             Inputs = {
  153.                 GlobalIn = Input { Value = 1001, },
  154.                 GlobalOut = Input { Value = 2001, },
  155.                 Width = Input { Value = 1920, },
  156.                 Height = Input { Value = 1280, },
  157.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  158.                 TopLeftRed = Input { Value = 1, },
  159.                 TopLeftGreen = Input { Value = 1, },
  160.                 TopLeftBlue = Input { Value = 1, },
  161.                 Gradient = Input {
  162.                     Value = Gradient {
  163.                         Colors = {
  164.                             [0] = { 0, 0, 0, 1 },
  165.                             [1] = { 1, 1, 1, 1 }
  166.                         }
  167.                     },
  168.                 },
  169.                 EffectMask = Input {
  170.                     SourceOp = "Ellipse1",
  171.                     Source = "Mask",
  172.                 }
  173.             },
  174.             ViewInfo = OperatorInfo { Pos = { 1760, 379.5 } },
  175.         },
  176.         camera = Camera3D {
  177.             NameSet = true,
  178.             Inputs = {
  179.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.9577465, },
  180.                 ["Transform3DOp.Translate.Z"] = Input { Value = 14.3661972, },
  181.                 PerspNearClip = Input { Value = 0.05, },
  182.                 AovType = Input { Value = 1, },
  183.                 AoV = Input { Value = 54.4216067994715, },
  184.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
  185.                 FilmBack = Input { Value = 1, },
  186.                 FilmGate = Input { Value = FuID { "User" }, },
  187.                 ApertureW = Input { Value = 1.417, },
  188.                 ApertureH = Input { Value = 0.945, },
  189.                 ResolutionGateFit = Input { Value = FuID { "Width" }, },
  190.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  191.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  192.             },
  193.             ViewInfo = OperatorInfo { Pos = { 990, 346.5 } },
  194.         },
  195.         unfiltered_matte = ChannelBoolean {
  196.             NameSet = true,
  197.             Inputs = {
  198.                 Operation = Input { Value = 7, },
  199.                 ToRed = Input { Value = 8, },
  200.                 ToGreen = Input { Value = 8, },
  201.                 ToBlue = Input { Value = 8, },
  202.                 ToAlpha = Input { Value = 8, },
  203.                 Background = Input {
  204.                     SourceOp = "Background2",
  205.                     Source = "Output",
  206.                 },
  207.             },
  208.             ViewInfo = OperatorInfo { Pos = { 1870, 379.5 } },
  209.         },
  210.         Ellipse1 = EllipseMask {
  211.             Inputs = {
  212.                 MaskWidth = Input { Value = 1920, },
  213.                 MaskHeight = Input { Value = 1080, },
  214.                 PixelAspect = Input { Value = { 1, 1 }, },
  215.                 ClippingMode = Input { Value = FuID { "None" }, },
  216.                 Center = Input { Value = { 0.142839232454404, 0.352046876237232 }, },
  217.                 Width = Input { Value = 0.0861033254383237, },
  218.                 Height = Input { Value = 0.0861033254383237, },
  219.             },
  220.             ViewInfo = OperatorInfo { Pos = { 1760, 346.5 } },
  221.         },
  222.         Merge3D3 = Merge3D {
  223.             Inputs = {
  224.                 SceneInput1 = Input {
  225.                     SourceOp = "camera",
  226.                     Source = "Output",
  227.                 },
  228.                 SceneInput2 = Input {
  229.                     SourceOp = "Merge3D5",
  230.                     Source = "Output",
  231.                 },
  232.             },
  233.             ViewInfo = OperatorInfo { Pos = { 1265, 346.5 } },
  234.         },
  235.         CustomShader3D1_1_1 = Indicated.CustomShaderOperator3D {
  236.             CtrlWZoom = false,
  237.             CustomData = {
  238.                 Settings = {
  239.                 }
  240.             },
  241.             Inputs = {
  242.                 ShaderTextInputs = Input { Value = "FuFloat4 ChildMtl;\nfloat HAoV;\nfloat VAoV;\nfloat ReferenceX;\nfloat ReferenceY;\nfloat ImageAspect;\nfloat4x4 Camera;\n\n", },
  243.                 ShaderTextBody = Input { Value = "float4 Shade(inout FuFragment f)\n{\n // Go from world space to view space\n  float4 ViewSpace = mul(inverse(Camera), float4(ChildMtl.Shade(f).rgb, 1));\n    // Make depth values abolute.\n ViewSpace.b = abs(ViewSpace.b);\n   // convert X and Y positions in view space to screen coordinates. Depth is stored in Blue.\n    return float4((ViewSpace.r / (ReferenceX * ViewSpace.b)) * 0.5 + 0.5, ((ViewSpace.g / (ReferenceY * ViewSpace.b)) * 0.5 + 0.5), ViewSpace.b, 1);\n}", },
  244.                 FloatGroup = Input { Value = 1, },
  245.                 MatrixGroup = Input { Value = 1, },
  246.                 MaterialID = Input { Value = 2, },
  247.                 ChildMtl = Input {
  248.                     SourceOp = "refracted_wpp",
  249.                     Source = "Output",
  250.                     CustomData = {
  251.                         Metadata = {
  252.                             Set = "ChildMtl",
  253.                             Type = "Material",
  254.                         }
  255.                     },
  256.                 },
  257.                 CameraTx = Input {
  258.                     CustomData = {
  259.                         Metadata = {
  260.                             Input = "Tx",
  261.                             Type = "Matrix",
  262.                             Set = "Camera"
  263.                         }
  264.                     },
  265.                     Expression = "camera.Transform3DOp.Translate.X",
  266.                 },
  267.                 CameraTy = Input {
  268.                     Value = 0.9577465,
  269.                     CustomData = {
  270.                         Metadata = {
  271.                             Input = "Ty",
  272.                             Type = "Matrix",
  273.                             Set = "Camera"
  274.                         }
  275.                     },
  276.                     Expression = "camera.Transform3DOp.Translate.Y",
  277.                 },
  278.                 CameraTz = Input {
  279.                     Value = 14.3661972,
  280.                     CustomData = {
  281.                         Metadata = {
  282.                             Input = "Tz",
  283.                             Type = "Matrix",
  284.                             Set = "Camera"
  285.                         }
  286.                     },
  287.                     Expression = "camera.Transform3DOp.Translate.Z",
  288.                 },
  289.                 CameraRotationOrder = Input {
  290.                     CustomData = {
  291.                         Metadata = {
  292.                             Input = "RotationOrder",
  293.                             Type = "Matrix",
  294.                             Set = "Camera"
  295.                         }
  296.                     },
  297.                 },
  298.                 CameraRx = Input {
  299.                     CustomData = {
  300.                         Metadata = {
  301.                             Input = "Rx",
  302.                             Type = "Matrix",
  303.                             Set = "Camera"
  304.                         }
  305.                     },
  306.                     Expression = "camera.Transform3DOp.Rotate.X",
  307.                 },
  308.                 CameraRy = Input {
  309.                     CustomData = {
  310.                         Metadata = {
  311.                             Input = "Ry",
  312.                             Type = "Matrix",
  313.                             Set = "Camera"
  314.                         }
  315.                     },
  316.                     Expression = "camera.Transform3DOp.Rotate.Y",
  317.                 },
  318.                 CameraRz = Input {
  319.                     CustomData = {
  320.                         Metadata = {
  321.                             Input = "Rz",
  322.                             Type = "Matrix",
  323.                             Set = "Camera"
  324.                         }
  325.                     },
  326.                     Expression = "camera.Transform3DOp.Rotate.Z",
  327.                 },
  328.                 CameraSx = Input {
  329.                     CustomData = {
  330.                         Metadata = {
  331.                             Input = "Sx",
  332.                             Type = "Matrix",
  333.                             Set = "Camera"
  334.                         }
  335.                     },
  336.                 },
  337.                 CameraSy = Input {
  338.                     CustomData = {
  339.                         Metadata = {
  340.                             Input = "Sy",
  341.                             Type = "Matrix",
  342.                             Set = "Camera"
  343.                         }
  344.                     },
  345.                 },
  346.                 CameraSz = Input {
  347.                     CustomData = {
  348.                         Metadata = {
  349.                             Input = "Sz",
  350.                             Type = "Matrix",
  351.                             Set = "Camera"
  352.                         }
  353.                     },
  354.                 },
  355.                 CameraPx = Input {
  356.                     CustomData = {
  357.                         Metadata = {
  358.                             Input = "Px",
  359.                             Type = "Matrix",
  360.                             Set = "Camera"
  361.                         }
  362.                     },
  363.                 },
  364.                 CameraPy = Input {
  365.                     CustomData = {
  366.                         Metadata = {
  367.                             Input = "Py",
  368.                             Type = "Matrix",
  369.                             Set = "Camera"
  370.                         }
  371.                     },
  372.                 },
  373.                 CameraPz = Input {
  374.                     CustomData = {
  375.                         Metadata = {
  376.                             Input = "Pz",
  377.                             Type = "Matrix",
  378.                             Set = "Camera"
  379.                         }
  380.                     },
  381.                 },
  382.                 HAoV = Input {
  383.                     Value = 54.42161,
  384.                     CustomData = {
  385.                         Metadata = {
  386.                             Type = "Float",
  387.                             Set = "HAoV",
  388.                         }
  389.                     },
  390.                 },
  391.                 VAoV = Input {
  392.                     Value = 37.85368,
  393.                     CustomData = {
  394.                         Metadata = {
  395.                             Type = "Float",
  396.                             Set = "VAoV",
  397.                         }
  398.                     },
  399.                 },
  400.                 ReferenceX = Input {
  401.                     Value = 0.514168606742256,
  402.                     CustomData = {
  403.                         Metadata = {
  404.                             Type = "Float",
  405.                             Set = "ReferenceX",
  406.                         }
  407.                     },
  408.                     Expression = "tan(((HAoV/2)*pi)/180)",
  409.                 },
  410.                 ReferenceY = Input {
  411.                     Value = 0.342899968163685,
  412.                     CustomData = {
  413.                         Metadata = {
  414.                             Type = "Float",
  415.                             Set = "ReferenceY",
  416.                         }
  417.                     },
  418.                     Expression = "tan(((VAoV/2)*pi)/180)",
  419.                 },
  420.                 CameraSource = Input {
  421.                     SourceOp = "WirelessLink3D5",
  422.                     Source = "Output",
  423.                 },
  424.                 ImageAspect = Input {
  425.                     Value = 0.666666666666667,
  426.                     CustomData = {
  427.                         Metadata = {
  428.                             Type = "Float",
  429.                             Set = "ImageAspect"
  430.                         }
  431.                     },
  432.                     Expression = "ChildMtl.OriginalHeight/ChildMtl.OriginalWidth",
  433.                 },
  434.             },
  435.             ViewInfo = OperatorInfo { Pos = { 2035, 412.5 } },
  436.             UserControls = ordered() {
  437.                 ChildMtl = {
  438.                     {
  439.                         LINKID_DataType = "MtlGraph3D"
  440.                     },
  441.                     {
  442.                         LINKID_DataType = "Image"
  443.                     },
  444.                     {
  445.                         LINKID_AllowedDataType = "Image"
  446.                     },
  447.                     {
  448.                         LINKID_AllowedDataType = "Mask"
  449.                     },
  450.                     INP_AcceptsGLImages = true,
  451.                     LINK_Main = 1,
  452.                     INP_AcceptsMasks = true,
  453.                     INPID_InputControl = "ImageControl",
  454.                     INP_Required = false,
  455.                     IC_ControlPage = 0,
  456.                 },
  457.                 ChildMtlLabel = {
  458.                     IC_ControlPage = 1,
  459.                     ICD_Width = 0.9,
  460.                     INP_External = false,
  461.                     INPID_InputControl = "LabelControl",
  462.                     INP_Passive = true,
  463.                     ICS_Name = "ChildMtl",
  464.                 },
  465.                 ChildMtlDeleteButton = {
  466.                     INP_DoNotifyChanged = 1,
  467.                     INP_External = 0,
  468.                     LINKID_DataType = "Number",
  469.                     ICD_Width = 0.1,
  470.                     ICS_Name = "",
  471.                     IC_ControlPage = 1,
  472.                     MBTNC_ButtonHeight = 18,
  473.                     INPID_InputControl = "MultiButtonControl",
  474.                     MBTNC_AddButton = "X",
  475.                     MBTNC_Type = "Toggle",
  476.                 },
  477.                 CameraTx = {
  478.                     LINKID_DataType = "Number",
  479.                     ICS_Name = "X Translation",
  480.                     INP_Default = 0,
  481.                     INP_MinScale = -0.5,
  482.                     INPID_InputControl = "ScrewControl",
  483.                     INP_MaxScale = 0.5,
  484.                     IC_ControlPage = 4,
  485.                 },
  486.                 CameraTy = {
  487.                     LINKID_DataType = "Number",
  488.                     ICS_Name = "Y Translation",
  489.                     INP_Default = 0,
  490.                     INP_MinScale = -0.5,
  491.                     INPID_InputControl = "ScrewControl",
  492.                     INP_MaxScale = 0.5,
  493.                     IC_ControlPage = 4,
  494.                 },
  495.                 CameraTz = {
  496.                     LINKID_DataType = "Number",
  497.                     ICS_Name = "Z Translation",
  498.                     INP_Default = 0,
  499.                     INP_MinScale = -0.5,
  500.                     INPID_InputControl = "ScrewControl",
  501.                     INP_MaxScale = 0.5,
  502.                     IC_ControlPage = 4,
  503.                 },
  504.                 CameraRotationOrder = {
  505.                     {
  506.                         MBTNC_AddButton = "XYZ"
  507.                     },
  508.                     {
  509.                         MBTNC_AddButton = "XZY"
  510.                     },
  511.                     {
  512.                         MBTNC_AddButton = "YXZ"
  513.                     },
  514.                     {
  515.                         MBTNC_AddButton = "YZX"
  516.                     },
  517.                     {
  518.                         MBTNC_AddButton = "ZXY"
  519.                     },
  520.                     {
  521.                         MBTNC_AddButton = "ZYX"
  522.                     },
  523.                     LINKID_DataType = "FuID",
  524.                     ICS_Name = "Rotation order",
  525.                     MBTNC_StretchToFit = true,
  526.                     INPID_InputControl = "MultiButtonIDControl",
  527.                     INPID_DefaultID = "XYZ",
  528.                     IC_ControlPage = 4,
  529.                 },
  530.                 CameraRx = {
  531.                     LINKID_DataType = "Number",
  532.                     ICS_Name = "X Rotation",
  533.                     INP_Default = 0,
  534.                     INP_MinScale = -180,
  535.                     IC_ControlPage = 4,
  536.                     INPID_InputControl = "ScrewControl",
  537.                     INP_MaxScale = 180,
  538.                     IC_Steps = 3601,
  539.                 },
  540.                 CameraRy = {
  541.                     LINKID_DataType = "Number",
  542.                     ICS_Name = "Y Rotation",
  543.                     INP_Default = 0,
  544.                     INP_MinScale = -180,
  545.                     IC_ControlPage = 4,
  546.                     INPID_InputControl = "ScrewControl",
  547.                     INP_MaxScale = 180,
  548.                     IC_Steps = 3601,
  549.                 },
  550.                 CameraRz = {
  551.                     LINKID_DataType = "Number",
  552.                     ICS_Name = "Z Rotation",
  553.                     INP_Default = 0,
  554.                     INP_MinScale = -180,
  555.                     IC_ControlPage = 4,
  556.                     INPID_InputControl = "ScrewControl",
  557.                     INP_MaxScale = 180,
  558.                     IC_Steps = 3601,
  559.                 },
  560.                 CameraSx = {
  561.                     LINKID_DataType = "Number",
  562.                     ICS_Name = "X Scale",
  563.                     INP_Default = 1,
  564.                     INP_MinScale = -3,
  565.                     INPID_InputControl = "SliderControl",
  566.                     INP_MaxScale = 3,
  567.                     IC_ControlPage = 4,
  568.                 },
  569.                 CameraSy = {
  570.                     LINKID_DataType = "Number",
  571.                     ICS_Name = "Y Scale",
  572.                     INP_Default = 1,
  573.                     INP_MinScale = -3,
  574.                     INPID_InputControl = "SliderControl",
  575.                     INP_MaxScale = 3,
  576.                     IC_ControlPage = 4,
  577.                 },
  578.                 CameraSz = {
  579.                     LINKID_DataType = "Number",
  580.                     ICS_Name = "Z Scale",
  581.                     INP_Default = 1,
  582.                     INP_MinScale = -3,
  583.                     INPID_InputControl = "SliderControl",
  584.                     INP_MaxScale = 3,
  585.                     IC_ControlPage = 4,
  586.                 },
  587.                 CameraPx = {
  588.                     LINKID_DataType = "Number",
  589.                     ICS_Name = "X Pivot",
  590.                     INP_Default = 0,
  591.                     INP_MinScale = -1,
  592.                     INPID_InputControl = "ScrewControl",
  593.                     INP_MaxScale = 1,
  594.                     IC_ControlPage = 4,
  595.                 },
  596.                 CameraPy = {
  597.                     LINKID_DataType = "Number",
  598.                     ICS_Name = "Y Pivot",
  599.                     INP_Default = 0,
  600.                     INP_MinScale = -1,
  601.                     INPID_InputControl = "ScrewControl",
  602.                     INP_MaxScale = 1,
  603.                     IC_ControlPage = 4,
  604.                 },
  605.                 CameraPz = {
  606.                     LINKID_DataType = "Number",
  607.                     ICS_Name = "Z Pivot",
  608.                     INP_Default = 0,
  609.                     INP_MinScale = -1,
  610.                     INPID_InputControl = "ScrewControl",
  611.                     INP_MaxScale = 1,
  612.                     IC_ControlPage = 4,
  613.                 },
  614.                 CameraLabel = {
  615.                     IC_ControlPage = 1,
  616.                     ICD_Width = 0.9,
  617.                     INP_External = false,
  618.                     INPID_InputControl = "LabelControl",
  619.                     INP_Passive = true,
  620.                     ICS_Name = "Camera",
  621.                 },
  622.                 CameraDeleteButton = {
  623.                     INP_DoNotifyChanged = 1,
  624.                     INP_External = 0,
  625.                     LINKID_DataType = "Number",
  626.                     ICD_Width = 0.1,
  627.                     ICS_Name = "",
  628.                     IC_ControlPage = 1,
  629.                     MBTNC_ButtonHeight = 18,
  630.                     INPID_InputControl = "MultiButtonControl",
  631.                     MBTNC_AddButton = "X",
  632.                     MBTNC_Type = "Toggle",
  633.                 },
  634.                 HAoV = {
  635.                     IC_ControlPage = 0,
  636.                     INPID_InputControl = "SliderControl",
  637.                     LINKID_DataType = "Number",
  638.                 },
  639.                 HAoVLabel = {
  640.                     IC_ControlPage = 1,
  641.                     ICD_Width = 0.9,
  642.                     INP_External = false,
  643.                     INPID_InputControl = "LabelControl",
  644.                     INP_Passive = true,
  645.                     ICS_Name = "HAoV",
  646.                 },
  647.                 HAoVDeleteButton = {
  648.                     INP_DoNotifyChanged = 1,
  649.                     INP_External = 0,
  650.                     LINKID_DataType = "Number",