Jump to: Board index » General » Fusion

Editing already generate particles

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

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Editing already generate particles

PostFri May 19, 2017 10:08 am

Hi guys,

I'm looking to create a nigh sky for my VR and part of it are going to be blinking stars. I've already created a system, where particles are generated on mesh (sphere in that case). I've noticed that the sliding Size Variance modifier up and down gives a really good result so I modified it with a shake, but it only affects particles that will be generated (its static). I have my stars generated on to the sphere at frame 0 and at the frame 1 Number is set to 0 so its not generating any more stars. How can you edit already generated particles?

My comp:
Code: Select all
Composition {
   CurrentTime = 0,
   RenderRange = { 0, 1000 },
   GlobalRange = { 0, 1000 },
   CurrentID = 18,
   MotionBlur = false,
   Proxy = true,
   PlaybackUpdateMode = 0,
   Version = "Fusion 8.2.1 build 6",
   SavedOutputs = 2,
   HeldTools = 0,
   DisabledTools = 0,
   LockedTools = 0,
   AudioOffset = 0,
   AutoRenderRange = true,
   Resumable = true,
   OutputClips = {
   },
   Tools = {
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.Width"] = Input { Value = 10, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 8.63829787234043, },
            ["SurfaceSphereInputs.EndLat"] = Input { Value = 0, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 251, 211 } },
      },
      pEmitter1 = pEmitter {
         ID = 2,
         CtrlWZoom = false,
         Inputs = {
            RandomSeed = Input { Value = 26301, },
            Number = Input {
               SourceOp = "pEmitter1Number",
               Source = "Value",
            },
            Lifespan = Input { Value = 3000, },
            Style = Input { Value = FuID { "ParticleStyleBlob" }, },
            Region = Input { Value = FuID { "MeshRegion" }, },
            ["ParticleStyle.ColorVariance"] = Input { Value = 1, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 }
                  }
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.225581395348837, },
            ["ParticleStyle.SizeVariance"] = Input { Value = 0.297674418604651, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["SphereRgn.Size"] = Input { Value = 30, },
            ["BezierRgn.Polyline"] = Input {
               Value = Polyline {
               },
            },
            ["RectRgn.Width"] = Input { Value = 20, },
            ["RectRgn.Height"] = Input { Value = 20, },
            ["MeshRegion.RegionType"] = Input { Value = 0, },
            ["MeshRegion.MeshInput"] = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 369, 211 } },
      },
      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,
      },
      pEmitter1Number = BezierSpline {
         SplineColor = { Red = 233, Green = 206, Blue = 78 },
         NameSet = true,
         KeyFrames = {
            [0] = { 18.2978723404255, RH = { 0.333333333333333, 12.1985815602837 }, Flags = { Linear = true } },
            [1] = { 0, LH = { 0.666666666666667, 6.09929078014184 }, Flags = { Linear = true } }
         }
      },
      pRender1 = pRender {
         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 = "pEmitter1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 484, 211 } },
      }
   },
   Views = {
      {
         FrameTypeID = "ChildFrame",
         Mode = 3,
         LayoutPreset = 0,
         Left = 0,
         Top = 27,
         Width = 1680,
         Height = 871,
         Views = ordered() {
            Main = MultiView {
               Active = "Flow",
               ViewList = ordered() {
                  Flow = "FlowView",
                  Console = "ConsoleView",
                  Timeline = "TimelineView",
                  Spline = "SplineEditorView",
                  Info = "InfoView",
                  Chat = "ChatView"
               },
               Flow = FlowView {
                  Flags = {
                     AutoHideNavigator = true,
                     AutoSnap = true,
                     RemoveRouters = true
                  },
                  NavigatorSize = { 200, 140 },
                  Direction = "Horizontal",
                  PipeStyle = "Direct",
                  Scale = 1,
                  Offset = { 26, -164 }
               },
               Timeline = TimelineView {
                  TreeControlState = {
                  },
                  DisplayMode = "All Tools",
                  ShowCurrentTimeTools = false,
                  Filter = "Show All",
                  ShowSelectedTools = false,
                  ShowAnimatedToolsOnly = false,
                  ShowEditBoxes = false,
                  KeyFrameView = {
                     Position = { Left = 150, Bottom = 87 },
                     ScaleX = 2.14424951267057,
                     OffsetX = -501.754385964912,
                     OffsetY = 0,
                     AutoScaling = "scroll",
                     AutoSnapTo = "frame",
                     AutoSnapToGuidelines = false,
                     GuidelinesGrabEnabled = true,
                     GuidelinesSnapTo = "frame"
                  },
                  Spreadsheet = { LeftPos = 150, Visible = false }
               },
               Spline = SplineEditorView {
                  LeftPos = 238,
                  ScaleX = 0.2,
                  ScaleY = 0.00338983050847458,
                  OffsetX = -3.8,
                  OffsetY = -1.38777878078145e-17,
                  AutoScaling = "scroll",
                  AutoSnapTo = "frame",
                  AutoSnapToGuidelines = false,
                  GuidelinesSnapTo = "frame",
                  ShowKeyMarkers = false,
                  IndependentHandles = false,
                  ShowNonSplineModifiers = false,
                  GuidelinesGrabEnabled = true,
                  ShowOneToolOnly = false,
                  ShowSelectedTools = false,
                  ShowAllInputs = false,
                  Filter = "Show All"
               },
            },
            Controls = MultiView {
               Active = "Tools",
               ViewList = ordered() {
                  Tools = "ControlView",
                  Modifiers = "ModifierView"
               },
            },
            Left = "PreviewContainer",
            Right = "PreviewContainer",
            Transport = "TransportView",
            Time = "TimeView"
         },
         Layout = {
            Columns = 2,
            RatioX = 1,
            RatioY = 1,
            {
               Rows = 3,
               RatioX = 0.794626865671642,
               RatioY = 0.0103567318757192,
               {
                  Columns = 2,
                  RatioX = 1,
                  RatioY = 0.820393974507532,
                  { ID = "Left", RatioX = 1, RatioY = 100.749379652605, Pop = true },
                  { ID = "Right", RatioX = -2, Pop = true },
                  Pop = true
               },
               { ID = "Main", RatioY = 0.112398609501738, Pop = true },
               { ID = "Time", SnapY = 56, Flat = true }
            },
            {
               Rows = 2,
               PixelX = 342,
               { ID = "Controls", RatioX = 1, RatioY = 1 },
               { ID = "Transport", FixedY = -2 }
            }
         }
      }
   },
   Prefs = {
      Comp = {
         AutoSave = {
            Delay = 180,
         },
         Paths = {
         },
         LastFile = "/Users/domikoko/Desktop/Projects/Pepa Pig VR/PREVIEW",
         FrameFormat = {
            GuideRatio = 1.77777777777778,
         },
         Memory = {
            Render = {
               SimultaneousBranching = true
            },
            FramesAtOnce = 5,
         },
         Views = {
            Right = {
               SideB = {
                  PrevCtrlInactiveColor = 4278255360,
                  PickW = 1,
                  PickH = 1,
                  PrevCtrlActiveColor = 4278190335,
                  Viewer = {
                     EnableLUTs = false,
                     LUTPlugin = "Comp.Views.Right.SideB.",
                     FitMarginY = 0,
                     FitMarginX = 0,
                     FitMarginType = 0,
                     FarZ = -1000,
                     NearZ = 0
                  }
               },
            },
            Left = {
               SideB = {
                  PrevCtrlInactiveColor = 4278255360,
                  PickW = 1,
                  PickH = 1,
                  PrevCtrlActiveColor = 4278190335,
                  Viewer = {
                     EnableLUTs = false,
                     LUTPlugin = "Comp.Views.Left.SideB.",
                     FitMarginY = 0,
                     FitMarginX = 0,
                     FitMarginType = 0,
                     FarZ = -1000,
                     NearZ = 0
                  }
               },
               Viewer = {
               },
               View3D = {
                  CameraName = "Perspective",
                  CamPersp = {
                     Position = {
                        X = 2.72762989997864,
                        Y = -1.92044007778168,
                        Z = 1.32059478759766
                     },
                     Rotation = {
                        X = 19.6000003814697,
                        Y = 1043.60009765625,
                        Z = 0
                     },
                     Scale = 0.0883883461356163
                  },
                  CamFront = {
                     Position = {
                        X = 0,
                        Y = 0,
                        Z = 0
                     },
                     Rotation = {
                        X = 0,
                        Y = 0,
                        Z = 0
                     },
                     Scale = 1
                  },
                  CamTop = {
                     Position = {
                        X = 0,
                        Y = 0,
                        Z = 0
                     },
                     Rotation = {
                        X = 90,
                        Y = 0,
                        Z = 0
                     },
                     Scale = 1
                  },
                  CamRight = {
                     Position = {
                        X = 0,
                        Y = 0,
                        Z = 0
                     },
                     Rotation = {
                        X = 0,
                        Y = -90,
                        Z = 0
                     },
                     Scale = 1
                  },
                  CamLeft = {
                     Position = {
                        X = 0,
                        Y = 0,
                        Z = 0
                     },
                     Rotation = {
                        X = 0,
                        Y = 90,
                        Z = 0
                     },
                     Scale = 1
                  }
               }
            },
            View1 = {
               SideB = {
                  PrevCtrlInactiveColor = 4278255360,
                  PickW = 1,
                  PickH = 1,
                  PrevCtrlActiveColor = 4278190335,
                  Viewer = {
                     EnableLUTs = false,
                     LUTPlugin = "Comp.Views.View1.SideB.",
                     FitMarginY = 0,
                     FitMarginX = 0,
                     FitMarginType = 0,
                     FarZ = -1000,
                     NearZ = 0
                  }
               },
               PrevCtrlInactiveColor = 0,
               PickW = 1,
               PrevCtrlActiveColor = 0,
               PickH = 1,
               AlwaysOnTop = true,
               FullScreen = false
            },
            View2 = {
               SubView = {
                  Enabled = false
               },
               PickW = 1,
               PickH = 1,
               FullScreen = false,
               AlwaysOnTop = true,
               QuadView = false
            },
         },
         QuickTime = {
         },
      }
   }
}

Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 3:06 pm

Hi - there's probably a few ways in which you can do this, but what I typically do is use the pCustom tool for things like this.

Like this:
Code: Select all

{
   Tools = ordered() {
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.Width"] = Input { Value = 10, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 8.63829787234043, },
            ["SurfaceSphereInputs.EndLat"] = Input { Value = 0, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 18, 155 } },
      },
      pEmitter1 = pEmitter {
         ID = 3,
         Inputs = {
            ["SphereRgn.Size"] = Input { Value = 30, },
            ["BezierRgn.Polyline"] = Input {
               Value = Polyline {
               },
            },
            ["RectRgn.Width"] = Input { Value = 20, },
            ["RectRgn.Height"] = Input { Value = 20, },
            RandomSeed = Input { Value = 26301, },
            Number = Input {
               SourceOp = "pEmitter1Number",
               Source = "Value",
            },
            Lifespan = Input { Value = 3000, },
            Style = Input { Value = FuID { "ParticleStyleBlob" }, },
            Region = Input { Value = FuID { "MeshRegion" }, },
            ["ParticleStyle.ColorVariance"] = Input { Value = 1, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 }
                  }
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.225581395348837, },
            ["ParticleStyle.SizeVariance"] = Input { Value = 0.297674418604651, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.MergeControls"] = Input { Value = 1, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["MeshRegion.RegionType"] = Input { Value = 0, },
            ["MeshRegion.MeshInput"] = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 136, 155 } },
      },
      pEmitter1Number = BezierSpline {
         SplineColor = { Red = 233, Green = 206, Blue = 78 },
         NameSet = true,
         KeyFrames = {
            [0] = { 18.2978723404255, RH = { 0.333333333333333, 12.1985815602837 }, Flags = { Linear = true } },
            [1] = { 0, LH = { 0.666666666666667, 6.09929078014183 }, Flags = { Linear = true } }
         }
      },
      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 },
         NameSet = true,
      },
      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 },
         NameSet = true,
      },
      pCustom1 = pCustom {
         ID = 7,
         Inputs = {
            SizeExpression = Input { Value = "abs(sin(time+(5*id)))", },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 270, 137 } },
      },
      pRender1 = 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 = "pCustom1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 422, 147 } },
      }
   },
   ActiveTool = "pRender1"
}

www.ablackbirdcalledsue.com
Offline

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Re: Editing already generate particles

PostFri May 19, 2017 3:33 pm

Wow it looks pretty good, almost as I wanted to do :D

Would you explain how did you do it? I've noticed that you put some sort of formula in the Size Expression section. Is that the only thing you changed? How does it work?

Sorry to flood you with the questions, but I'd really like to know how it works :)

Cos the particles size is going down to zero, and i would like to have just a small change, so they wont disappear totally, just blink a little bit
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 3:43 pm

Hey Dominik - no issue :-) Yes, that's the only thing I changed:

- Time refers to the current frame
- ID refers to particle (each one has one) --> creates the variety
- SIN --> SINE function
- ABS ensures everything remains positive (i.e. -1 becomes 1)

Maybe a shameless plug (but relevant), see a tutorial I did some time ago on the pCustom tool:

www.ablackbirdcalledsue.com
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 3:45 pm

oh, sorry, and having it bigger:

you can add another little thing: the max function:

max(abs(sin(time+(5*id))),0.5)

so, here the 0.5 is the minimum size a particle will have. :-)

Hope this helps.
www.ablackbirdcalledsue.com
Offline
User avatar

Bryan Ray

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

Re: Editing already generate particles

PostFri May 19, 2017 3:58 pm

Looks like I'm cross-posting with Okke, but I'll leave this here, anyway, as it's a slightly different approach, and it explains the math with a little bit more detail.


Give this a try:

abs(sin(time+(5*id))) * 0.25 + 0.5

Adding the constant creates a "floor" value, which the particle size cannot go below. Since that makes all the particles bigger, you can use a multiplier first to reduce the maximum scale. You could also put some of these numbers into the slider controls:

abs(sin(time+(5*id))) * n2 + n1

Now the Number In 1 control is your minimum size, and the Number In 2 control is the scaling multiplier. If you want a control to adjust the speed of the twinkle:

abs(sin(time * n3+(5*id))) * n2 + n1

Now let's break down what's going on. The twinkling behavior is created using the sin function. You may recall from mathematics classes, that sin(x) oscillates between -1 and 1 continuously as x increases. By using the time variable in the sin function: sin(time), you will get a number that oscillates as the frame count increases. The part where Okke has added 5*id is a way to keep the particles from all getting the same result at once. Just using the particle's id would probably not create enough variation—all of the particles would be around the same place on the wave and would still move together, so Okke's multiplied it to spread them out along the curve.

You don't want particles with a negative sign, though; that's nonsensical. The abs() function returns only the magnitude of a number. That is, it turns -1 into +1 and -0.25 into +0.25. The sin curve turns into a sort of bouncing curve, reversing direction when it hits zero.

Here are some graphs to illustrate:
https://www.desmos.com/calculator/sr3mdxguwz
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 4:05 pm

Thanks for elaborating on that Bryan!
www.ablackbirdcalledsue.com
Offline

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Re: Editing already generate particles

PostFri May 19, 2017 5:34 pm

Before I'll commence with further questions:

Wow, thanks a lot guys. It's more than I could ask for :) I really enjoyed that tutorial that you've posted Okke, and thanks a lot Bryan for breaking down the formula for me. I've always knew that studying maths would come up handy at some point of my life :D

Now to the question:

Whereas I have a 80% understandment of what the formula is doing, how to modify and so on, I've got a problem understanding, at which point it is deriving what time does a specific particle starts to grow, at what point does the draw of the particles happens and how is it even possible that it fits in a one simple formula. In normal math it would look like that:
First draw the particle that will start to grow at frame 1, then draw the particle that will start to grow at frame 2 and so on using theory of probability.

Then calculate the absolute value of sine(frame_value*particle_id*constant) to calculate the size of the specific particle in a given frame.

And after calculating all of it, the outcome value through a algorithm (x=size_value)
if(x>=0) then write x
if(x<0) then write x*(-1)

So my question is, how does the formula do it all in just a single line? :lol:
And what does the n2 do?
Offline

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Re: Editing already generate particles

PostFri May 19, 2017 5:40 pm

Ohhhhhh, n2 makes sure the value will never go below 0.5, right?
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 5:44 pm

Hey Dominik - glad you enjoyed my tutorial :-)

Think of it this way: the formulas on the particle tab are assessed once per frame, once per particle.

So, imagine at frame 23, for particle ID = 3, it would calculate:

max(abs(sin(time+(5*id))),0.5) --> max(abs(sin(23+(5*3))), 0.5)

This then becomes the size of the particle ID = 3 at frame 23, particle ID 4 would be:

max(abs(sin(23+(5*4))), 0.5)

And so on for all particles, for each frame. The actual drawing of the particles happens in the renderer.

I hope that makes sense?
www.ablackbirdcalledsue.com
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 5:47 pm

Dominik Rabalski wrote:Ohhhhhh, n2 makes sure the value will never go below 0.5, right?


Yes, in Bryan's formula it does that indeed. In my formula it's the Max function. This basically takes the max from any given number of values. So, max (1,5,7) would yield 7.

So, if in my formula the SIN function would dip below 0.5, the max function ensures that the 0.5 value will be selected (instead of the SIN function).

In this formula, as with Bryan's you can also replace the 0.5 with n2 and drive it with the numbers tab.
www.ablackbirdcalledsue.com
Offline

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Re: Editing already generate particles

PostFri May 19, 2017 6:04 pm

Ohhhhhhhh, so it calculates growth for every single particle in every single frame but bcs the ID value is different, the growth value is different, right?
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 6:10 pm

that's it! :-)
www.ablackbirdcalledsue.com
Offline

Okke Verbart

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

Re: Editing already generate particles

PostFri May 19, 2017 6:11 pm

to be pedantic, it calculates the size, not the growth ;-) But, yeh, you get the idea!
www.ablackbirdcalledsue.com
Offline

Dominik Rabalski

  • Posts: 48
  • Joined: Tue Mar 07, 2017 8:56 am

Re: Editing already generate particles

PostFri May 19, 2017 6:26 pm

Yeah, you're right :D

But one thing still bothers me: why the increesing the overall particle size value, by multiplying the time (which is treated as a value here, not as a time as such) speeds up the growth?
Offline
User avatar

Bryan Ray

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

Re: Editing already generate particles

PostFri May 19, 2017 6:38 pm

Remember that you have a wave whose x-axis is time. In the graphs I linked to earlier, try multiplying x by some value and notice how it changes the period of the wave. That is what's happening. Everything inside the sin() function manipulates the wave. Everything outside the sin() function manipulates the overall particle size, which the sin() is modulating.

sin(x*2) creates a wave that is twice as fast—the particles shrink and grow more rapidly.

sin(x+2) creates one that is delayed by two units—it slides the wave to the right on the graph, and that axis in this expression is time. The rate of change is the same, but the value is chosen from a different point along the wave.

sin(x) + 2 increases the value of the entire wave by 2 units, placing it higher on the graph. The particles will all get larger.

sin(x) * 2 increases the amplitude of the wave—the maximum values get larger, but the zero stays put. The particles will get bigger, but their minimum size is unchanged.

edit: This all works exactly the same with cos(), by the way; it's just offset by a quarter wavelength.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Okke Verbart

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

Re: Editing already generate particles

PostSat May 20, 2017 9:58 pm

BTW Bryan, I checked out your blog... Very good stuff! I understand you're writing a book? I'll definitely buy a copy!
www.ablackbirdcalledsue.com
Offline
User avatar

Bryan Ray

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

Re: Editing already generate particles

PostSun May 21, 2017 4:25 am

Thanks! You may be waiting a while; I'm writing in my off hours whenever the mood strikes me, and there's no publisher asking for it (yet). But I have high hopes that the first draft will be done this year, and then I can kick off revisions and maybe think about renting equipment to shoot proper demo materials. In the meantime, feel free to leave comments and critiques on the blog.

I'll tell you what: you don't really learn a program until you start writing about it! This project has taken my compositing skill to an entirely new level. By the time I'm done, I may be halfway competent!
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Jens Noelte

  • Posts: 35
  • Joined: Mon Sep 26, 2016 5:25 pm

Re: Editing already generate particles

PostSun May 21, 2017 6:13 am

Someone please let me know how to make particles stick to a surface once they hit it. I tried using pBounce, elasticity at 0, roughness maxed out at 1,000,000. Yet some particles still move after they hit the region specified in pBounce.
Offline

Sander de Regt

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

Re: Editing already generate particles

PostSun May 21, 2017 6:22 am

Try using pFriction with all the values cranked up really high with the mesh as a region.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Jens Noelte

  • Posts: 35
  • Joined: Mon Sep 26, 2016 5:25 pm

Re: Editing already generate particles

PostSun May 21, 2017 6:48 am

Thanks Sander! I added pFriction after pBounce, turned up high, it pushed the particles back. Turned up a little and it stopped all motion. So thanks again, I got it now.
Offline

Sander de Regt

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

Re: Editing already generate particles

PostSun May 21, 2017 6:58 am

Try it without the pBounce at all, maybe that will work even better.
Sander de Regt

ShadowMaker SdR
The Netherlands

Return to Fusion

Who is online

Users browsing this forum: No registered users and 25 guests