Jump to: Board index » General » Fusion

Rain Drop Splash

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

Joe Murray

  • Posts: 12
  • Joined: Fri Jul 04, 2014 2:23 pm

Rain Drop Splash

PostThu Jun 20, 2019 2:25 am

Can anyone explain how to use Fusion to replicate the particle effect in AE Trapcode Particular where each rain particle (streak) is interrupted by a bounce surface and triggers another emitter that can be set to emit multiple smaller particles from a circular emitter with a short life span that simulates a splash. It's my go-to in AE and I'm trying to make the switch to Resolve Studio. The rain tutorials on the web are all lacking ..either too complicated and speed by or overly simple. TY Joe
Joe Murray | nativesonsfilms
Directors Guild Of America | Director
Int'l Cinematographers Guild | Director of Photography
www.nativesonsfilms.com
Offline

Okke Verbart

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

Re: Rain Drop Splash

PostThu Jun 20, 2019 6:30 am

Hi - maybe something like the below example? (just copy & paste into a new fusion composition). In this case, it's a standard emitter with a rectangular emitter region, a directional force (to make the rain fall), then a pspawn based on a cube region that tells it when to spawn particles. These will be the "splashes". Then you just need to ensure they've got some motion and motion variation. Finally a pkill (with the kill region just below the pspawn) and finally e prender.

Code: Select all
{
   Tools = ordered() {
      pEmitter1 = pEmitter {
         ID = 1,
         Inputs = {
            Number = Input { Value = 5, },
            RotationControls = Input { Value = 1, },
            RotationMode = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            Set1 = Input { Value = 1, },
            Style = Input { Value = FuID { "ParticleStyleLine" }, },
            Region = Input { Value = FuID { "RectRgn" }, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.285, },
            ["ParticleStyle.SizeVariance"] = Input { Value = 0.0794, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["RectRgn.Translate.Y"] = Input { Value = 0.965882282075393, },
            ["RectRgn.Rotate.X"] = Input { Value = 90, },
            ["RectRgn.Width"] = Input { Value = 1, },
            ["RectRgn.Height"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 123, 52 } },
      },
      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,
      },
      pDirectionalForce1 = pDirectionalForce {
         ID = 5,
         Inputs = {
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            SetMode = Input { Value = FuID { "Affect" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 233, 52 } },
      },
      pSpawn1 = pSpawn {
         ID = 6,
         CtrlWZoom = false,
         Inputs = {
            Lifespan = Input { Value = 8, },
            VelocityControls = Input { Value = 1, },
            VelocityTransfer = Input { Value = 0, },
            Velocity = Input { Value = 0.1, },
            Angle = Input { Value = 90, },
            AngleVariance = Input { Value = 95.2, },
            AngleZ = Input { Value = -90, },
            AngleZVariance = Input { Value = 360, },
            RotationControls = Input { Value = 1, },
            RotationMode = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            NewSet2 = Input { Value = 1, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Style = Input { Value = FuID { "ParticleStyleLine" }, },
            RegionMode = Input { Value = FuID { "Entering" }, },
            Region = Input { Value = FuID { "CubeRgn" }, },
            ["ParticleStyle.ColorControls"] = Input { Value = 1, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pSpawn1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0.736, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pSpawn1BluroverLife2D",
               Source = "Value",
            },
            ["CubeRgn.Width"] = Input { Value = 1, },
            ["CubeRgn.Height"] = Input { Value = 0.1, },
            ["CubeRgn.Depth"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 399, 55 } },
      },
      pSpawn1SizeoverLife = 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,
      },
      pSpawn1BluroverLife2D = 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,
      },
      pKill1 = pKill {
         ID = 10,
         Inputs = {
            Input = Input {
               SourceOp = "pSpawn1",
               Source = "Output",
            },
            RegionMode = Input { Value = FuID { "Intersecting" }, },
            Region = Input { Value = FuID { "CubeRgn" }, },
            SetMode = Input { Value = FuID { "Affect" }, },
            Set2 = Input { Value = 0, },
            ["CubeRgn.Translate.Y"] = Input { Value = -0.05, },
            ["CubeRgn.Width"] = Input { Value = 1, },
            ["CubeRgn.Height"] = Input { Value = 0.1, },
            ["CubeRgn.Depth"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 510, 55 } },
      },
      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 = 1, },
            ["ObjectID.ObjectID"] = Input { Value = 1, },
            Input = Input {
               SourceOp = "pKill1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 725, 55 } },
      }
   }
}
www.ablackbirdcalledsue.com
Offline

Joe Murray

  • Posts: 12
  • Joined: Fri Jul 04, 2014 2:23 pm

Re: Rain Drop Splash

PostFri Jun 21, 2019 4:41 pm

Thank you very much Okke.
Joe Murray | nativesonsfilms
Directors Guild Of America | Director
Int'l Cinematographers Guild | Director of Photography
www.nativesonsfilms.com
Offline

Joe Murray

  • Posts: 12
  • Joined: Fri Jul 04, 2014 2:23 pm

Re: Rain Drop Splash

PostSat Jun 22, 2019 1:23 am

Hey Okke,

Thank you for the node tree...they look like it should be very effective with some of the tweaks you suggested, however I'm having trouble compositing your nodes on top of my media.

Question: but would you mind looking at my node tree and telling me what I'm doing wrong? I can see the composited effect on the merge node but the render node only shows the media and not your particle node chain. I've attached screen grabs.
node tree.png
node tree.png (159 KiB) Viewed 974 times

merge node.png
merge node.png (849.51 KiB) Viewed 974 times

render node.png
render node.png (924.46 KiB) Viewed 974 times


TY
Joe
Joe Murray | nativesonsfilms
Directors Guild Of America | Director
Int'l Cinematographers Guild | Director of Photography
www.nativesonsfilms.com
Offline

RCModelReviews

  • Posts: 485
  • Joined: Wed Jun 06, 2018 1:39 am
  • Real Name: Bruce Simpson

Re: Rain Drop Splash

PostSat Jun 22, 2019 3:04 am

I don't see any lighting on this node tree. :o
Resolve 15 Studio, Fusion 9 Studio
CPU: i7 8700, OS: Windows 10 (1709) 32GB RAM, GPU: GTX1060/6
I'm refugee from Sony Vegas slicing video for my YouTube channels.
Offline

Okke Verbart

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

Re: Rain Drop Splash

PostSat Jun 22, 2019 8:32 am

Hi Joe - you probably set the renderer3d to "software renderer". If you change this to OpenGL it should work. I think the software renderer doesn't play well with the "Line" style. If you don't add any light to the scene, ensure you have "enable lighting" disabled in the renderer 3d. See example below.

Hope that helps!

Code: Select all
{
   Tools = ordered() {
      pEmitter1 = pEmitter {
         ID = 1,
         Inputs = {
            Number = Input { Value = 5, },
            RotationControls = Input { Value = 1, },
            RotationMode = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            Set1 = Input { Value = 1, },
            Style = Input { Value = FuID { "ParticleStyleLine" }, },
            Region = Input { Value = FuID { "RectRgn" }, },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 0.285, },
            ["ParticleStyle.SizeVariance"] = Input { Value = 0.0794, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["RectRgn.Translate.Y"] = Input { Value = 0.965882282075393, },
            ["RectRgn.Rotate.X"] = Input { Value = 90, },
            ["RectRgn.Width"] = Input { Value = 1, },
            ["RectRgn.Height"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 474, 195 } },
      },
      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,
      },
      pDirectionalForce1 = pDirectionalForce {
         ID = 4,
         Inputs = {
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            SetMode = Input { Value = FuID { "Affect" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 584, 195 } },
      },
      pSpawn1 = pSpawn {
         ID = 5,
         Inputs = {
            Lifespan = Input { Value = 8, },
            VelocityControls = Input { Value = 1, },
            VelocityTransfer = Input { Value = 0, },
            Velocity = Input { Value = 0.1, },
            Angle = Input { Value = 90, },
            AngleVariance = Input { Value = 95.2, },
            AngleZ = Input { Value = -90, },
            AngleZVariance = Input { Value = 360, },
            RotationControls = Input { Value = 1, },
            RotationMode = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            NewSet2 = Input { Value = 1, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Style = Input { Value = FuID { "ParticleStyleLine" }, },
            RegionMode = Input { Value = FuID { "Entering" }, },
            Region = Input { Value = FuID { "CubeRgn" }, },
            ["ParticleStyle.ColorControls"] = Input { Value = 1, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pSpawn1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0.736, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pSpawn1BluroverLife2D",
               Source = "Value",
            },
            ["CubeRgn.Width"] = Input { Value = 1, },
            ["CubeRgn.Depth"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 750, 198 } },
      },
      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 },
      },
      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 },
      },
      pKill1 = pKill {
         ID = 8,
         Inputs = {
            Input = Input {
               SourceOp = "pSpawn1",
               Source = "Output",
            },
            RegionMode = Input { Value = FuID { "Intersecting" }, },
            Region = Input { Value = FuID { "CubeRgn" }, },
            SetMode = Input { Value = FuID { "Affect" }, },
            Set2 = Input { Value = 0, },
            ["CubeRgn.Translate.Y"] = Input { Value = -0.05, },
            ["CubeRgn.Width"] = Input { Value = 1, },
            ["CubeRgn.Depth"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 861, 198 } },
      },
      pRender1 = pRender {
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            OutputMode = Input { Disabled = true, },
            IntegrationMethod = Input { Value = FuID { "RK4" }, },
            ["MaterialID.MaterialID"] = Input { Value = 1, },
            ["ObjectID.ObjectID"] = Input { Value = 1, },
            Input = Input {
               SourceOp = "pKill1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1076, 198 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1264, 202 } },
      },
      Renderer3D1 = Renderer3D {
         CtrlWZoom = false,
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1410, 203 } },
      },
      Blur1 = Blur {
         Inputs = {
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1520, 203 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.0108585130970475, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.479007976295279, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.90472357213119, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -11.3999996185303, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -4.80000019073486, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 1303, 326 } },
      },
      Background1 = Background {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1613, 302 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Blur1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1659, 204 } },
      }
   }
}
www.ablackbirdcalledsue.com
Offline

Joe Murray

  • Posts: 12
  • Joined: Fri Jul 04, 2014 2:23 pm

Re: Rain Drop Splash

PostSat Jun 22, 2019 1:45 pm

Thank you Okke and Bruce. I'll try the solution today.
Joe Murray | nativesonsfilms
Directors Guild Of America | Director
Int'l Cinematographers Guild | Director of Photography
www.nativesonsfilms.com

Return to Fusion

Who is online

Users browsing this forum: No registered users and 2 guests