Jump to: Board index » General » Fusion

Sudden burst of particles, Fusion or Blender

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

Mixolydian

  • Posts: 123
  • Joined: Wed Feb 21, 2024 11:53 pm
  • Location: Planet Earth
  • Real Name: Sebastian Alvarez

Sudden burst of particles, Fusion or Blender

PostSat Apr 06, 2024 8:52 pm

I have footage of a guy running in the woods, and at one point he hits a tree with this shoulder at high speed. In reality he hits more like a vertical thick branch, but I masked a real tree so it looks like he hit something that wounds him. When he hits the tree (which is very close to the camera), he leaves the frame right away towards our left.

I tracked the base clip, and matched the bigger tree to that tracker. Now what I want to do is have a particle burst that would look like when his shoulder hits the tree, that some dirt and preferably a few pieces of the external part of the tree (I think it's called a bark, but not sure), fly off and fall right away. The whole thing lasts a second.

Now, I tried this in Resolve Fusion with my limited knowledge after watching a few tutorials. So I started with a pEmitter, followed by a pDirectionalForce and a pRender. And at least as far as the particles go (I'll worry about the look of it later), it's like half way there, but it doesn't look like a burst. Also it starts at frame 1, when I need it to start at frame 121. But I'm sure there's a way for that.

The main problem is that while I set the point cloud in the general direction, emitting from a rectangle to more or less reproduce the shape of the tree, it's not fast enough. Now, the directional force node by default has the strength at 0.4. It seemed obvious to me that increasing that parameter would give me what I needed, keyframing it to a high number at the start and bringing it to 0 a second later.

But instead it does a weird thing where it separates the points in Z space in the shape of the emitter rectangle:

Screenshot 2024-04-06 at 16.40.13.png
Screenshot 2024-04-06 at 16.40.13.png (32.38 KiB) Viewed 658 times


Basically what I'm trying to achieve is an effect like what you would see if you blew a lot of dust off a surface, really powerful for half a second and then slower. Except that in this case, it has to be dirt and tree particles, so gravity is a factor.

So I wonder if it's worth my time to keep exploring this in Resolve Fusion, or try to find the tutorials and get it done in Blender, which maybe would have a longer render time, but shouldn't be too terrible for something that lasts a second.

Any opinions?
Last edited by Mixolydian on Sat Apr 06, 2024 9:43 pm, edited 1 time in total.
Offline

Sander de Regt

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

Re: Sudden burst of particles, Fusion or Blender

PostSat Apr 06, 2024 9:12 pm

pFriction is the node to add to this. This will slow down your particles.
To start at frame 121, just animate the number of the pEmitter to be 0 until frame 120 and then put it at however many particles you want at frame 121.
As for the directional speed, you're better off using the velocity inside the pEmitter as well to control the... initial velocity of the particles. This can be animated as well.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Sander de Regt

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

Re: Sudden burst of particles, Fusion or Blender

PostSat Apr 06, 2024 9:35 pm

Code: Select all
{
   Tools = ordered() {
      pEmitter1 = pEmitter {
         ID = 1,
         Inputs = {
            Number = Input {
               SourceOp = "pEmitter1Number",
               Source = "Value",
            },
            TemporalDistribution = Input { Value = 1, },
            VelocityControls = Input { Value = 1, },
            Velocity = Input {
               SourceOp = "pEmitter1Velocity",
               Source = "Value",
            },
            VelocityVariance = Input {
               SourceOp = "pEmitter1VelocityVariance",
               Source = "Value",
            },
            Angle = Input { Value = 90, },
            AngleVariance = Input { Value = 180, },
            Style = Input { Value = FuID { "ParticleStyleBitmap" }, },
            ["ParticleStyleBrush.Brush"] = Input {
               Value = 30,
               UserString1 = "leaf_gold_e",
            },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
            ["SphereRgn.Size"] = Input { Value = 0.035, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.2, },
            ["ParticleStyle.SizeVariance"] = Input { Value = 0.1, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeOverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BlurOverLife2D",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
      },
      pEmitter1Number = BezierSpline {
         SplineColor = { Red = 233, Green = 206, Blue = 78 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [0] = { 100, RH = { 0.666666666666667, 66.6666666666667 }, Flags = { Linear = true } },
            [2] = { 0, LH = { 1.33333333333333, 33.3333333333333 }, Flags = { Linear = true } }
         }
      },
      pEmitter1Velocity = BezierSpline {
         SplineColor = { Red = 246, Green = 164, Blue = 7 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [1] = { 0.1, RH = { 1.33333333333333, 0.137 }, Flags = { Linear = true } },
            [2] = { 0.211, LH = { 1.66666666666667, 0.174 }, RH = { 2.66666666666667, 0.140666666666667 }, Flags = { Linear = true } },
            [4] = { 0, LH = { 3.33333333333333, 0.0703333333333333 }, Flags = { Linear = true } }
         }
      },
      pEmitter1VelocityVariance = BezierSpline {
         SplineColor = { Red = 246, Green = 164, Blue = 230 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [1] = { 0.05, RH = { 1.33333333333333, 0.0543333333333333 }, Flags = { Linear = true } },
            [2] = { 0.063, LH = { 1.66666666666667, 0.0586666666666667 }, RH = { 2.66666666666667, 0.042 }, Flags = { Linear = true } },
            [4] = { 0, LH = { 3.33333333333333, 0.021 }, Flags = { Linear = true } }
         }
      },
      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 },
         CtrlWZoom = false,
      },
      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 },
         CtrlWZoom = false,
      },
      pDirectionalForce1 = pDirectionalForce {
         ID = 4,
         Inputs = {
            Strength = Input { Value = 0.2, },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Probability = Input { Value = 0.74, },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 16.5 } },
      },
      Polygon1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Polygon1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { 110, 49.5 } },
      },
      Polygon1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [1] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { Linear = true, X = -0.293752765333264, Y = 0.000411461635202337, LX = 0.0258381336938463, LY = -0.00730687064728352, RX = 0.0218287681206632, RY = -0.0675885534873722 },
                     { Linear = true, X = -0.228266460971275, Y = -0.202354198826914, LX = -0.0218287681206632, LY = 0.0675885534873722, RX = 0.0432120511776395, RY = -0.0846379183310337 },
                     { Linear = true, X = -0.0986303074383564, Y = -0.456267953820016, LX = -0.0432120511776395, LY = 0.0846379183310337, RX = 0.0530127225787536, RY = -0.0140048354072933 },
                     { Linear = true, X = 0.0604078602979042, Y = -0.498282460041895, LX = -0.0530127225787536, LY = 0.0140048354072933, RX = -0.0396481706681434, RY = 0.0724598005855612 },
                     { Linear = true, X = -0.058536651706526, Y = -0.280903058285212, LX = 0.0396481706681434, LY = -0.0724598005855612, RX = 0.0218287681206632, RY = -0.0243562354909449 },
                     { Linear = true, X = 0.00694965265546369, Y = -0.353971764758047, LX = -0.0218287681206632, LY = 0.0243562354909449, RX = 0.0498943271329445, RY = -0.0389699767855119 },
                     { Linear = true, X = 0.156632634054297, Y = -0.470881695114582, LX = -0.0498943271329445, LY = 0.0389699767855119, RX = 0.0138100369742972, RY = 0.0383610708982383 },
                     { Linear = true, X = 0.198062744977189, Y = -0.355798482419868, LX = -0.0138100369742972, LY = -0.0383610708982383, RX = 0.0441030213050135, RY = -0.0152226471818406 },
                     { Linear = true, X = 0.330371808892229, Y = -0.401466423965389, LX = -0.0441030213050135, LY = 0.0152226471818406, RX = -0.0169284324201062, RY = 0.0487124709818899 },
                     { Linear = true, X = 0.279586511631911, Y = -0.25532901101972, LX = 0.0169284324201062, LY = -0.0487124709818899, RX = -0.0423210810502654, RY = 0.186325201505729 },
                     { Linear = true, X = 0.152623268481114, Y = 0.303646593497467, LX = 0.0423210810502654, LY = -0.186325201505729, RX = -0.0507852972603185, RY = -0.0207028001673032 },
                     { Linear = true, X = 0.000267376700158591, Y = 0.241538192995557, LX = 0.0507852972603185, LY = 0.0207028001673032, RX = -0.0316294395217773, RY = 0.0462768474327954 },
                     { Linear = true, X = -0.0946209418651734, Y = 0.380368735293943, LX = 0.0316294395217773, LY = -0.0462768474327954, RX = -0.0155919772290452, RY = -0.0383610708982383 },
                     { Linear = true, X = -0.141396873552309, Y = 0.265285522599229, LX = 0.0155919772290452, LY = 0.0383610708982383, RX = 0.00623679089161807, RY = -0.0462768474327954 },
                     { Linear = true, X = -0.122686500877455, Y = 0.126454980300842, LX = -0.00623679089161807, LY = 0.0462768474327954, RX = -0.0561311180245626, RY = 0.0694152711491931 },
                     { Linear = true, X = -0.291079854951142, Y = 0.334700793748422, LX = 0.0561311180245626, LY = -0.0694152711491931, RX = 0.0120280967195491, RY = -0.0706330829237403 },
                     { Linear = true, X = -0.254995564792495, Y = 0.122801544977201, LX = -0.0120280967195491, LY = 0.0706330829237403, RX = 0.0129190668469231, RY = -0.0481035650946163 },
                     { Linear = true, X = -0.216238364251726, Y = -0.0215091503066482, LX = -0.0129190668469231, LY = 0.0481035650946163, RX = -0.0258381336938463, RY = 0.00730687064728352 }
                  }
               } }
         }
      },
      pFriction1 = pFriction {
         ID = 5,
         CtrlWZoom = false,
         Inputs = {
            VelocityFriction = Input { Value = 0.1, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Probability = Input { Value = 0.701, },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 16.5 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Gain = Input { Value = 0.449, },
            PreDividePostMultiply = Input { Value = 1, },
            Input = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 115.5 } },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalOut = Input { Value = 50, },
            Width = Input { Value = 64, },
            Height = Input { Value = 64, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Detail = Input { Value = 6.14, },
            XScale = Input { Value = 1.1, },
            Color1Red = Input { Value = 0.346, },
            Color1Green = Input { Value = 0.120754, },
            Color1Blue = Input { Value = 0.120754, },
            Color1Alpha = Input { Value = 1, },
            Color2Red = Input { Value = 0.559, },
            Color2Green = Input { Value = 0.414603592, },
            Color2Blue = Input { Value = 0.174967, },
            EffectMask = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 115.5 } },
      },
      pRender1 = pRender {
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            GlobalOut = Input { Value = 50, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            OutputMode = Input { Value = FuID { "TwoD" }, },
            ["MaterialID.MaterialID"] = Input { Value = 1, },
            ["ObjectID.ObjectID"] = Input { Value = 1, },
            Input = Input {
               SourceOp = "pFriction1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 16.5 } },
      }
   }
}
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Mixolydian

  • Posts: 123
  • Joined: Wed Feb 21, 2024 11:53 pm
  • Location: Planet Earth
  • Real Name: Sebastian Alvarez

Re: Sudden burst of particles, Fusion or Blender

PostSat Apr 06, 2024 10:17 pm

Sander de Regt wrote:pFriction is the node to add to this. This will slow down your particles.
To start at frame 121, just animate the number of the pEmitter to be 0 until frame 120 and then put it at however many particles you want at frame 121.
As for the directional speed, you're better off using the velocity inside the pEmitter as well to control the... initial velocity of the particles. This can be animated as well.


Thanks, this helps a little bit. I realized I don't need it to slow down, just animating parameters in the emitter is good enough.

Thanks for the code, but I have no idea what to do with that. Regardless, if I need to change anything, then that means going through a lot of code, something I don't have time for.

Now, how do I give these points surface, and how do I mix it with the footage? Because as far as I can tell, the merge node doesn't do it, it shows the footage but leaves the particle system out.
Offline

Sander de Regt

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

Re: Sudden burst of particles, Fusion or Blender

PostSun Apr 07, 2024 6:34 am

The 'code' is actually the nodes. Just press the 'select all' button, and copy/paste it in your Fusion composition. The nodes will automagically appear.
Sander de Regt

ShadowMaker SdR
The Netherlands

Return to Fusion

Who is online

Users browsing this forum: No registered users and 20 guests