Jump to: Board index » General » Fusion

Randomize transforms with duplicate node

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

daniel.partzsch

  • Posts: 64
  • Joined: Wed Aug 09, 2017 8:13 am
  • Location: Berlin

Randomize transforms with duplicate node

PostFri Aug 17, 2018 6:33 am

Hi. Is it possible to randomize or control the transforms of the clones on the duplicate node with eg a texture or a modifier? The get similar control and results like for example when using a cloner with effectors and falloffs in Cinema4D? Thank you!

Gesendet von meinem SM-G930F mit Tapatalk
Offline
User avatar

Bryan Ray

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

Re: Randomize transforms with duplicate node

PostWed Aug 29, 2018 1:14 am

You can randomize the transforms with the jitter control, but to the best of my knowledge there's no way to control it with an input image. It would be a nice addition to the 2d tool, which is a Fuse and could be modified. There is a tool in the Krokodove plug-in suite called MappedDuplicate3D that might be what you're looking for, but I've never tried it out. Krokodove is free, but as an SDK plug-in, it's only available in the standalone version of Fusion Studio.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Randomize transforms with duplicate node

PostWed Aug 29, 2018 10:34 am

Another way maybe is by using particles and replacing them with 3D geometry (via Replicate3D). In combination with the pCustom you can then use any input image/animation to drive animation.

Simple example below:

Code: Select all
{
   Tools = ordered() {
      pCustom1 = pCustom {
         ID = 11,
         CtrlWZoom = false,
         Inputs = {
            PositionZExpression = Input { Value = "getr1b(pxi1+0.5,pyi1+0.5)/5", },
            Input = Input {
               SourceOp = "pImageEmitter1",
               Source = "Output",
            },
            Image1 = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 382, 151 } },
      },
      Background2 = Background {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.477083333333333, 0.5 }, },
            End = Input { Value = { 0.772722029988466, 0.484967320261438 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0.564705882352941, 0.564705882352941, 0.564705882352941, 1 },
                     [0.204697986577181] = { 0.709803921568627, 0.709803921568627, 0.709803921568627, 1 },
                     [0.48993288590604] = { 0.345098039215686, 0.345098039215686, 0.345098039215686, 1 },
                     [0.771812080536913] = { 0.254901960784314, 0.254901960784314, 0.254901960784314, 1 },
                     [1] = { 1, 1, 1, 1 }
                  }
               },
            },
            Offset = Input {
               Value = 3.39,
               Expression = "time/100",
            },
            Repeat = Input { Value = FuID { "Ping-Pong" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 384, 11 } },
      },
      pImageEmitter1 = pImageEmitter {
         ID = 7,
         Inputs = {
            XDensity = Input { Value = 0.03, },
            YDensity = Input { Value = 0.03, },
            Lifespan = Input { Value = 250, },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pImageEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pImageEmitter1BluroverLife2D",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 213, 152 } },
      },
      pImageEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      pImageEmitter1BluroverLife2D = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      Background1 = Background {
         Inputs = {
            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 = { 54, 152 } },
      },
      pRender1 = pRender {
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            OutputMode = Input { Disabled = true, },
            IntegrationMethod = Input { Value = FuID { "RK4" }, },
            ["MaterialID.MaterialID"] = Input { Value = 1, },
            ["ObjectID.ObjectID"] = Input { Value = 1, },
            Input = Input {
               SourceOp = "pCustom1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 541, 154 } },
      },
      Replicate3D1 = Replicate3D {
         Inputs = {
            ScaleNest = Input { Value = 1, },
            ["Scale.X"] = Input { Value = 0.012, },
            Destination = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            Input1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 651, 154 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 3, }
         },
         ViewInfo = OperatorInfo { Pos = { 652, 44 } },
      },
      Transform3D1 = Transform3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Replicate3D1",
               Source = "Data3D",
            },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.5, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -88.3, },
         },
         ViewInfo = OperatorInfo { Pos = { 761, 154 } },
      },
      PointLight1 = LightPoint {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.0262137088167372, },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.0666031790480243, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.637138851482758, },
         },
         ViewInfo = OperatorInfo { Pos = { 808, 9 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -0.0135420385551511, },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.322356616596198, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.510607825269879, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -1.8, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 1, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 846, 242 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Transform3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "PointLight1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 871, 156 } },
      }
   }
}


Not sure how familiar you are with the pCustom tool etc, but if not, shameless plug for one of my older tutorials (tackles only part of it though):



For this example, the expression below is the critical one though (to read the red channel of the input image....could have used another channel too --> this then drives the z-position of the particles):

getr1b(pxi1+0.5,pyi1+0.5)/5
www.ablackbirdcalledsue.com
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Randomize transforms with duplicate node

PostWed Aug 29, 2018 11:28 am

sorry, just realised you were probably talking about the Duplicate 2D node, not the 3D one. If so, can you provide an example of the effect you're after?
www.ablackbirdcalledsue.com

Return to Fusion

Who is online

Users browsing this forum: No registered users and 20 guests