Page 1 of 1

smoke in fusion

PostPosted: Wed Mar 18, 2015 7:16 am
by Peter Profetto
Does anyone know of any tutorials for making nice smoke
with the particles in fusion?

any examples?

thanks
peter

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 5:22 pm
by Rony Soussan
Here's a good start for you
One thing to note is the popping only goes away in software render. Use GL for testing, software for final (slower) render.

Code: Select all
{
   Tools = ordered() {
      Rectangle1 = RectangleMask {
         Inputs = {
            SoftEdge = Input { Value = 0.2, },
            MaskWidth = Input { Value = 2048, },
            MaskHeight = Input { Value = 1556, },
            PixelAspect = Input { Value = { 1, 1, }, },
            ClippingMode = Input { Value = FuID { "None", }, },
            Center = Input { Value = { 0.998659517426273, 0.5, }, },
            Width = Input { Value = 0.987935656836461, },
            Height = Input { Value = 1.64745308310992, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 181.5, }, },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Gain = Input { Value = 1.8380952, },
            Input = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 214.5, }, },
      },
      pEmitter1 = pEmitter {
         ID = 4,
         Inputs = {
            Number = Input { Value = 3.3333333, },
            Lifespan = Input { Value = 180.952381, },
            LifespanVariance = Input { Value = 33.8095238, },
            VelocityControls = Input { Value = 1, },
            Angle = Input { Value = 90, },
            InheritVelocity = Input { Value = -2, },
            Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
            ["ParticleStyle.ColorControls"] = Input { Value = 1, },
            ["ParticleStyle.Red"] = Input { Value = 0.74, },
            ["ParticleStyle.Green"] = Input { Value = 0.74, },
            ["ParticleStyle.Blue"] = Input { Value = 0.74, },
            ["ParticleStyle.ColorVariance"] = Input { Value = 1, },
            ["ParticleStyle.GreenLow"] = Input { Value = -0.0133333, },
            ["ParticleStyle.GreenHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.BlueLow"] = Input { Value = -0.0266667, },
            ["ParticleStyle.BlueHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.AlphaLow"] = Input { Value = -0.5333333, },
            ["ParticleStyle.AlphaHigh"] = Input { Value = 0.24, },
            ["ParticleStyle.LockColorVariance"] = Input { Value = 0, },
            ["ParticleStyle.ColorOverLifeControls"] = Input { Value = 1, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0.54, 0.54, 0.54, 1, },
                     [1] = { 0, 0, 0, 1, },
                  },
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 1.05, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0.06875, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["SphereRgn.Size"] = Input { Value = 0.0238095, },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 214.5, }, },
      },
      pEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0.00371747211895911] = { 0.0113548387096775, RH = { 0.492375084741974, 0.0692550257007599, }, Flags = { Linear = true, }, },
               [1] = { 0.919354838709677, LH = { 0.762908717062377, 0.830153771988154, }, },
            },
         },
         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 = 14,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Direction = Input { Value = 90, },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 214.5, }, },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Center = Input { Value = { 0.497690531177829, 0.5, }, },
            Detail = Input {
               SourceOp = "Shake1",
               Source = "X",
            },
            XScale = Input { Value = 2.5714286, },
            Seethe = Input { Value = 0.3269231, },
            SeetheRate = Input { Value = 1, },
            Type = Input { Value = 1, },
            GradientType = Input { Value = 5, },
            Start = Input { Value = { 0.5, 0.5, }, },
            End = Input { Value = { 0.187466616455229, 0.736146069099584, }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1, },
                     [1] = { 0, 0, 0, 0, },
                  },
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 214.5, }, },
      },
      Shake1 = Shake {
         CtrlWZoom = false,
         Inputs = {
            XMinimum = Input { Value = 2, },
            XMaximum = Input { Value = 3, },
         },
      },
      pDirectionalForce1_1 = pDirectionalForce {
         ID = 20,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
            StartAge = Input { Value = 0.4588235, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 214.5, }, },
      },
      pTurbulence1 = pTurbulence {
         ID = 7,
         CtrlWZoom = false,
         Inputs = {
            XStrength = Input { Value = 1, },
            YStrength = Input { Value = 0.1, },
            ZStrength = Input { Value = 1, },
            StrengthOverLife = Input { Value = 1, },
            StrengthOverLifeLUT = Input {
               SourceOp = "pTurbulence1StrengthoverLifeLUT",
               Source = "Value",
            },
            Density = Input { Value = 5.2380952, },
            Input = Input {
               SourceOp = "pDirectionalForce1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 214.5, }, },
      },
      pTurbulence1StrengthoverLifeLUT = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.0645161290322584, RH = { 0.0792889745968726, 0.126686056829407, }, Flags = { Linear = true, }, },
               [0.237866923790618] = { 0.329726694074164, LH = { 0.158585878122681, 0.315394300737689, }, RH = { 0.311502589478341, 0.343038518045937, }, },
               [0.459635396971336] = { 0.171450205621437, LH = { 0.385483415724496, 0.215999050804633, }, RH = { 0.613502715528376, 0.0790101758623785, }, },
               [0.921933085501858] = { 0, LH = { 0.7680716092516, 0.0210016043360813, }, },
            },
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64, },
         NameSet = true,
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.421451312939431, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.720935507757479, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.32716513089873, },
            ["Transform3DOp.Rotate.X"] = Input { Value = 3.60000109672546, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -350.199981689453, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis", }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 247.5, }, },
      },
      pRender1 = pRender {
         Inputs = {
            ["_MotionBlurWarning"] = Input { Disabled = true, },
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            ["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 = "pTurbulence1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 214.5, }, },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 247.5, }, },
      },
      Renderer3D1 = Renderer3D {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL", }, },
            ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
            ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
            ["RendererOpenGL.Texturing"] = Input { Value = 1, },
            ["RendererOpenGL.TextureDepth"] = Input { Value = 3, },
            ["RendererOpenGL.TransparencySorting"] = Input { Value = 1, },
            ["RendererOpenGL.ShadingModel"] = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 247.5, }, },
      },
   },
}

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 5:36 pm
by Win Conway
Seriously Rony, you post these "heres a start for you" projects all the time, why aren't they auto listed somewhere on the BM site, they are always so brilliant to learn from but scattered across the forum.

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 5:44 pm
by Rony Soussan
Thanks Win, It really makes me happy to see people wanting to learn, and I'm happy to provide as many examples as possible.
I'm working on annotations for all of these, which takes time. Once I have a few ready, I'll post them all at once, but as for an official repository, that's something we can work on for sure, and internally here at BMD, you know my vote on that :)

It makes me

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 6:27 pm
by Rony Soussan
Here's a slightly different one that uses multiple source noise tools to create more volume like effect.

Code: Select all
{
   Tools = ordered() {
      Merge2 = Merge {
         Inputs = {
            Blend = Input {
               SourceOp = "Shake3",
               Source = "X",
            },
            Background = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "FastNoise1_1",
               Source = "Output",
            },
            SubtractiveAdditive = Input { Value = 0, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, -49.5, }, },
         Colors = {
            TileColor = { R = 1, G = 0, B = 0.498039215686275, },
            TextColor = { R = 0, G = 0, B = 0, },
         },
      },
      Shake3 = Shake {
         CtrlWZoom = false,
         Inputs = {
            Smoothness = Input { Value = 5.0008, },
            XMinimum = Input { Value = 0.4285714, },
         },
      },
      FastNoise1_1 = FastNoise {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            Depth = Input { Value = 2, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Discontinuous = Input { Value = 1, },
            Inverted = Input { Value = 1, },
            Center = Input { Value = { 0.497690531177829, 0.5, }, },
            Detail = Input { Value = 6.9047619, },
            Contrast = Input { Value = 0.7047619, },
            XScale = Input { Value = 3.6190476, },
            Seethe = Input { Value = 0.3269231, },
            SeetheRate = Input { Value = 1, },
            Type = Input { Value = 1, },
            GradientType = Input { Value = 5, },
            Start = Input { Value = { 0.5, 0.5, }, },
            End = Input { Value = { 0.0693301771873418, 0.0589414101977536, }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0.426666666666667, 0.426666666666667, 0.426666666666667, 1, },
                     [0.233576642335766] = { 0.68, 0.68, 0.68, 0.802919708029197, },
                     [0.58029197080292] = { 0.186666666666667, 0.186666666666667, 0.186666666666667, 0.439694125825513, },
                     [1] = { 0, 0, 0, 0, },
                  },
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 880, -49.5, }, },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            Depth = Input { Value = 2, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Center = Input { Value = { 0.497690531177829, 0.5, }, },
            Detail = Input {
               SourceOp = "Shake1",
               Source = "X",
            },
            XScale = Input {
               SourceOp = "Shake2",
               Source = "X",
            },
            Seethe = Input { Value = 0.3269231, },
            SeetheRate = Input { Value = 1, },
            Type = Input { Value = 1, },
            GradientType = Input { Value = 5, },
            Start = Input { Value = { 0.5, 0.5, }, },
            End = Input { Value = { 0.187466616455229, 0.736146069099584, }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1, },
                     [1] = { 0, 0, 0, 0, },
                  },
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, -115.5, }, },
      },
      Shake1 = Shake {
         CtrlWZoom = false,
         Inputs = {
            Smoothness = Input { Value = 0.7152571, },
            XMinimum = Input { Value = 2, },
            XMaximum = Input { Value = 3.5, },
         },
      },
      Shake2 = Shake {
         CtrlWZoom = false,
         Inputs = {
            Smoothness = Input { Value = 6.001, },
            XMinimum = Input { Value = 2, },
            XMaximum = Input { Value = 3, },
         },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Gain = Input { Value = 2.5619048, },
            PreDividePostMultiply = Input { Value = 1, },
            Input = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, -16.5, }, },
      },
      Rectangle1 = RectangleMask {
         Inputs = {
            SoftEdge = Input { Value = 0.2, },
            MaskWidth = Input { Value = 2048, },
            MaskHeight = Input { Value = 1556, },
            PixelAspect = Input { Value = { 1, 1, }, },
            ClippingMode = Input { Value = FuID { "None", }, },
            Center = Input { Value = { 0.998659517426273, 0.5, }, },
            Width = Input { Value = 0.954657786620155, },
            Height = Input { Value = 1.64745308310992, },
         },
         ViewInfo = OperatorInfo { Pos = { 880, -16.5, }, },
      },
      LumaKeyer1 = LumaKeyer {
         Inputs = {
            Low = Input { Value = 0.1588235, },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 16.5, }, },
      },
      pEmitter1 = pEmitter {
         ID = 4,
         Inputs = {
            Number = Input { Value = 3, },
            NumberVariance = Input { Value = 2, },
            Lifespan = Input { Value = 180.952381, },
            LifespanVariance = Input { Value = 33.8095238, },
            VelocityControls = Input { Value = 1, },
            Angle = Input { Value = 90, },
            InheritVelocity = Input { Value = -2, },
            Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
            Region = Input { Value = FuID { "CubeRgn", }, },
            ["ParticleStyle.ColorControls"] = Input { Value = 1, },
            ["ParticleStyle.Red"] = Input { Value = 0.553333333333333, },
            ["ParticleStyle.Green"] = Input { Value = 0.553333333333333, },
            ["ParticleStyle.Blue"] = Input { Value = 0.553333333333333, },
            ["ParticleStyle.Alpha"] = Input { Value = 0.906976744186046, },
            ["ParticleStyle.ColorVariance"] = Input { Value = 1, },
            ["ParticleStyle.GreenLow"] = Input { Value = -0.0133333, },
            ["ParticleStyle.GreenHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.BlueLow"] = Input { Value = -0.0266667, },
            ["ParticleStyle.BlueHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.AlphaLow"] = Input { Value = -0.6933333, },
            ["ParticleStyle.AlphaHigh"] = Input { Value = -0.4133333, },
            ["ParticleStyle.LockColorVariance"] = Input { Value = 0, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0.54, 0.54, 0.54, 1, },
                     [1] = { 0, 0, 0, 1, },
                  },
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 1.23, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["SphereRgn.Size"] = Input { Value = 0.0238095, },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "LumaKeyer1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 82.5, }, },
      },
      pEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.301677419354839, RH = { 0.488657612623015, 0.360009697293616, }, Flags = { Linear = true, }, },
               [1] = { 0.919354838709677, LH = { 0.768629808026417, 0.601996517999621, }, },
            },
         },
         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 = 14,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Direction = Input { Value = 90, },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 115.5, }, },
      },
      pDirectionalForce1_1 = pDirectionalForce {
         ID = 20,
         PassThrough = true,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
            StartAge = Input { Value = 0.4588235, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 148.5, }, },
      },
      pTurbulence1 = pTurbulence {
         ID = 7,
         CtrlWZoom = false,
         Inputs = {
            XStrength = Input { Value = 1.5, },
            YStrength = Input { Value = 0, },
            ZStrength = Input { Value = 1, },
            StrengthOverLife = Input { Value = 1, },
            StrengthOverLifeLUT = Input {
               SourceOp = "pTurbulence1StrengthoverLifeLUT",
               Source = "Value",
            },
            Density = Input { Value = 15.2380952, },
            Input = Input {
               SourceOp = "pDirectionalForce1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 181.5, }, },
      },
      pTurbulence1StrengthoverLifeLUT = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.0645161290322584, RH = { 0.0545058271371452, 0.109967197265992, }, Flags = { Linear = true, }, },
               [0.163517481411436] = { 0.13617830697739, LH = { 0.105556850862651, 0.125700209116084, }, RH = { 0.25746643936134, 0.15316235918742, }, },
               [0.446399751788057] = { 0.134068906097184, LH = { 0.351824346076509, 0.163180398906282, }, RH = { 0.473111851597857, 0.125846587665893, }, },
               [0.5265498951126] = { 0.155321173363373, LH = { 0.499828672496208, 0.171374683862043, }, RH = { 0.658145948515117, 0.0762612195877191, }, },
               [0.921933085501858] = { 0, LH = { 0.790342028771295, 0.0179617625865427, }, },
            },
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64, },
         NameSet = true,
      },
      pRender1 = pRender {
         Inputs = {
            ["_MotionBlurWarning"] = Input { Disabled = true, },
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            ["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 = "pTurbulence1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 214.5, }, },
      },
      Renderer3D1 = Renderer3D {
         Inputs = {
            ShutterAngle = Input { Value = 360, },
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL", }, },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
            ["RendererOpenGL.Texturing"] = Input { Value = 1, },
            ["RendererOpenGL.TextureDepth"] = Input { Value = 0, },
            ["RendererOpenGL.TransparencySorting"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 280.5, }, },
      },
      Saver1 = Saver {
         Inputs = {
            ProcessWhenBlendIs00 = Input { Value = 0, },
            Clip = Input {
               Value = Clip {
                  Filename = "comp:\\out_JPG\\HowTo_ParticleSmoke..jpg",
                  FormatID = "JpegFormat",
                  Length = 0,
                  Saving = true,
                  TrimIn = 0,
                  ExtendFirst = 0,
                  ExtendLast = 0,
                  Loop = 1,
                  AspectMode = 0,
                  Depth = 0,
                  GlobalStart = -2000000000,
                  GlobalEnd = 0,
               },
            },
            OutputFormat = Input { Value = FuID { "JpegFormat", }, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
            ["JpegFormat.Quality"] = Input { Value = 97, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 280.5, }, },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 280.5, }, },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.0961665447968148, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 1.35540666231885, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.28502651482581, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -8.19999890327454, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -360.199981689453, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis", }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 880, 280.5, }, },
      },
   },
}

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 7:10 pm
by Rakesh Malik
Rony Soussan wrote:Thanks Win, It really makes me happy to see people wanting to learn, and I'm happy to provide as many examples as possible.
I'm working on annotations for all of these, which takes time. Once I have a few ready, I'll post them all at once, but as for an official repository, that's something we can work on for sure, and internally here at BMD, you know my vote on that :)


It will be great to have these collected into a reference archive! :)

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 7:40 pm
by JP Docherty
The very talented Gregory Chalenko (under his non de plum Gringo) posted a lot of smoke and particle stuff that I found very useful on VFXpedia over the years. There's a short summary of some of it on his own web page -

http://www.compositing.ru/Research/SmokeSimulation/

that I'd recommend as a start point.

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 8:05 pm
by Rony Soussan
He is a great resource for sure

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 9:03 pm
by Peter Paterson
Thanks Rony.

Do we simply highlight, copy and then paste into the flow window?

Re: smoke in fusion

PostPosted: Thu Mar 19, 2015 11:49 pm
by Rony Soussan
Yup, it's a settings not a comp

Re: smoke in fusion

PostPosted: Fri Mar 20, 2015 7:52 am
by Peter Paterson
Thanks Rony.

Wasn't working fro me, then I remembered Webroot sometimes prevents C'n'P. Turned it off for a moment and works. Thanks for these examples.

Re: smoke in fusion

PostPosted: Wed Mar 25, 2015 4:37 pm
by Derek Serra
Thanks Rony! I was actually going to tackle this over the weekend. You've saved me a lot of work. :)

Re: smoke in fusion

PostPosted: Tue Apr 16, 2024 9:41 pm
by Mixolydian
Rony Soussan wrote:Here's a good start for you
One thing to note is the popping only goes away in software render. Use GL for testing, software for final (slower) render.

Code: Select all
{
   Tools = ordered() {
      Rectangle1 = RectangleMask {
         Inputs = {
            SoftEdge = Input { Value = 0.2, },
            MaskWidth = Input { Value = 2048, },
            MaskHeight = Input { Value = 1556, },
            PixelAspect = Input { Value = { 1, 1, }, },
            ClippingMode = Input { Value = FuID { "None", }, },
            Center = Input { Value = { 0.998659517426273, 0.5, }, },
            Width = Input { Value = 0.987935656836461, },
            Height = Input { Value = 1.64745308310992, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 181.5, }, },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Gain = Input { Value = 1.8380952, },
            Input = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 214.5, }, },
      },
      pEmitter1 = pEmitter {
         ID = 4,
         Inputs = {
            Number = Input { Value = 3.3333333, },
            Lifespan = Input { Value = 180.952381, },
            LifespanVariance = Input { Value = 33.8095238, },
            VelocityControls = Input { Value = 1, },
            Angle = Input { Value = 90, },
            InheritVelocity = Input { Value = -2, },
            Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
            ["ParticleStyle.ColorControls"] = Input { Value = 1, },
            ["ParticleStyle.Red"] = Input { Value = 0.74, },
            ["ParticleStyle.Green"] = Input { Value = 0.74, },
            ["ParticleStyle.Blue"] = Input { Value = 0.74, },
            ["ParticleStyle.ColorVariance"] = Input { Value = 1, },
            ["ParticleStyle.GreenLow"] = Input { Value = -0.0133333, },
            ["ParticleStyle.GreenHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.BlueLow"] = Input { Value = -0.0266667, },
            ["ParticleStyle.BlueHigh"] = Input { Value = 0.0133333, },
            ["ParticleStyle.AlphaLow"] = Input { Value = -0.5333333, },
            ["ParticleStyle.AlphaHigh"] = Input { Value = 0.24, },
            ["ParticleStyle.LockColorVariance"] = Input { Value = 0, },
            ["ParticleStyle.ColorOverLifeControls"] = Input { Value = 1, },
            ["ParticleStyle.ColorOverLife"] = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0.54, 0.54, 0.54, 1, },
                     [1] = { 0, 0, 0, 1, },
                  },
               },
            },
            ["ParticleStyle.SizeControls"] = Input { Value = 1, },
            ["ParticleStyle.Size"] = Input { Value = 1.05, },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.FadeControls"] = Input { Value = 1, },
            ["ParticleStyle.FadeOut"] = Input { Value = 0.06875, },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["SphereRgn.Size"] = Input { Value = 0.0238095, },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 214.5, }, },
      },
      pEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0.00371747211895911] = { 0.0113548387096775, RH = { 0.492375084741974, 0.0692550257007599, }, Flags = { Linear = true, }, },
               [1] = { 0.919354838709677, LH = { 0.762908717062377, 0.830153771988154, }, },
            },
         },
         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 = 14,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Direction = Input { Value = 90, },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 214.5, }, },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Center = Input { Value = { 0.497690531177829, 0.5, }, },
            Detail = Input {
               SourceOp = "Shake1",
               Source = "X",
            },
            XScale = Input { Value = 2.5714286, },
            Seethe = Input { Value = 0.3269231, },
            SeetheRate = Input { Value = 1, },
            Type = Input { Value = 1, },
            GradientType = Input { Value = 5, },
            Start = Input { Value = { 0.5, 0.5, }, },
            End = Input { Value = { 0.187466616455229, 0.736146069099584, }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1, },
                     [1] = { 0, 0, 0, 0, },
                  },
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 214.5, }, },
      },
      Shake1 = Shake {
         CtrlWZoom = false,
         Inputs = {
            XMinimum = Input { Value = 2, },
            XMaximum = Input { Value = 3, },
         },
      },
      pDirectionalForce1_1 = pDirectionalForce {
         ID = 20,
         Inputs = {
            Strength = Input { Value = 0.0419048, },
            Input = Input {
               SourceOp = "pDirectionalForce1",
               Source = "Output",
            },
            Probability = Input { Value = 0.752381, },
            StartAge = Input { Value = 0.4588235, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 214.5, }, },
      },
      pTurbulence1 = pTurbulence {
         ID = 7,
         CtrlWZoom = false,
         Inputs = {
            XStrength = Input { Value = 1, },
            YStrength = Input { Value = 0.1, },
            ZStrength = Input { Value = 1, },
            StrengthOverLife = Input { Value = 1, },
            StrengthOverLifeLUT = Input {
               SourceOp = "pTurbulence1StrengthoverLifeLUT",
               Source = "Value",
            },
            Density = Input { Value = 5.2380952, },
            Input = Input {
               SourceOp = "pDirectionalForce1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 214.5, }, },
      },
      pTurbulence1StrengthoverLifeLUT = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.0645161290322584, RH = { 0.0792889745968726, 0.126686056829407, }, Flags = { Linear = true, }, },
               [0.237866923790618] = { 0.329726694074164, LH = { 0.158585878122681, 0.315394300737689, }, RH = { 0.311502589478341, 0.343038518045937, }, },
               [0.459635396971336] = { 0.171450205621437, LH = { 0.385483415724496, 0.215999050804633, }, RH = { 0.613502715528376, 0.0790101758623785, }, },
               [0.921933085501858] = { 0, LH = { 0.7680716092516, 0.0210016043360813, }, },
            },
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64, },
         NameSet = true,
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.421451312939431, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.720935507757479, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.32716513089873, },
            ["Transform3DOp.Rotate.X"] = Input { Value = 3.60000109672546, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -350.199981689453, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis", }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 247.5, }, },
      },
      pRender1 = pRender {
         Inputs = {
            ["_MotionBlurWarning"] = Input { Disabled = true, },
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            ["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 = "pTurbulence1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 214.5, }, },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 247.5, }, },
      },
      Renderer3D1 = Renderer3D {
         Inputs = {
            GlobalIn = Input { Value = -100, },
            GlobalOut = Input { Value = 200, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1556, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL", }, },
            ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
            ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
            ["RendererOpenGL.Texturing"] = Input { Value = 1, },
            ["RendererOpenGL.TextureDepth"] = Input { Value = 3, },
            ["RendererOpenGL.TransparencySorting"] = Input { Value = 1, },
            ["RendererOpenGL.ShadingModel"] = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 247.5, }, },
      },
   },
}


This thread is very old, but I wanted to say thank you anyway. I'm very new to Fusion Studio and it amazes me that you can just grab all this code, paste it in the flow window, and all those nodes magically appear.

And great smoke, much better than the one that comes with the templates. I just have one question. You say "One thing to note is the popping only goes away in software render. Use GL for testing, software for final (slower) render."

The renderer is set to Hardware, and this plays in real time. If I set it to Software, it takes about 5 seconds per frame, but I don't see any difference in how it looks. Is that because back in 2015 there was a difference and now Fusion changed enough that there isn't?

Re: smoke in fusion

PostPosted: Wed Apr 17, 2024 1:21 am
by Bryan Ray
I guess nine years of "General performance and stability improvements" does add up to better tools eventually! :lol:

Fusion's GPU foundations have been overhauled since then, so it's virtually certain that the glitches from back then have been fully replaced by new glitches

Re: smoke in fusion

PostPosted: Wed Apr 17, 2024 7:40 am
by Sam Steti
Besides this, I'm glad I've been led to read Rony again ;)