Jump to: Board index » General » Fusion

Help with vector distortion maps

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

mrbjjackson

  • Posts: 7
  • Joined: Tue Feb 26, 2019 11:29 pm
  • Real Name: Ben Jackson

Help with vector distortion maps

PostSat Jul 31, 2021 8:19 pm

Hi there,

I wonder if this effect I have in mind is possible:

I would like to use a custom shape as a distortion map. I want to make the image "bulge" in some areas and "shrink" in dark areas with other areas unaffected.

Essentially, similar to what the "Drip" node does, but instead of using their shape presets, using a custom shape of my choosing.

Is this kind of thing possible?

After some digging it seems like the "Vector Distortion" node is the tool I need but I can't find anywhere that explains how to generate the vector distortion maps.

Can you explain this to me please? Or point me in the direction of a resource that could help?

Thanks,
Ben
Offline
User avatar

Bryan Ray

  • Posts: 2478
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Help with vector distortion maps

PostSun Aug 01, 2021 1:12 am

I think the Displace node is probably what you're after. The trick with it, though, is that you need a way to convert your shape into vectors that the displace will understand. For that, reach for the CreateBumpMap node. This will convert the luminance of a heightmap into an approximation of a normal map. Here's a walkthrough:

First, my source image and the result of the Drip node:

1.jpg
1.jpg (181.15 KiB) Viewed 2053 times


I've made a radial gradient using the Background tool and a Blur. I converted it to a normal map using CreateBumpMap:

2.jpg
2.jpg (63.18 KiB) Viewed 2053 times


Then I use a Displace node to approximate the result of the Drip:

3.jpg
3.jpg (179.1 KiB) Viewed 2053 times


Here are the nodes themselves so you can play with them and see how they work (though obviously you'll need to provide your own source image:

Code: Select all
{
   Tools = ordered() {
      Drip1 = Drip {
         Inputs = {
            Phase = Input { Value = -4.791, },
            Input = Input {
               SourceOp = "Loader1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 500, 63.1212 } },
      },
      Loader1 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "P:\\continuing education\\Matchmoving\\352052c01_project\\01_buildings_bg.jpg",
               FormatID = "JpegFormat",
               StartFrame = -1,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 0,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 0,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 0
            }
         },
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 390.667, 106.758 } },
      },
      Blur1 = Blur {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            XBlurSize = Input { Value = 40.2, },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 500.667, 139.758 } },
      },
      Background1 = Background {
         Inputs = {
            Width = Input { Value = 1024, },
            Height = Input { Value = 768, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.5, 0.5 }, },
            End = Input { Value = { 0.551, 0.5 }, },
            Offset = Input { Value = -7.217, },
            Repeat = Input { Value = FuID { "Ping-Pong" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 391.333, 140.97 } },
      },
      Displace1 = Displace {
         Inputs = {
            Offset = Input { Value = -0.5, },
            RefractionStrength = Input { Value = 1.56, },
            Input = Input {
               SourceOp = "Loader1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "CreateBumpMap1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 636.667, 105.545 } },
      },
      CreateBumpMap1 = CreateBumpMap {
         CtrlWZoom = false,
         Inputs = {
            Input = Input {
               SourceOp = "Blur1",
               Source = "Output",
            },
            HeightScale = Input { Value = 33.07, },
         },
         ViewInfo = OperatorInfo { Pos = { 642, 140.364 } },
      }
   }
}


Make sure the Background, or your height map, has the same pixel dimensions as your source image for the most predictable results.

Displace also has a Light Power control that can give you that slight beveling appearance that you can see in the sky. I usually change Light Channel to Luminance to avoid hue shifts.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com

Return to Fusion

Who is online

Users browsing this forum: Orxion and 44 guests