Jump to: Board index » General » Fusion

Resolve 15 Fusion 3D mattes and masks

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

Steve McDonald

  • Posts: 28
  • Joined: Tue Oct 25, 2016 1:43 pm
  • Location: McKinney, TX

Resolve 15 Fusion 3D mattes and masks

PostSat Sep 22, 2018 7:25 pm

I have a two part question: I am trying to figure out how to (1) apply a polygon mask to 3Dtext (before it is 3Drendered) and then (2) use the masked part of the 3D text as a mask/matte to another 3D object. I am stumped. Does anything have any ideas?
Offline

Sander de Regt

  • Posts: 3582
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: Resolve 15 Fusion 3D mattes and masks

PostSat Sep 22, 2018 9:14 pm

Yes. Try something else. By it's very nature you cannot mask a 3D object (that exists in 3D space) with a 2D object (the polygon) without turning the 3D object in a 2D object (by rendering it) A polyline has no depth, how could it mask a 3D object?

Maybe if you explain the result you're after we could help you in achieving that look in a way that is actually possible :lol:
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

Bryan Ray

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

Re: Resolve 15 Fusion 3D mattes and masks

PostSat Sep 22, 2018 10:31 pm

You could do a projection of the mask onto the text. Something like this:

Code: Select all
{
   Tools = ordered() {
      Bitmap1 = BitmapMask {
         Inputs = {
            SoftEdge = Input { Value = 0.0171, },
            Invert = Input { Value = 1, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
            Center = Input { Value = { 0.64367816091954, 0.5 }, },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 82.5 } },
      },
      Transform1 = Transform {
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.375404094827586, 0.5 }, },
            Input = Input {
               SourceOp = "Bitmap1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 115.5 } },
      },
      Rectangle1 = RectangleMask {
         Inputs = {
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 512, },
            MaskHeight = Input { Value = 512, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Width = Input { Value = 1.82793879134053, },
            Height = Input { Value = 1.53742679069185, },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 49.5 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -1.61332064029335, Y = 0, RX = 0.438697318007663, RY = 0 },
                     { Linear = true, LockY = true, X = -0.297228686270362, Y = 0, LX = -0.438697318007663, LY = 0 }
                  }
               },
            },
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 14, 0.333333333333333 }, Flags = { Linear = true, LockedY = true } },
            [42] = { 1, LH = { 28, 0.666666666666667 }, Flags = { Linear = true, LockedY = true } }
         }
      },
      ReplaceMaterial3D1 = ReplaceMaterial3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "UVMap3D1",
               Source = "Output",
            },
            ["ReplaceMode.Nest"] = Input { Value = 1, },
            ["ReplaceMode.RedMode"] = Input { Value = 0, },
            ["ReplaceMode.GreenMode"] = Input { Value = 0, },
            ["ReplaceMode.BlueMode"] = Input { Value = 0, },
            MaterialInput = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 148.5 } },
      },
      UVMap3D1 = UVMap {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Text3D1_1",
               Source = "Output",
            },
            Orientation = Input { Value = 2, },
            ["Size.X"] = Input { Value = 3, },
            ["Size.Y"] = Input { Value = 3, },
            ["Size.Z"] = Input { Value = 0.200000002980232, },
            ["Center.X"] = Input { Value = 0.00269100069999695, },
            ["Center.Y"] = Input { Value = 0.270254671573639, },
            ["Center.Z"] = Input { Value = 0.100000001490116, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 148.5 } },
      },
      Text3D1_1 = Text3D {
         Inputs = {
            Font = Input { Value = "Palatino Linotype", },
            StyledText = Input { Value = "STEP", },
            Style = Input { Value = "Regular", },
            Extrusion = Input { Value = 1, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1_1ExtrusionProfile",
               Source = "Value",
            },
            ExtrusionDepth = Input { Value = 0.2, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
            Red1 = Input { Value = 0.136, },
         },
         ViewInfo = OperatorInfo { Pos = { 495, 148.5 } },
      },
      Text3D1_1ExtrusionProfile = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.0666666666666667, 0.333333333333333 }, Flags = { Linear = true } },
               [0.2] = { 1, LH = { 0.133333333333333, 0.666666666666667 }, RH = { 0.4, 1 }, Flags = { Linear = true } },
               [0.8] = { 1, LH = { 0.6, 1 }, RH = { 0.866666666666667, 0.666666666666667 }, Flags = { Linear = true } },
               [1] = { 0, LH = { 0.933333333333333, 0.333333333333333 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      ReplaceMaterial3D1_1 = ReplaceMaterial3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "UVMap3D1_1",
               Source = "Output",
            },
            ["ReplaceMode.Nest"] = Input { Value = 1, },
            ["ReplaceMode.RedMode"] = Input { Value = 0, },
            ["ReplaceMode.GreenMode"] = Input { Value = 0, },
            ["ReplaceMode.BlueMode"] = Input { Value = 0, },
            MaterialInput = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 214.5 } },
      },
      UVMap3D1_1 = UVMap {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Text3D1",
               Source = "Output",
            },
            Orientation = Input { Value = 2, },
            ["Size.X"] = Input { Value = 3, },
            ["Size.Y"] = Input { Value = 3, },
            ["Size.Z"] = Input { Value = 0.200000002980232, },
            ["Center.X"] = Input { Value = 2.98023223876953e-008, },
            ["Center.Y"] = Input { Value = 0.272561252117157, },
            ["Center.Z"] = Input { Value = 0.100000001490116, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 214.5 } },
      },
      Text3D1 = Text3D {
         Inputs = {
            Font = Input { Value = "Palatino Linotype", },
            StyledText = Input { Value = "TEXT", },
            Style = Input { Value = "Regular", },
            Extrusion = Input { Value = 1, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1ExtrusionProfile",
               Source = "Value",
            },
            ExtrusionDepth = Input { Value = 0.2, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
            Blue1 = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 495, 214.5 } },
      },
      Text3D1ExtrusionProfile = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.0196116135138184, 0.098058067569092 }, Flags = { Linear = true } },
               [0.2] = { 1, LH = { 0.180388386486182, 0.901941932430908 }, RH = { 0.3, 1 }, Flags = { Linear = true } },
               [0.8] = { 1, LH = { 0.7, 1 }, RH = { 0.819611613513818, 0.901941932430908 }, Flags = { Linear = true } },
               [1] = { 0, LH = { 0.980388386486182, 0.098058067569092 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "ReplaceMaterial3D1_1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "ReplaceMaterial3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 935, 214.5 } },
      }
   }
}


I'm not sure if I interpreted the second part of your question correctly. But this uses a mask projected on the Z axis to replace the Alpha portion of the material.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline
User avatar

Steve McDonald

  • Posts: 28
  • Joined: Tue Oct 25, 2016 1:43 pm
  • Location: McKinney, TX

Re: Resolve 15 Fusion 3D mattes and masks

PostSun Sep 23, 2018 12:00 am

Ok - here is what I am trying to do:

3d-masks.PNG
3d-masks.PNG (235.33 KiB) Viewed 2325 times


I have a some 3D text and a cylinder turned on its side like a light. I am rendering it and then masking it and am going to render the mask animating to make it look like the text is disintegrating (hence the mask) from right to left. I want to figure out how to create light rays from the cylinder light source and make the rays morph to look like rays of light are coming through the disintegrating text. I will add some particles after that, but I cannot figure out how to animate the disintegrating 3D text in 3D and create rays in either 3D or 2D that will shining around the morphing text.

Any ideas?
Offline
User avatar

Steve McDonald

  • Posts: 28
  • Joined: Tue Oct 25, 2016 1:43 pm
  • Location: McKinney, TX

Re: Resolve 15 Fusion 3D mattes and masks

PostMon Sep 24, 2018 11:31 pm

OK - I think I am close to getting what I want. But I am getting no performance out of fusion inside Resolve 15. Have a look...

3D-masking.JPG
3D-masking.JPG (545.68 KiB) Viewed 2226 times


Back in fusion 9 there was a button you could hit to cache your render path to disk and I seem to be missing that for some reason. Also the direction blur seems to be a complete resource hog. It takes seconds (multiple) per frame to render. Is there some scaling or render trick I am missing?
Offline

Matthew Zinn

  • Posts: 20
  • Joined: Mon Jan 05, 2015 2:26 am

Re: Resolve 15 Fusion 3D mattes and masks

PostTue Sep 25, 2018 12:34 am

Hey Steve,

I am also getting very frustrated with the caching feature not being available inside Resolve 15's version of Fusion. To the point where I've re-created some comps in fusion 9 rather than suffer through the crashes and frustrations I've been dealing with inside Resolve. The one saving graces I've been using in place of that feature is the Saver node which will let me render sections as .exr sequences. Then I work around and re-import those sequences into Resolve through the edit tab into the compound (or Fusion) clip I've created and back into Fusion - what a pain - learned my lesson though ;) Made a note to myself to just go back to the old VFX connect workflow instead of trying to do it all in Resolve, it's a nice idea but perhaps I just don't understand the workflow enough or it's not polished quite yet.

As for your initial question, I don't do much 3D in fusion, but could you just create a blocker object with a 'holdout' type material which will serve the same function as the mask. It won't be as flexible, but it will allow you to block your 3D objects without rendering into 2D space - just my thoughts

Best of luck

-Matthew
Offline
User avatar

Steve McDonald

  • Posts: 28
  • Joined: Tue Oct 25, 2016 1:43 pm
  • Location: McKinney, TX

Re: Resolve 15 Fusion 3D mattes and masks

PostTue Sep 25, 2018 2:45 pm

Ok - I think I have a work around on the performance thing in Fusion inside resolve.

  • If you want the comp to run faster inside the fusion tab you need to turn on Playback > Proxy Mode > Half Resolution
  • If you want the comp to run faster on the Resolve Edit Tab, then turn on Playback > Render Cache > User

It takes a while on the edit timeline to render Fusion to cache (highlighted in blue at the top of the timeline) but at least it is back to not having to round-trip those items.

Return to Fusion

Who is online

Users browsing this forum: AndreaR and 34 guests