Page 1 of 1

Rain Drop Splash

PostPosted: Thu Jun 20, 2019 2:25 am
by Joe Murray
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

Re: Rain Drop Splash

PostPosted: Thu Jun 20, 2019 6:30 am
by Okke Verbart
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 } },
      }
   }
}

Re: Rain Drop Splash

PostPosted: Fri Jun 21, 2019 4:41 pm
by Joe Murray
Thank you very much Okke.

Re: Rain Drop Splash

PostPosted: Sat Jun 22, 2019 1:23 am
by Joe Murray
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 971 times

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

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


TY
Joe

Re: Rain Drop Splash

PostPosted: Sat Jun 22, 2019 3:04 am
by RCModelReviews
I don't see any lighting on this node tree. :o

Re: Rain Drop Splash

PostPosted: Sat Jun 22, 2019 8:32 am
by Okke Verbart
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 } },
      }
   }
}

Re: Rain Drop Splash

PostPosted: Sat Jun 22, 2019 1:45 pm
by Joe Murray
Thank you Okke and Bruce. I'll try the solution today.