Jump to: Board index » General » Fusion

Particles with a unique appearance

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

Simon Brown

  • Posts: 88
  • Joined: Wed Sep 02, 2015 12:06 pm

Particles with a unique appearance

PostWed Sep 02, 2015 12:10 pm

From the tool reference, under "Particle Birth Time":

"particles generated on a given frame will all have the same appearance, and will stay that way"

Is there any way to give each individual particle a unique appearance? I want to have the particles retain their initial appearance across their lifespan, but I don't want to have duplicates, and emitting one particle per frame leads to the particles appearing stationary.
Offline
User avatar

Rony Soussan

  • Posts: 727
  • Joined: Tue Nov 11, 2014 5:33 pm

Re: Particles with a unique appearance

PostWed Sep 02, 2015 5:29 pm

Yes, that is particle birth time.

Take a look at this example from the templates folder

Code: Select all
{
   Tools = ordered() {
      Text1_1 = TextPlus {
         Inputs = {
            Width = Input { Value = 64, },
            Height = Input { Value = 64, },
            Center = Input { Value = { 0.5, 0.596153846153846, }, },
            Size = Input { Value = 1.4, },
            Font = Input { Value = "Arial", },
            StyledText = Input {
               SourceOp = "TextScramble1",
               Source = "ScrambledText",
            },
            Style = Input { Value = "Bold", },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = "",
               },
            },
            Red1 = Input { Value = 0.290105814860636, },
            Blue1 = Input { Value = 0.115911111111111, },
            Alpha1 = Input { Value = 0.6, },
            ShadingGradient1 = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0, 0, 0, 1, },
                     [1] = { 1, 1, 1, 1, },
                  },
               },
            },
            RenderToDPTFile = Input { Disabled = true, },
            DPTType = Input { Disabled = true, },
            DPTResolution = Input { Disabled = true, },
         },
         ViewInfo = OperatorInfo { Pos = { 745.201, 0.455444, }, },
      },
      TextScramble1 = TextScramble {
         CtrlWZoom = false,
         Inputs = {
            Randomness = Input { Value = 1, },
            InputText = Input { Value = "a", },
         },
      },
      pSpawn1 = pSpawn {
         ID = 14,
         Inputs = {
            Number = Input { Value = 0.5, },
            Lifespan = Input { Value = 30, },
            VelocityControls = Input { Value = 1, },
            VelocityTransfer = Input { Value = 0, },
            RotationControls = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            Input = Input {
               SourceOp = "pEmitter1_1",
               Source = "Output",
            },
            Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1, },
                  },
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.05, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pSpawn1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0.106383, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pSpawn1BluroverLife2D",
               Source = "Value",
            },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "Text1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1020.2, 99.4554, }, },
      },
      pSpawn1SizeoverLife = 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, },
         NameSet = true,
      },
      pSpawn1BluroverLife2D = 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, },
         NameSet = true,
      },
      pEmitter1_1 = pEmitter {
         ID = 17,
         Inputs = {
            Number = Input { Value = 30, },
            NumberVariance = Input { Value = 10, },
            Lifespan = Input { Value = 75, },
            LifespanVariance = Input { Value = 50, },
            VelocityControls = Input { Value = 1, },
            Velocity = Input { Value = 0.3, },
            Angle = Input { Value = -90, },
            RotationControls = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
            Region = Input { Value = FuID { "CubeRgn", }, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1, },
                  },
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.05, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife_1",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D_1",
               Source = "Value",
            },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 1, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "Text1_1",
               Source = "Output",
            },
            ["CubeRgn.Width"] = Input { Value = 10, },
            ["CubeRgn.Height"] = Input { Value = 5, },
            ["CubeRgn.Depth"] = Input { Value = 10, },
         },
         ViewInfo = OperatorInfo { Pos = { 910.201, 99.4554, }, },
      },
      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, },
      },
      pRender1_1 = pRender {
         Inputs = {
            ["_MotionBlurWarning"] = Input { Disabled = true, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            OutputMode = Input { Disabled = true, },
            IntegrationMethod = Input { Value = FuID { "RK4", }, },
            ["MaterialID.MaterialID"] = Input { Value = 2, },
            ["ObjectID.ObjectID"] = Input { Value = 2, },
            Input = Input {
               SourceOp = "pSpawn1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1130.2, 99.4554, }, },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Camera3D1ZOffset",
               Source = "Value",
            },
            AoV = Input { Value = 24.3265863475745, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis", }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 1130.2, 165.455, }, },
      },
      Camera3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 56, Blue = 46, },
         NameSet = true,
         KeyFrames = {
            [0] = { 5, RH = { 133.333333333333, 3.33333333333333, }, Flags = { Linear = true, }, },
            [400] = { 0, LH = { 266.666666666667, 1.66666666666667, }, Flags = { Linear = true, }, },
         },
      },
      Merge3D1_1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1_1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1240.2, 165.455, }, },
      },
      Renderer3D1 = Renderer3D {
         CtrlWZoom = false,
         Inputs = {
            Width = Input { Value = 1280, },
            Height = Input { Value = 720, },
            SceneInput = Input {
               SourceOp = "Merge3D1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1350.2, 165.455, }, },
      },
   },
}


Here we have a text tool scrambling letters, and the particle system picks each letter and holds that letter as the particle.
Offline

Sander de Regt

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

Re: Particles with a unique appearance

PostThu Sep 03, 2015 8:37 am

Unfortunately this still doesn't work with images as far as I know, which would be one of the greatest additions to particles possible. (but it probably goes against something inside of Fusion's core code, since it has never been implemented so far)

Selecting a random 'sprite' from a sequence without having to do preroll workarounds, would be great.

Also the way Fusion creates particle positions should IMO be based on real time (i.e. seconds not frames) That's the only way you'll ever be able to implement motion-blur that doesn't result in particles changing position when you change the motion blur values.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

Rony Soussan

  • Posts: 727
  • Joined: Tue Nov 11, 2014 5:33 pm

Re: Particles with a unique appearance

PostThu Sep 03, 2015 5:02 pm

Fusion does indeed do what your looking for, I guess I'm not understanding.

If you look at the text tool, it's scrambling letters randomly, these letters are becoming the birth particle.
To pre-roll just set a negative global in. -100 but render range start at 0 or 1
Now when you go to frame one, you will have 100 frames of preroll
Offline

Sander de Regt

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

Re: Particles with a unique appearance

PostFri Sep 04, 2015 9:12 am

Ideally there shouldn't be a need of a preroll. If you make an explosion or smoke stack for example. You'd want 10 different cloud puffs to appear randomly from frame 0. You can't do that with image sequences as far as I know, since there is no subframe calculation for timespeed/stretcher as far as I know.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

Rony Soussan

  • Posts: 727
  • Joined: Tue Nov 11, 2014 5:33 pm

Re: Particles with a unique appearance

PostFri Sep 04, 2015 4:03 pm

Correct.
That part has alway been an issue.
There is a preroll option in prender but I think that's 2D
I believe it is 2D only

That being said, you are correct, not ideal.

So, set a negative value, but don't have your particles visible until frame 1.
Then apply your explosion settings. Not ideal, I get that.


Also, you could have several pMerge,.from instance of emitter, with alt bitmap. Just change random seed generator.

Best I can do for you right now.
Offline
User avatar

Chad Capeland

  • Posts: 3025
  • Joined: Mon Nov 10, 2014 9:40 pm

Re: Particles with a unique appearance

PostTue Sep 08, 2015 7:01 pm

Rony Soussan wrote:Best I can do for you right now.


The particles can have vertex color, so really, you just need a shader for that. Randomize the input frame based on say, vertexcolor.r?

And TimeSpeed/TimeStretcher could sample subframes; if you make a Fuse for that, you may find out that that's how it would work by default unless you explicitly told it not to. :)
Chad Capeland
Indicated, LLC
www.floweffects.com
Offline
User avatar

Rony Soussan

  • Posts: 727
  • Joined: Tue Nov 11, 2014 5:33 pm

Re: Particles with a unique appearance

PostTue Sep 08, 2015 8:24 pm

Chad, this is an english speaking forum!

Return to Fusion

Who is online

Users browsing this forum: No registered users and 71 guests