Jump to: Board index » General » Fusion

Art directable particles and number animation

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

ThomasManz

  • Posts: 57
  • Joined: Wed Jul 12, 2017 5:59 pm

Art directable particles and number animation

PostSun Jul 30, 2017 9:27 am

For a current project I'm having 2 problems with Fusion:

1) is an animation regarding detoxification of the body.
I have a stylized, flat silhouette of a man in neutral pose, where there are toxic metals and germs floating around. Which I would like to have as particles. After a while of floating around I wanna show the detoxification by gathering all the particles in one spot and then have them following a path out of the body.
I already found this tutorial
about particles following a path but that's not exactly my usecase and since it's 7 years old I wonder if there are more advanced/ more art directable and less of a workaround features available.

2) is to animate a number counting up. Nothing fancy in terms of animation. Just having a number go 0, 1, 2, 3, 4, ...... up to a user defined limit (i.e 2017) in a userdefined, keyframed timespan (i.e. 80 frames).

Thanks in advance,
thomas
Xubuntu 20.04.4 LTS
DaVinci Resolve 17.4.3 Build 10
Offline

Tim Vandekerckhove

  • Posts: 10
  • Joined: Tue Jun 02, 2015 9:53 pm

Re: Art directable particles and number animation

PostMon Jul 31, 2017 12:23 pm

As to your second question, try this:

Code: Select all
{
   Tools = ordered() {
      Text2 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 2700, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Size = Input { Value = 0.327659574468085, },
            Font = Input { Value = "Open Sans", },
            StyledText = Input {
               Value = "475",
               Expression = "iif(time<=2017,time,2017)",
            },
            Style = Input { Value = "Bold", },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
            ShadingGradient1 = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0, 0, 0, 1 },
                     [1] = { 1, 1, 1, 1 }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 4015, 1270.5 } },
      },
      TimeStretcher1 = TimeStretcher {
         CtrlWZoom = false,
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1SourceTime",
               Source = "Value",
            },
            InterpolateBetweenFrames = Input { Value = 0, },
            SampleSpread = Input { Disabled = true, },
            Input = Input {
               SourceOp = "Text2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 4125, 1270.5 } },
      },
      TimeStretcher1SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 28.3333333333333, 672.333333333333 }, Flags = { Linear = true } },
            [85] = { 2017, LH = { 56.6666666666667, 1344.66666666667 }, Flags = { Linear = true } }
         }
      }
   }
}


Hope this helps.
Offline

ThomasManz

  • Posts: 57
  • Joined: Wed Jul 12, 2017 5:59 pm

Re: Art directable particles and number animation

PostTue Aug 01, 2017 8:26 pm

Oh, thanks.
I figured out a simpler solution, at least for my needs, with a custom tool animating a number which I then reference in a txt+ tool but I'm very happy about your script example, which I will use as the entrance for me to learn scripting in Fusion.
Xubuntu 20.04.4 LTS
DaVinci Resolve 17.4.3 Build 10
Offline

Sander de Regt

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

Re: Art directable particles and number animation

PostTue Aug 01, 2017 9:03 pm

Custom tools, referencing. It's pretty complicated. All you need in this case is a single animated modifier.
(I went to 2017 in 100 frames, but the principle still applies)

Code: Select all
{
   Tools = ordered() {
      Text1 = TextPlus {
         CtrlWZoom = false,
         Inputs = {
            GlobalOut = Input { Value = 100, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Font = Input { Value = "Open Sans", },
            StyledText = Input {
               SourceOp = "TimeCode1",
               Source = "Time",
            },
            Style = Input { Value = "Bold", },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
            ShadingGradient1 = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0, 0, 0, 1 },
                     [1] = { 1, 1, 1, 1 }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
      },
      TimeCode1 = TimeCode {
         CtrlWZoom = false,
         Inputs = {
            Hrs = Input { Value = 0, },
            Mins = Input { Value = 0, },
            Secs = Input { Value = 0, },
            StartOffset = Input {
               SourceOp = "TimeCodeonText1StartOffset",
               Source = "Value",
            },
         },
      },
      TimeCodeonText1StartOffset = BezierSpline {
         SplineColor = { Red = 242, Green = 229, Blue = 67 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 33.3333333333333, 639 }, Flags = { Linear = true } },
            [100] = { 1917, LH = { 66.6666666666667, 1278 }, Flags = { Linear = true } }
         }
      }
   },
   ActiveTool = "Text1"
}
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

Marc van Vliet

  • Posts: 44
  • Joined: Thu Nov 13, 2014 1:42 pm

Re: Art directable particles and number animation

PostFri Feb 09, 2018 11:56 am

Hello,

Reviving this thread in order to try and get an answer to a question regarding particles following a path.

I have setup Eric's (old) tutorial below:

Code: Select all
{
   Tools = ordered() {
      pEmitter1 = pEmitter {
         ID = 12,
         Inputs = {
            VelocityControls = Input { Value = 1, },
            RotationControls = Input { Value = 1, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.5, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1540, 511.5 } },
      },
      pEmitter1SizeoverLife = 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 = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      pEmitter1BluroverLife2D = 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 = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1925, 412.5 } },
      },
      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 = 2, },
            ["ObjectID.ObjectID"] = Input { Value = 3, },
            Input = Input {
               SourceOp = "pCustom1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1815, 412.5 } },
      },
      pCustom1 = pCustom {
         ID = 16,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     pCustom1 = pCustom {
                        ID = 16,
                        CtrlWZoom = false,
                        CustomData = {
                        },
                        Inputs = {
                           NumberIn2 = Input { Value = 0.197, },
                           PositionXExpression = Input { Value = "getr1d(age,0.5)+rands(-1,1,id)*n2", },
                           PositionYExpression = Input { Value = "getg1d(age,0.5)+rands(-1,1,id+1)*n2", },
                           PositionZExpression = Input { Value = "getb1d(age,0.5)+rands(-1,1,id+2)*n2", },
                           VelocityXExpression = Input { Value = "rands(0,1,id)", },
                           VelocityYExpression = Input { Value = "rands(0,1,id+1)", },
                           VelocityZExpression = Input { Value = "rands(0,1,id+2)", },
                           Input = Input {
                              SourceOp = "pEmitter1",
                              Source = "Output",
                           },
                           Image1 = Input {
                              SourceOp = "Trails1",
                              Source = "Output",
                           },
                        },
                        ViewInfo = OperatorInfo { Pos = { 1540, 412.5 } },
                        Name = "pCustom1"
                     }
                  }
               },
               [2] = {
                  Tools = ordered() {
                     pCustom1 = pCustom {
                        ID = 16,
                        CtrlWZoom = false,
                        CustomData = {
                        },
                        Inputs = {
                           NumberIn2 = Input { Value = 0.197, },
                           PositionXExpression = Input { Value = "getr1d(age,0.5)+rands(-1,1,id)*n2", },
                           PositionYExpression = Input { Value = "getg1d(age,0.5)+rands(-1,1,id+1)*n2", },
                           PositionZExpression = Input { Value = "getb1d(age,0.5)+rands(-1,1,id+2)*n2", },
                           VelocityXExpression = Input { Value = " ", },
                           VelocityYExpression = Input { Value = "", },
                           VelocityZExpression = Input { Value = "", },
                           Input = Input {
                              SourceOp = "pEmitter1",
                              Source = "Output",
                           },
                           Image1 = Input {
                              SourceOp = "Trails1",
                              Source = "Output",
                           },
                        },
                        ViewInfo = OperatorInfo { Pos = { 1540, 412.5 } },
                     }
                  }
               },
            }
         },
         Inputs = {
            NumberIn2 = Input { Value = 0.197, },
            PositionXExpression = Input { Value = "getr1d(age,0.5)+rands(-1,1,id)*n2", },
            PositionYExpression = Input { Value = "getg1d(age,0.5)+rands(-1,1,id+1)*n2", },
            PositionZExpression = Input { Value = "getb1d(age,0.5)+rands(-1,1,id+2)*n2", },
            VelocityXExpression = Input { Value = "rands(0,1,id)", },
            VelocityYExpression = Input { Value = "rands(0,1,id+1)", },
            VelocityZExpression = Input { Value = "rands(0,1,id+2)", },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Image1 = Input {
               SourceOp = "Trails1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1540, 412.5 } },
      },
      pRender1_1 = pRender {
         CtrlWZoom = false,
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            IntegrationMethod = Input { Value = FuID { "RK4" }, },
            ["MaterialID.MaterialID"] = Input { Value = 2, },
            ["ObjectID.ObjectID"] = Input { Value = 3, },
            Input = Input {
               SourceOp = "pTurbulence1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 643.5 } },
      },
      pTurbulence1 = pTurbulence {
         ID = 40,
         Inputs = {
            XStrength = Input { Value = 0.5, },
            YStrength = Input { Value = 0.5, },
            ZStrength = Input { Value = 0.5, },
            StrengthOverLifeLUT = Input {
               SourceOp = "pTurbulence1StrengthoverLifeLUT1",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "pEmitter1_1",
               Source = "Output",
            },
            Probability = Input { Value = 0.013, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 643.5 } },
      },
      pTurbulence1StrengthoverLifeLUT1 = 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 = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      Trails1 = Trails {
         Inputs = {
            Input = Input {
               SourceOp = "Background1_1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 412.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Shape3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Shape3D1YOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Shape3D1ZOffset",
               Source = "Value",
            },
            ["Transform3DOp.Scale.X"] = Input { Value = 0.5, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 1925, 247.5 } },
      },
      Shape3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 59, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { -4.92951295871282, RH = { 15.3333333333333, -3.78096197763438 }, Flags = { Linear = true } },
            [46] = { -1.48386001547751, LH = { 30.6682002217289, -2.63229612484912 }, RH = { 63.6648997445297, -0.160661889462387 } },
            [99] = { 2.4861314191197, LH = { 81.3333333333333, 1.16280094092063 } }
         }
      },
      Shape3D1YOffset = BezierSpline {
         SplineColor = { Red = 252, Green = 131, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 1.04387807842804 }, Flags = { Linear = true } },
            [46] = { 3.13163423528412, LH = { 30.6682002544403, 3.13163423528412 }, RH = { 63.6648997068405, 3.13163423528412 } },
            [99] = { 0, LH = { 81.3333333333333, 1.04387807842804 } }
         }
      },
      Shape3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 0 }, Flags = { Linear = true } },
            [46] = { 0, LH = { 30.6682002544403, 0 }, RH = { 63.6648997068405, 0 } },
            [99] = { 0, LH = { 81.3333333333333, 0 } }
         }
      },
      pEmitter1_1 = pEmitter {
         ID = 36,
         Inputs = {
            VelocityControls = Input { Value = 1, },
            Velocity = Input { Value = 0.1, },
            VelocityVariance = Input { Value = 0.1, },
            RotationControls = Input { Value = 1, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.5, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife_1",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D_1",
               Source = "Value",
            },
            ["SphereRgn.Size"] = Input { Value = 0.3, }
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 643.5 } },
      },
      pEmitter1SizeoverLife_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
      },
      pEmitter1BluroverLife2D_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
      },
      Background1_1_2 = Background {
         Inputs = {
            Width = Input { Value = 100, },
            Height = Input { Value = 32, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.X",
            },
            TopLeftGreen = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Y",
            },
            TopLeftBlue = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Z",
            },
            EffectMask = Input {
               SourceOp = "Rectangle2_2_2",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 412.5 } },
      },
      CoordTransform3D1 = CoordTransform3D {
         CtrlWZoom = false,
         Inputs = {
            TargetObject = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
      },
      Rectangle2_2_2 = RectangleMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input {
               SourceOp = "XYPath1",
               Source = "Value",
            },
            Width = Input { Value = 0.01, },
            Height = Input { Value = 1.67041800643087, },
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 379.5 } },
      },
      XYPath1 = XYPath {
         ShowKeyPoints = false,
         DrawMode = "ModifyOnly",
         Inputs = {
            X = Input {
               SourceOp = "XYPath1X",
               Source = "Value",
            },
            Y = Input {
               SourceOp = "XYPath1Y",
               Source = "Value",
            },
         },
      },
      XYPath1X = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.0051789077212806, RH = { 33, 0.33345260514752 }, Flags = { Linear = true } },
            [99] = { 0.99, LH = { 66, 0.66172630257376 }, Flags = { Linear = true } }
         }
      },
      XYPath1Y = BezierSpline {
         SplineColor = { Red = 0, Green = 255, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.5, RH = { 33, 0.5 }, Flags = { Linear = true } },
            [99] = { 0.5, LH = { 66, 0.5 }, Flags = { Linear = true } }
         }
      }
   }
}


All working as it should. But, now I would like to add a pTurbulence modifier and nothing seems affected. Even though it's behind the pCustom....

Now the particles move along the path in a very static way while I would like the stream of particles to
have a certain 'spin-off' and inner movement, like in the particle system under the one with pCustom.

I tried adding some expressions in the velocity XYZ expressions but to no avail.

Anybody know how to do this?

Thanks!

Marc
Offline

Okke Verbart

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

Re: Art directable particles and number animation

PostFri Feb 09, 2018 3:35 pm

Hi Marc - reason neither the pTurbulence, nor the velocity are working is that in the pCustom the x,y and z (px,py,pz) of the particles are set by the expressions; i.e. they will be completely determined by those expressions and any forces applied would be negated.

So, if you still want to have variation, you will have to play around a bit. I modified your comp a bit and added a perlin noise function (see intermediate variables). You can vary some of the variables by 3 sliders (Noise scale, amplitude and variation). Not all values will make sense (/will look aesthetically pleasing!), but I think you can get some usable results.

Code: Select all
{
   Tools = ordered() {
      Rectangle2_2_2 = RectangleMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input {
               SourceOp = "XYPath1",
               Source = "Value",
            },
            Width = Input { Value = 0.01, },
            Height = Input { Value = 1.67041800643087, },
         },
         ViewInfo = OperatorInfo { Pos = { 67, 30 } },
      },
      XYPath1 = XYPath {
         ShowKeyPoints = false,
         DrawMode = "ModifyOnly",
         Inputs = {
            X = Input {
               SourceOp = "Rectangle2_2_2CenterXYPath1X",
               Source = "Value",
            },
            Y = Input {
               SourceOp = "Rectangle2_2_2CenterXYPath1Y",
               Source = "Value",
            },
         },
      },
      Rectangle2_2_2CenterXYPath1X = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.0051789077212806, RH = { 33, 0.33345260514752 }, Flags = { Linear = true } },
            [99] = { 0.99, LH = { 66, 0.66172630257376 }, Flags = { Linear = true } }
         }
      },
      Rectangle2_2_2CenterXYPath1Y = BezierSpline {
         SplineColor = { Red = 0, Green = 255, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.5, RH = { 33, 0.5 }, Flags = { Linear = true } },
            [99] = { 0.5, LH = { 66, 0.5 }, Flags = { Linear = true } }
         }
      },
      pCustom1 = pCustom {
         ID = 6,
         CtrlWZoom = false,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     pCustom1 = pCustom {
                        Inputs = {
                           NumberIn2 = Input { Value = 0.197 },
                           VelocityZExpression = Input { Value = "rands(0,1,id+2)" },
                           PositionZExpression = Input { Value = "getb1d(age,0.5)+rands(-1,1,id+2)*n2" },
                           Image1 = Input {
                              SourceOp = "Trails1",
                              Source = "Output"
                           },
                           VelocityYExpression = Input { Value = "rands(0,1,id+1)" },
                           Input = Input {
                              SourceOp = "pEmitter1",
                              Source = "Output"
                           },
                           VelocityXExpression = Input { Value = "rands(0,1,id)" },
                           PositionYExpression = Input { Value = "getg1d(age,0.5)+rands(-1,1,id+1)*n2" },
                           PositionXExpression = Input { Value = "getr1d(age,0.5)+rands(-1,1,id)*n2" }
                        },
                        Name = "pCustom1",
                        CtrlWZoom = false,
                        ID = 16,
                        ViewInfo = OperatorInfo { Pos = { 1540, 412.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [2] = {
                  Tools = ordered() {
                     pCustom1 = pCustom {
                        Inputs = {
                           NumberIn2 = Input { Value = 0.197 },
                           VelocityZExpression = Input { Value = "" },
                           PositionZExpression = Input { Value = "getb1d(age,0.5)+rands(-1,1,id+2)*n2" },
                           Image1 = Input {
                              SourceOp = "Trails1",
                              Source = "Output"
                           },
                           VelocityYExpression = Input { Value = "" },
                           Input = Input {
                              SourceOp = "pEmitter1",
                              Source = "Output"
                           },
                           VelocityXExpression = Input { Value = " " },
                           PositionYExpression = Input { Value = "getg1d(age,0.5)+rands(-1,1,id+1)*n2" },
                           PositionXExpression = Input { Value = "getr1d(age,0.5)+rands(-1,1,id)*n2" }
                        },
                        CtrlWZoom = false,
                        ID = 16,
                        ViewInfo = OperatorInfo { Pos = { 1540, 412.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
            }
         },
         Inputs = {
            NumberIn2 = Input { Value = 0.197, },
            Intermediate1 = Input { Value = "id*n5", },
            Intermediate2 = Input { Value = "noise3((px+i1)/n3,(py+i1)/n3,(pz+i1)/n3)*n4", },
            Intermediate3 = Input { Value = "noise3((py+i1)/n3,(px+i1)/n3,(pz+i1)/n3)*n4", },
            Intermediate4 = Input { Value = "noise3((pz+i1)/n3,(py+i1)/n3,(px+i1)/n3)*n4", },
            PositionXExpression = Input { Value = "i2+getr1d(age,0.5)+rands(-1,1,id)*n2", },
            PositionYExpression = Input { Value = "i3+getg1d(age,0.5)+rands(-1,1,id+1)*n2", },
            PositionZExpression = Input { Value = "i4+getb1d(age,0.5)+rands(-1,1,id+2)*n2", },
            VelocityXExpression = Input { Value = "", },
            VelocityYExpression = Input { Value = "", },
            VelocityZExpression = Input { Value = "", },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Image1 = Input {
               SourceOp = "Trails1",
               Source = "Output",
            },
            NumberIn3 = Input { Value = 1.5, },
            NumberIn4 = Input { Value = 0.7, },
            NumberIn5 = Input { Value = 0.036, }
         },
         ViewInfo = OperatorInfo { Pos = { 507, 63 } },
         UserControls = ordered() {
            NumberIn3 = {
               LINKS_Name = "n3 - Noise Scale",
               LINKID_DataType = "Number",
               INPID_InputControl = "ScrewControl",
               INP_Integer = false,
               INP_MinScale = 0,
               INP_MaxScale = 10,
               INP_MinAllowed = -1000000,
               INP_MaxAllowed = 1000000,
               ICS_ControlPage = "Numbers"
            },
            NumberIn4 = {
               LINKS_Name = "n4 - noise amplitude",
               LINKID_DataType = "Number",
               INPID_InputControl = "ScrewControl",
               INP_Integer = false,
               INP_MinScale = 0,
               INP_MaxScale = 10,
               INP_MinAllowed = -1000000,
               INP_MaxAllowed = 1000000,
               ICS_ControlPage = "Numbers"
            },
            NumberIn5 = {
               LINKS_Name = "n5 - variation",
               LINKID_DataType = "Number",
               INPID_InputControl = "ScrewControl",
               INP_Integer = false,
               INP_MinScale = 0,
               INP_MaxScale = 1,
               INP_MinAllowed = -1000000,
               INP_MaxAllowed = 1000000,
               ICS_ControlPage = "Numbers"
            }
         }
      },
      Trails1 = Trails {
         Inputs = {
            Input = Input {
               SourceOp = "Background1_1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 177, 63 } },
      },
      Background1_1_2 = Background {
         Inputs = {
            Width = Input { Value = 100, },
            Height = Input { Value = 32, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.X",
            },
            TopLeftGreen = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Y",
            },
            TopLeftBlue = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Z",
            },
            EffectMask = Input {
               SourceOp = "Rectangle2_2_2",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 67, 63 } },
      },
      CoordTransform3D1 = CoordTransform3D {
         CtrlWZoom = false,
         Inputs = {
            TargetObject = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
      },
      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 = 2, },
            ["ObjectID.ObjectID"] = Input { Value = 3, },
            Input = Input {
               SourceOp = "pCustom1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 782, 63 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Shape3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Shape3D1YOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Shape3D1ZOffset",
               Source = "Value",
            },
            ["Transform3DOp.Scale.X"] = Input { Value = 0.5, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 892, -102 } },
      },
      Shape3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 59, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { -4.92951295871282, RH = { 15.3333333333333, -3.78096197763438 }, Flags = { Linear = true } },
            [46] = { -1.48386001547751, LH = { 30.6682002217289, -2.63229612484912 }, RH = { 63.6648997445297, -0.160661889462387 } },
            [99] = { 2.4861314191197, LH = { 81.3333333333333, 1.16280094092063 } }
         }
      },
      Shape3D1YOffset = BezierSpline {
         SplineColor = { Red = 252, Green = 131, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 1.04387807842804 }, Flags = { Linear = true } },
            [46] = { 3.13163423528412, LH = { 30.6682002544403, 3.13163423528412 }, RH = { 63.6648997068405, 3.13163423528412 } },
            [99] = { 0, LH = { 81.3333333333333, 1.04387807842804 } }
         }
      },
      Shape3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 0 }, Flags = { Linear = true } },
            [46] = { 0, LH = { 30.6682002544403, 0 }, RH = { 63.6648997068405, 0 } },
            [99] = { 0, LH = { 81.3333333333333, 0 } }
         }
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 892, 63 } },
      },
      pEmitter1 = pEmitter {
         ID = 1,
         Inputs = {
            VelocityControls = Input { Value = 1, },
            RotationControls = Input { Value = 1, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.5, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 507, 162 } },
      },
      pEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
      },
      pEmitter1BluroverLife2D = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
      }
   }
}
www.ablackbirdcalledsue.com
Offline
User avatar

Marc van Vliet

  • Posts: 44
  • Joined: Thu Nov 13, 2014 1:42 pm

Re: Art directable particles and number animation

PostFri Feb 09, 2018 3:49 pm

Thank you Okke! This helps a lot!!!

Return to Fusion

Who is online

Users browsing this forum: No registered users and 39 guests