Jump to: Board index » General » Fusion

Transform multiple 3d objects, but rendering separately

Learn about 3D compositing, animation, broadcast design and VFX workflows.
  • Author
  • Message
Offline

bryanfordney

  • Posts: 23
  • Joined: Mon Jan 21, 2019 1:50 pm
  • Location: Atlanta, GA
  • Real Name: Bryan Fordney

Transform multiple 3d objects, but rendering separately

PostThu Jan 31, 2019 8:00 pm

I think this is a kindof fundamental Fusion question. Let's say I have two 3d objects. I want to render each with their own 3D Renderer. However, I want them both to share the same 3D Transform, so that I can animate them together with a single node.

Would this have to be achieved by linking them via expression to the 3D transform (wirelessly), or can it be done with wires?

In other words, I want them to share a transform, but not share the same render pipeline.
Offline

Sander de Regt

  • Posts: 3682
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: Transform multiple 3d objects, but rendering separately

PostThu Jan 31, 2019 9:14 pm

The easiest way to go about this is probably by copy/pasting an instance of your 3D transform, this will create a two way link between the two, so that if you change one you change them both.

Or you can use two branched off override3D tools and the Object IDs to make every object seperately unseen by the camera and render those seperately. It all kind of depends on what it is exactly that you want to achieve.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

Bryan Ray

  • Posts: 2512
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Transform multiple 3d objects, but rendering separately

PostFri Feb 01, 2019 4:41 pm

Here's an example, provided by Michael Vorberg in another thread, of the same scene going to two different renderers in order to produce a shadow pass:

Code: Select all
{
   Tools = ordered() {
      SpotLight1 = LightSpot {
         CtrlWZoom = false,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 2.66145668314653, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 1.55006229670701, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.55224512930519, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -22.7999992370605, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 46.2000007629395, },
            PenumbraAngle = Input { Value = 5.13, },
            ["ShadowLightInputs3D.Nest"] = Input { Value = 1, },
            ["ShadowLightInputs3D.SoftnessType"] = Input { Value = FuID { "Variable" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 148.5 } },
      },
      Text3D1 = Text3D {
         Inputs = {
            Font = Input { Value = "Open Sans", },
            StyledText = Input { Value = "Shadows", },
            Style = Input { Value = "Bold", },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1ExtrusionProfile",
               Source = "Value",
            },
            ExtrusionDepth = Input { Value = 0.0636, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
            Red1 = Input { Value = 0.07212, },
            Green1 = Input { Value = 0.601, },
            Blue1 = Input { Value = 0.144879963933988, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 82.5 } },
      },
      Text3D1ExtrusionProfile = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.0196116135138184, 0.098058067569092 }, Flags = { Linear = true } },
               [0.2] = { 1, LH = { 0.180388386486182, 0.901941932430908 }, RH = { 0.3, 1 }, Flags = { Linear = true } },
               [0.8] = { 1, LH = { 0.7, 1 }, RH = { 0.819611613513818, 0.901941932430908 }, Flags = { Linear = true } },
               [1] = { 0, LH = { 0.980388386486182, 0.098058067569092 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["Transform3DOp.Rotate.X"] = Input { Value = -90, },
            ["Transform3DOp.Scale.X"] = Input { Value = 10, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 550, 280.5 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            PassThroughLights = Input { Value = 1, },
            SceneInput1 = Input {
               SourceOp = "Text3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "SpotLight1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 148.5 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 2.83718105942117, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.869594159043769, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.477893517492261, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -17.3999977111816, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 77.2000045776367, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "Mono" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 16.5 } },
      },
      Merge3D1_1 = Merge3D {
         Inputs = {
            PassThroughLights = Input { Value = 1, },
            SceneInput1 = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 935, 148.5 } },
      },
      ReplaceMaterial3D1 = ReplaceMaterial3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Merge3D1_1",
               Source = "Output",
            },
            ["MtlStdInputs.Specular.Nest"] = Input { Value = 1, },
            ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0, },
            ["MtlStdInputs.ReceivesLighting"] = Input { Value = 0, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 82.5 } },
      },
      Note2 = Note {
         Inputs = {
            Comments = Input { Value = "replace with solid white, no specular", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1100, -16.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 2001, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "ReplaceMaterial3D1",
               Source = "Output",
            },
            ["RendererSoftware.LightingEnabled"] = Input { Value = 1, },
            ["RendererSoftware.ShadowsEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.ShadowsEnabled"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 82.5 } },
      },
      Renderer3D1_1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.ShadowsEnabled"] = Input { Value = 1, },
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 2001, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            ["RendererSoftware.LightingEnabled"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 346.5 } },
      },
      Note1 = Note {
         Inputs = {
            Comments = Input { Value = "render shadow pass", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1430, -16.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Note1_1 = Note {
         Inputs = {
            Comments = Input { Value = "render beauty pass", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1430, 280.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1705, 82.5 } },
      },
      Background2 = Background {
         Inputs = {
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 2001, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 1, },
            TopLeftBlue = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1705, 16.5 } },
      },
      Merge3 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1980, 346.5 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
            ApplyMode = Input { Value = FuID { "Multiply" }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1980, 82.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 2001, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Corner" }, },
            TopLeftRed = Input { Value = 1, },
            TopRightGreen = Input { Value = 1, },
            BottomLeftBlue = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1980, -115.5 } },
      },
      Note3 = Note {
         Inputs = {
            Comments = Input { Value = "multiply shadow over BG", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 2090, 49.5 },
            Flags = {
               Expanded = true
            },
            Size = { 179.029, 94.4472 }
         },
      },
      Note3_1 = Note {
         Inputs = {
            Comments = Input { Value = "merge Text over BG", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 2090, 313.5 },
            Flags = {
               Expanded = true
            },
            Size = { 179.029, 94.4472 }
         },
      }
   }
}


You can split the flow at any point. In this case, the Text, lighting, and camera are common to both streams and can be easily animated without concern over losing registration with the other render, but the background plane is only in one of them, and the material assignment is happening after animation.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com

Return to Fusion

Who is online

Users browsing this forum: amellon and 25 guests