Jump to: Board index » General » Fusion

Fusion: how to make a kaleidoscopic crystal ball?

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

BartReynaard

  • Posts: 662
  • Joined: Thu Jul 08, 2021 8:31 pm
  • Real Name: Bart

Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 3:11 pm

I link here a video chunk that shows what I mean.

I need to replicate this FX that I named Kaleidoscopic Ball but I have not clue how to do it in Fusion
https://i.imgur.com/vb2X34u.mp4
Bart
________
DaVinci Resolve Studio 19.1 on Windows 11 Pro 23H2

Prod. Machine: Ryzen 7 64GB 3.54 GHz
Video: MSI GeForce 4060Ti 16GB
Monitors: 1 x 3840x1440 widescreen, 2 x 1920 x 1080 16:9
Audio: Behringer UMC1820
Blackmagic Speed Editor
Offline
User avatar

KrunoSmithy

  • Posts: 2306
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 3:29 pm

You can distort texture with displace node. With some tweaking you can make it look like that. There is also similar Open FX filter called "Dent", which is I think for Resolve Studio version. It should have ability to do something like that as well. Try that. Possibly you can get something from mirror OpenFX as well. I think it has some kind of similar effect for mirror of itself, I forgot the name of it. But I would try Dent filter first, since its easiest to use, and if you don't have Studio version or resolve, try displace node and some texture to displace / distort in that matter. You can use a mask to limit its effect to a circle or sphere like shape.
Offline

Max Seredkin

  • Posts: 57
  • Joined: Sat Jul 29, 2017 11:00 am

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 4:24 pm

It's easier to do in 3D
Code: Select all
{
   Tools = ordered() {
      SphereMap1 = SphereMap {
         Inputs = {
            Image = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            MaterialID = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 1045, 16.5 } },
      },
      Transform1 = Transform {
         CtrlWZoom = false,
         Inputs = {
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Size = Input { Value = 0.48046875, },
            Edges = Input { Value = 3, },
            Input = Input {
               SourceOp = "Plasma1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 935, 16.5 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         CtrlWZoom = false,
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.650390625, Y = 0, RX = 0.0755208333333333, RY = 0 },
                     { Linear = true, LockY = true, X = -0.423828125, Y = 0, LX = -0.0755208333333333, LY = 0 }
                  }
               },
            },
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 0.333333333333333 }, Flags = { Linear = true, LockedY = true, Loop = true, LoopRel = true } },
            [46] = { 1, LH = { 30.6666666666667, 0.666666666666667 }, Flags = { Linear = true, LockedY = true, Loop = true, LoopRel = true } }
         }
      },
      Plasma1 = Plasma {
         Inputs = {
            Width = Input { Value = 2048, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 16.5 } },
      },
      ReplaceMaterial3D1_1_1 = ReplaceMaterial3D {
         CustomData = {
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\Shaders\\"
               }
            },
         },
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            MaterialInput = Input {
               SourceOp = "Reflect1_1_1",
               Source = "MaterialOutput",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 7, },
         },
         ViewInfo = OperatorInfo { Pos = { 1375, 148.5 } },
      },
      CookTorrance1_1_1 = MtlCookTorrance {
         CustomData = {
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\Shaders\\"
               }
            }
         },
         Inputs = {
            ["Diffuse.Color.Red"] = Input { Value = 0.544942222222222, },
            ["Diffuse.Color.Green"] = Input { Value = 0.556276813914089, },
            ["Diffuse.Color.Blue"] = Input { Value = 0.58, },
            ["Diffuse.Opacity"] = Input { Value = 0.252, },
            ["Specular.Nest"] = Input { Value = 1, },
            ["Specular.Intensity"] = Input { Value = 1.7777778, },
            ["Specular.Roughness"] = Input { Value = 0.1187135, },
            ["Specular.RefractiveIndex"] = Input { Value = 3, },
            MaterialID = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 148.5 } },
      },
      Reflect1_1_1 = MtlReflect {
         CustomData = {
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\Shaders\\"
               }
            }
         },
         Inputs = {
            BackgroundMaterial = Input {
               SourceOp = "CookTorrance1_1_1",
               Source = "MaterialOutput",
            },
            ["Reflection.StrengthVariability"] = Input { Value = 0, },
            ["Reflection.GlancingStrength"] = Input { Value = 1, },
            ["Reflection.FaceOnStrength"] = Input { Value = 0.8538012, },
            ["Refraction.RefractiveIndex.RGB"] = Input { Value = 1.405, },
            ["Refraction.RefractiveIndex.Red"] = Input { Value = 1.08, },
            ["Refraction.RefractiveIndex.Green"] = Input { Value = 1.07, },
            ["Refraction.RefractiveIndex.Blue"] = Input { Value = 1.06, },
            ["Refraction.Tint.Material"] = Input {
               SourceOp = "SphereMap1",
               Source = "MaterialOutput",
            },
            MaterialID = Input { Value = 4, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 148.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 1375, -16.5 } },
      }
   }
}
Last edited by Max Seredkin on Wed Nov 13, 2024 9:13 am, edited 2 times in total.
Behance https://www.behance.net/max_seredkin
Vimeo https://vimeo.com/user66756392
https://www.mrpost.ru/en
Offline

BartReynaard

  • Posts: 662
  • Joined: Thu Jul 08, 2021 8:31 pm
  • Real Name: Bart

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 5:21 pm

KrunoSmithy wrote:You can distort texture with displace node. With some tweaking you can make it look like that. There is also similar Open FX filter called "Dent", which is I think for Resolve Studio version. It should have ability to do something like that as well. Try that. Possibly you can get something from mirror OpenFX as well. I think it has some kind of similar effect for mirror of itself, I forgot the name of it. But I would try Dent filter first, since its easiest to use, and if you don't have Studio version or resolve, try displace node and some texture to displace / distort in that matter. You can use a mask to limit its effect to a circle or sphere like shape.


On my Signature is written what I have :-) and I always had the Studio version since I do use it for living :-)

"Dent" in Fusion?

EDIT: I'm trying it now in conjunction with the suggestion by @Max Seredkin by using the plasma and the effect is quite similar indeed although I can't find the way (still working on it ant try) to cut out the sphere from the BG ...
Last edited by BartReynaard on Tue Nov 12, 2024 5:47 pm, edited 3 times in total.
Bart
________
DaVinci Resolve Studio 19.1 on Windows 11 Pro 23H2

Prod. Machine: Ryzen 7 64GB 3.54 GHz
Video: MSI GeForce 4060Ti 16GB
Monitors: 1 x 3840x1440 widescreen, 2 x 1920 x 1080 16:9
Audio: Behringer UMC1820
Blackmagic Speed Editor
Offline

BartReynaard

  • Posts: 662
  • Joined: Thu Jul 08, 2021 8:31 pm
  • Real Name: Bart

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 5:25 pm

Max Seredkin wrote:It's easier to do in 3D


I got redblocks: SphereMap reflect ReplaceMaterial
Bart
________
DaVinci Resolve Studio 19.1 on Windows 11 Pro 23H2

Prod. Machine: Ryzen 7 64GB 3.54 GHz
Video: MSI GeForce 4060Ti 16GB
Monitors: 1 x 3840x1440 widescreen, 2 x 1920 x 1080 16:9
Audio: Behringer UMC1820
Blackmagic Speed Editor
Offline

Christoph Schmid

  • Posts: 482
  • Joined: Thu Sep 26, 2019 10:15 am
  • Real Name: Christoph Schmid

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 5:56 pm

Max Seredkin wrote:It's easier to do in 3D

Nice !
BartReynaard wrote:I got redblocks: SphereMap reflect ReplaceMaterial

Rename Shape3D1 to Shape3D1_1

Davinci Resolve Studio 19.1.1 Build 8
Windows 10 Pro 22H2
Davinci Resolve Studio 19.1 Build 12
Linux Ubuntu Studio 24.04 (Rocky 8.6 Container)
Offline
User avatar

KrunoSmithy

  • Posts: 2306
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 6:16 pm

BartReynaard wrote:"Dent" in Fusion?


Yes, it should come with studio version of resolve, which is why I mentioned it, I don't think its part of free version, anyway, it has this kaleidoscopic type effect as part of its presets. I used fast noise here as a texture to "dent" because quite frankly its noisy and fast, but it may not be ideal candidate for replicating exactly the effect you want, so you would need another texture to get the dent filter to do the denting in kaleidoscopic manner, and you can get shape of a ball by circular / ellipse mask. You can also use plasma node or some custom made one as Max Seredkin has done. His example is probably better than mine to what you want, albeit a bit more advance to set up.

sshot-966.jpg
sshot-966.jpg (180.39 KiB) Viewed 481 times


Code: Select all
{
   Tools = ordered() {
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Contrast = Input { Value = 1.51, },
            XScale = Input { Value = 5.2, },
            Angle = Input { Value = -36.5, },
            Seethe = Input { Value = 0.5, },
            SeetheRate = Input { Value = 0.094, },
            Inverted = Input { Value = 1, },
            Type = Input { Value = 1, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 },
                     [1] = { 0.666666666666667, 0.333333333333333, 0, 1 }
                  }
               },
            }
         },
         ViewInfo = OperatorInfo { Pos = { 128.682, 34.7418 } },
      },
      Background1 = Background {
         CtrlWZoom = false,
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 129.846, 85.1422 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Dent1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 256.3, 85.1422 } },
      },
      Dent1 = Dent {
         Inputs = {
            Type = Input { Value = 1, },
            Size = Input { Value = 0.52, },
            Strength = Input { Value = -3.28, },
            Input = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 256.3, 34.7418 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            SoftEdge = Input { Value = 0.0425, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            Width = Input { Value = 0.475060658639788, },
            Height = Input { Value = 0.475060658639788, }
         },
         ViewInfo = OperatorInfo { Pos = { 256.3, 134.554 } },
      }
   }
}


.......................

Mirrors openFX similar to dent, has similar filter. But it will depend on what kind of texture you feed it.

sshot-967.jpg
sshot-967.jpg (21.85 KiB) Viewed 481 times


.......................

You could also try this old school refraction macro.

https://www.steakunderwater.com/VFXPedi ... escription

........................

Of course any of these effects can be used as material input or texture output for a 3D sphere set up, similar to how Max Seredkin has demonstrated.
Attachments
sshot-968.jpg
sshot-968.jpg (104.24 KiB) Viewed 481 times
Offline

BartReynaard

  • Posts: 662
  • Joined: Thu Jul 08, 2021 8:31 pm
  • Real Name: Bart

Re: Fusion: how to make a kaleidoscopic crystal ball?

PostTue Nov 12, 2024 8:06 pm

Thanks a zillion to all of you.

I used all your suggestions and put them together;

I got this, very similar to the one I posted

Code: Select all
{
   Tools = ordered() {
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1440, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 990, 379.5 } },
      },
      Transform1 = Transform {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            },
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Size = Input { Value = 3, },
            Aspect = Input { Value = 0.428, },
            Edges = Input { Value = 1, },
            Input = Input {
               SourceOp = "Plasma1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 990, 412.5 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         CtrlWZoom = false,
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.650390625, Y = 0, RX = 0.0755208333333333, RY = 0 },
                     { Linear = true, LockY = true, X = -0.423828125, Y = 0, LX = -0.0755208333333333, LY = 0 }
                  }
               },
            }
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         CtrlWZoom = false,
         KeyFrames = {
            [0] = { 0, RH = { 15.3333333333333, 0.333333333333333 }, Flags = { Linear = true, LockedY = true, Loop = true, LoopRel = true } },
            [46] = { 1, LH = { 30.6666666666667, 0.666666666666667 }, Flags = { Linear = true, LockedY = true, Loop = true, LoopRel = true } }
         }
      },
      Plasma1 = Plasma {
         Inputs = {
            GlobalOut = Input { Value = 221, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 880, 412.5 } },
      },
      Dent1 = ofx.com.blackmagicdesign.resolvefx.Dent {
         Inputs = {
            Source = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            dentType = Input { Value = FuID { "DENT_TYPE_SINE" }, },
            xyPosition = Input { Value = { 0.5, 0.5 }, },
            size = Input { Value = 0.400000005960464, },
            strength = Input { Value = 0.5, },
            edgeBehaviour = Input { Value = FuID { "EDGE_BEHAVIOUR_REFLECT" }, },
            xPosition = Input { Value = 0.5, },
            yPosition = Input { Value = 0.5, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = -1, },
            dstProcessingAlphaMode = Input { Value = -1, },
            resolvefxVersion = Input { Value = "1.3", }
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 412.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 221, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1440, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.ColorSpaceNest"] = Input { Value = 1, },
            ["Gamut.GammaSpaceNest"] = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1100, 445.5 } },
      },
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Dent1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
            EffectMask = Input {
               SourceOp = "Ellipse1_1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1265, 445.5 } },
      },
      Ellipse1_1 = EllipseMask {
         CtrlWZoom = false,
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0006, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1440, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            Width = Input { Value = 0.475060658639788, },
            Height = Input { Value = 0.475060658639788, }
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 511.5 } },
      }
   }
}
Bart
________
DaVinci Resolve Studio 19.1 on Windows 11 Pro 23H2

Prod. Machine: Ryzen 7 64GB 3.54 GHz
Video: MSI GeForce 4060Ti 16GB
Monitors: 1 x 3840x1440 widescreen, 2 x 1920 x 1080 16:9
Audio: Behringer UMC1820
Blackmagic Speed Editor

Return to Fusion

Who is online

Users browsing this forum: No registered users and 25 guests