Jump to: Board index » General » Fusion

Catcher Node - Shape 3D Mask?

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

silbercue

  • Posts: 58
  • Joined: Thu Mar 21, 2019 9:16 pm
  • Location: Germany
  • Real Name: Julian-Ferdinand Friedric

Catcher Node - Shape 3D Mask?

PostTue Mar 26, 2024 4:02 pm

Hello, I have a 3D shape and with the Catcher Node that I captures a specific projection for that Shape. However, I also want to additionally crop this 3D shape with a mask.

That doesn't seem to work, right? I thought, in my youthful naivety, maybe I'd put a Merge Node behind it or a Matte Control and then mask those. But that doesn't work because we're in 3D.

Does anyone have an idea how it could still work?
Offline

Sander de Regt

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

Re: Catcher Node - Shape 3D Mask?

PostTue Mar 26, 2024 4:12 pm

Depending on your setup, most of the time you need to do your masking before feeding it into the 3D system. So give that a try first. I am still not 100% sure how the Catcher Node works, so I could be wrong.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

silbercue

  • Posts: 58
  • Joined: Thu Mar 21, 2019 9:16 pm
  • Location: Germany
  • Real Name: Julian-Ferdinand Friedric

Re: Catcher Node - Shape 3D Mask?

PostSat Mar 30, 2024 9:57 am

So, I've tried out several thoughts.

It doesn't work to insert the CatcherNode along with the mask into the Shape3D.

It doesn't work to put the mask and CatcherNode in a line before the Shape3D either.

The only option is to mask the projection itself. The clip feeding the projector is trimmed in such a way that the 3D shape is cropped by the projection. For this, you need to set up a separate projector with its own ID for the shapes in the composition that need to be cropped. This makes the process cumbersome, but theoretically, it's possible.
Offline

KrunoSmithy

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

Re: Catcher Node - Shape 3D Mask?

PostSun May 12, 2024 7:28 pm

silbercue wrote:The only option is to mask the projection itself..


How about using different shapes for geometry and using blend modes as you would in 2D to use one shape to cut out a hole in another in 3D and than with this new geometry you can get Shape 3D mask effect if I understood what you wanted. Here are some screenshots of what I have done and I'll try to pose a node tree if you want to check it out.

I just used plasma node on a background node instead of an image and video so I can share self contained node tree, instead of external image or video, but you can use anything you want.

Instead of projector 3D and catcher, I just used camera 3D in projection mode. But it should work with what you wanted as well. Also I used two regular cameras for two different views to render out just to show the effect. Seems to me the key is to play with blend modes, with the note that software renderer has all the 2D familiar blend modes and hardware renderer or formally openGL renderer has some new ones and less options.

sshot-4018.jpg
sshot-4018.jpg (251.35 KiB) Viewed 109 times


sshot-4019.jpg
sshot-4019.jpg (258.19 KiB) Viewed 109 times


sshot-4020.jpg
sshot-4020.jpg (233.19 KiB) Viewed 109 times


Here is the node tree of what I've done if you want to check it out. I hope I share it correctly.

Code: Select all
{
   Tools = ordered() {
      Merge3D2 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 720.705, 46.4247 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceCylinderInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 7, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceCylinderInputs.Matte.Nest"] = Input { Value = 1, },
            ["SurfaceCylinderInputs.BlendMode.Nest"] = Input { Value = 1, },
            ["SurfaceCylinderInputs.BlendMode.GL.BlendMode"] = Input { Value = FuID { "Accumulate" }, },
            ["SurfaceCylinderInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 720.705, -21.2861 } },
      },
      Shape3D2 = Shape3D {
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.990870548449246, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.282, },
            ["MtlStdInputs.ReceivesLighting"] = Input { Value = 0, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["SurfaceCubeInputs.Lighting.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.BlendMode.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.BlendMode.GL.BlendMode"] = Input { Value = FuID { "TransMatte" }, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, }
         },
         ViewInfo = OperatorInfo { Pos = { 919.329, 46.4247 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 359, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 304.926, 68.279 } },
      },
      SpotLight1 = LightSpot {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 1.1934687155044, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 4.40037145398774, },
            ["Transform3DOp.UseTarget"] = Input { Value = 1, },
            DecayType = Input { Value = 2, },
            ["ShadowLightInputs3D.ShadowsEnabled"] = Input { Value = 1, },
            ["ShadowLightInputs3D.ShadowMapSize"] = Input { Value = 2048, },
         },
         ViewInfo = OperatorInfo { Pos = { 1076.14, 2.71266 } },
      },
      Camera3D1 = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1",
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           FLength = Input { Value = 49.0568334445481 },
                           ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
                           ImagePlaneEnabled = Input { Value = 0 },
                           AoV = Input {
                              Value = 19.2642683071402,
                              Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
                           },
                           AovType = Input { Value = 1 },
                           ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
                           ApertureH = Input { Value = 0.9 },
                           FilmGate = Input { Value = FuID { "HD" } },
                           ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
                           ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
                           PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
                           FilmBack = Input { Value = 1 },
                           ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 387, 145 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input { Value = 5.29431410142986, },
            ["Transform3DOp.UseTarget"] = Input { Value = 1, },
            AovType = Input { Value = 2, },
            FLength = Input { Value = 32.9697081995756, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmBack = Input { Value = 1, },
            FilmGate = Input { Value = FuID { "ArriAlexa16x9" }, },
            ApertureW = Input { Value = 0.937007874015748, },
            ApertureH = Input { Value = 0.52755905511811, },
            ControlVis = Input { Value = 1, },
            PlaneOfFocusVis = Input { Value = 1, },
            ImagePlaneEnabled = Input { Value = 0, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ImageInput = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ProjectionEnabled = Input { Value = 1, },
            ProjectionMode = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 573.626, 101.279 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Merge3D2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 737.675, 101.279 } },
      },
      Merge3D4 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "SpotLight1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1076.14, 101.279 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Plasma1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 414.926, 101.279 } },
      },
      Plasma1 = Plasma {
         Inputs = {
            GlobalOut = Input { Value = 359, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 304.926, 101.279 } },
      },
      Merge3D3 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Merge3D4",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1_1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1309.96, 101.279 } },
      },
      Camera3D1_1 = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1",
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           FLength = Input { Value = 49.0568334445481 },
                           ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
                           ImagePlaneEnabled = Input { Value = 0 },
                           AoV = Input {
                              Value = 19.2642683071402,
                              Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
                           },
                           AovType = Input { Value = 1 },
                           ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
                           ApertureH = Input { Value = 0.9 },
                           FilmGate = Input { Value = FuID { "HD" } },
                           ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
                           ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
                           PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
                           FilmBack = Input { Value = 1 },
                           ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 387, 145 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 3.13197739340286, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.836227838569828, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 7.28214345447644, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -6.00000095367432, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 22.0000038146973, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmBack = Input { Value = 1, },
            FilmGate = Input { Value = FuID { "ArriAlexa16x9" }, },
            PlaneOfFocusVis = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1290.16, -6.71543 } },
      },
      Camera3D1_2 = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1",
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1 = Camera3D {
                        Inputs = {
                           FLength = Input { Value = 49.0568334445481 },
                           ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
                           ImagePlaneEnabled = Input { Value = 0 },
                           AoV = Input {
                              Value = 19.2642683071402,
                              Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
                           },
                           AovType = Input { Value = 1 },
                           ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
                           ApertureH = Input { Value = 0.9 },
                           FilmGate = Input { Value = FuID { "HD" } },
                           ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
                           ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
                           PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
                           FilmBack = Input { Value = 1 },
                           ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        CtrlWZoom = false,
                        NameSet = true,
                        ViewInfo = OperatorInfo { Pos = { 387, 145 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 3.13197739340286, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.836227838569828, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 7.28214345447644, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -6.00000095367432, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 22.0000038146973, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmBack = Input { Value = 1, },
            FilmGate = Input { Value = FuID { "ArriAlexa16x9" }, },
            PlaneOfFocusVis = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1464.58, 9.14259 } },
      },
      Renderer3D1 = Renderer3D {
         CtrlWZoom = false,
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            ["RendererSoftware.ShadowsEnabled"] = Input { Value = 1, },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.LightingEnabled"] = Input { Value = 1, },
            GlobalOut = Input { Value = 359, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            AutoCropDataWindow = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D3",
               Source = "Output",
            },
            CameraSelector = Input { Value = FuID { "Camera3D1" }, },
            RendererType = Input { Value = FuID { "RendererOpenGL" }, },
            ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
            ["RendererOpenGL.AntiAliasing.Presets.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.Rate"] = Input { Value = 5, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.Rate"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
            ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.ShadowsEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.MaximumTextureDepth"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 1504.18, 101.279 } },
         SubInputsData = {
            RendererOpenGL = {
               Version = 1
            }
         }
      }
   }
}

Return to Fusion

Who is online

Users browsing this forum: Chad Capeland and 25 guests