Page 1 of 1

3D > 2D: processing elements in 2D-land?

PostPosted: Wed Nov 13, 2019 11:22 pm
by Dazzer
Hi folks,

Imagine, for the sake of argument:

I have a 3D world, consisting of only an image plane for the ground and a cube, moving (animated) across this "landscape".

I also have a camera that's performing a fairly complicated movement.

I bring this back into 2D via a renderer.

Now, i want to add trails and glow nodes to my cube.

Problem: trails & glow are also working on my 3D ground, which is not what i want.

This brings me to my question:

Obviously i can mitigate this by making an instance copies of my camera and attaching this to a 2nd merge and render that are dedicated to my 3D image plane.

But is there another, cheaper way to do this? Which doesn't involve creating another instance copy camera for each element that i want to process separately in 2D space?

Thanks!

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Wed Nov 13, 2019 11:44 pm
by Bryan Ray
You could set an Object or Material ID to each object and send out an ObjectID channel from the renderer. Then you can mask using the OID channel.

Here's an example:

Code: Select all
{
   Tools = ordered() {
      Bitmap8 = BitmapMask {
         Inputs = {
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
            UseObject = Input { Value = 1, },
            Object = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 2310, -214.5 } },
      },
      ColorCorrector4 = ColorCorrector {
         Inputs = {
            UseObject = Input { Value = 1, },
            ObjectID = Input { Value = 2, },
            WheelTintAngle1 = Input { Value = -0.589999556038665, },
            WheelTintLength1 = Input { Value = 0.6743, },
            ColorRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1 },
                           { 0.4, 0.2 },
                           { 0.6, 0 },
                           { 1, 0 }
                        }
                     },
                     {
                        Points = {
                           { 0, 0 },
                           { 0.4, 0 },
                           { 0.6, 0.2 },
                           { 1, 1 }
                        }
                     }
                  }
               },
            },
            HistogramIgnoreTransparent = Input { Value = 1, },
            Input = Input {
               SourceOp = "ColorCorrector3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 2420, -148.5 } },
      },
      Bitmap7 = BitmapMask {
         Inputs = {
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
            Channel = Input { Value = FuID { "Luminance" }, },
            UseObject = Input { Value = 1, },
            Object = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 2310, -247.5 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 1098, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.Channels.Coverage"] = Input { Value = 1, },
            ["RendererSoftware.Channels.ObjectID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 2200, -148.5 } },
      },
      ColorCorrector3 = ColorCorrector {
         Inputs = {
            UseObject = Input { Value = 1, },
            ObjectID = Input { Value = 1, },
            WheelTintAngle1 = Input { Value = -0.207360731965488, },
            WheelTintLength1 = Input { Value = 0.4972, },
            ColorRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1 },
                           { 0.4, 0.2 },
                           { 0.6, 0 },
                           { 1, 0 }
                        }
                     },
                     {
                        Points = {
                           { 0, 0 },
                           { 0.4, 0 },
                           { 0.6, 0.2 },
                           { 1, 1 }
                        }
                     }
                  }
               },
            },
            HistogramIgnoreTransparent = Input { Value = 1, },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 2310, -148.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.329, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.329, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.329, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 1980, -181.5 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Shape3D1_1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 2090, -148.5 } },
      },
      Shape3D1_1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input { Value = -0.315247665712153, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -1.80318650815911, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.5, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.5, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.5, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 1980, -148.5 } },
      },
      Camera3D1 = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1_8 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1_8",
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { -2750, -1897.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1_8 = 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" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" }
                        },
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { 550, -676.5 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -1.84789157272452, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.950770136163022, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.46348646635843, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -17.5999984741211, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -35.7999992370605, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1980, -115.5 } },
      },
      SoftGlow1 = SoftGlow {
         CtrlWZoom = false,
         Inputs = {
            Filter = Input { Value = FuID { "Multi-box" }, },
            Passes = Input { Value = 16, },
            Input = Input {
               SourceOp = "ColorCorrector4",
               Source = "Output",
            },
            GlowMask = Input {
               SourceOp = "Bitmap8",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 2530, -148.5 } },
      }
   }
}

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 12:10 am
by Dazzer
Wow, that's genius, a million thanks!

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 12:36 am
by Dazzer
Sorry Bryan, just one more question on this:

In the comp below i'm using a Bright/Contrast node to remove objects.

But it's not giving me the behavior i want.

As it is now, I can use it to remove any one of the three objects......but what i actually want is to "solo" the objects. So that only one of the 3 objects passes through the node.

How do i achieve that?

(i know i can do it by giving two of the objects the same OID, but i want each one to have it's own OID)



Code: Select all
{
   Tools = ordered() {
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -1.69463752771709, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.767723244443471, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -5.34217238255258, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -7.80000019073486, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 184.6, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 158.667, 176.394 } },
      },
      white = Shape3D {
         NameSet = true,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -1.217, },
            Shape = Input { Value = FuID { "SurfaceCylinderInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["SurfaceCylinderInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCylinderInputs.ObjectID.ObjectID"] = Input { Value = 3, }
         },
         ViewInfo = OperatorInfo { Pos = { 133.333, 118.273 } },
      },
      green = Shape3D {
         NameSet = true,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input { Value = -3.32324321852873, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.152191945164344, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -0.0878676937865432, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.2535312, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.52, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.23036, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 136, 71.2727 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         CtrlWZoom = false,
         Inputs = {
            UseObject = Input { Value = 1, },
            ObjectID = Input { Value = 1, },
            Alpha = Input { Value = 1, },
            Gain = Input { Value = 0, },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 562, 63.3939 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "red",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "green",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "white",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 310.667, 62.1818 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.Channels.ObjectID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 433.333, 64.606 } },
      },
      red = Shape3D {
         NameSet = true,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 1.118, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.394, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.086286, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.086286, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 140.667, 28.5758 } },
      }
   }
}

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 3:07 am
by xunile
I would use a Bitmap node like Bryan used to mask out the 2 you don't want.

Code: Select all
{
   Tools = ordered() {
      red = Shape3D {
         NameSet = true,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input { Value = 1.118, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.394, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.086286, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.086286, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { -758, -105.303 } },
      },
      green = Shape3D {
         NameSet = true,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["Transform3DOp.Translate.X"] = Input { Value = -3.32324321852873, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.152191945164344, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -0.0878676937865432, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.2535312, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.52, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.23036, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { -762.667, -62.6062 } },
      },
      Merge3D1_1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "red",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "green",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1_1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "white",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -588, -70.4849 } },
      },
      white = Shape3D {
         NameSet = true,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["Transform3DOp.Translate.X"] = Input { Value = -1.217, },
            Shape = Input { Value = FuID { "SurfaceCylinderInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
            ["SurfaceCylinderInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCylinderInputs.ObjectID.ObjectID"] = Input { Value = 3, }
         },
         ViewInfo = OperatorInfo { Pos = { -765.334, -14.3937 } },
      },
      Renderer3D1_1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalIn = Input { Value = 108000, },
            GlobalOut = Input { Value = 108179, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1_1",
               Source = "Output",
            },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.Channels.ObjectID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { -465.334, -70.485 } },
      },
      Bitmap1 = BitmapMask {
         CtrlWZoom = false,
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            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 = "Renderer3D1_1",
               Source = "Output",
            },
            UseObject = Input { Value = 1, },
            Object = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { -352, -122.333 } },
      },
      Camera3D1_1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -1.69463752771709, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.767723244443471, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -5.34217238255258, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -7.80000019073486, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 184.6, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "Mono" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { -738, 41.9091 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            ObjectID = Input { Value = 1, },
            Alpha = Input { Value = 1, },
            Gain = Input { Value = 0, },
            Input = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Bitmap1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -143.334, -69.2728 } },
      }
   }
}

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 7:08 am
by Dazzer
Thanks, that works.

I do think it would be cool if they added a "use object inverted" checkbox option, that would keep the node tree a little cleaner as it would remove the need for those extra bitmap masks when one wanted to just tap off one element like in my example.

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 9:49 am
by Dazzer
Sorry guys, i'm still trying to get my head around this!

Please check out the "toy" comp below.

In it i have a 3D cube and ground plane.

Using OID i have managed to heavily blur the cube in 2D-land.

But there's a problem: the ground plane still has the cube outline mask.

This ruins the effect.

Is it somehow possible to have the renderer output the elements in isolation, without a mask showing the outline of the invisible objects?

Or to achieve this, does one need to use multiple 3D merge and renderers for this sort of thing (check out the second comp below for that)

EDIT: actually, the second solution is probably more elegent, but my worry is that if you use this method for a complicated composition, it might get CPU expensive with all the multiple merges & renderers!?

---------------------------------------------------------------------------------------------------------

Code: Select all
{
Tools = ordered() {
Cube_Obj_1 = Shape3D {
NameSet = true,
Inputs = {
["Transform3DOp.Translate.Y"] = Input { Value = 0.464, },
["Transform3DOp.Translate.Z"] = Input { Value = 0.866130220859411, },
["Transform3DOp.Rotate.X"] = Input { Value = -1.4062072574161, },
["Transform3DOp.Rotate.Y"] = Input { Value = -41.7000000001863, },
["Transform3DOp.Scale.X"] = Input { Value = 0.237, },
Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.368391, },
["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.581015832, },
["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.843, },
["MtlStdInputs.MaterialID"] = Input { Value = 3, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 1, }
},
ViewInfo = OperatorInfo { Pos = { 524, 43.7273 } },
},
Ground_Obj_2 = ImagePlane3D {
NameSet = true,
Inputs = {
["Transform3DOp.Translate.Y"] = Input { Value = -0.0994912891216342, },
["Transform3DOp.Translate.Z"] = Input { Value = -1.45, },
["Transform3DOp.Rotate.X"] = Input { Value = -90, },
["Transform3DOp.Scale.X"] = Input { Value = 9.45, },
["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
MaterialInput = Input {
SourceOp = "FastNoise1",
Source = "Output",
},
["MtlStdInputs.MaterialID"] = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 518, 105.545 } },
},
FastNoise1 = FastNoise {
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Detail = Input { Value = 9.76, },
Contrast = Input { Value = 3.03, },
XScale = Input { Value = 16.85, },
Color1Red = Input { Value = 0.488, },
Color1Green = Input { Value = 0.132248, },
Color1Blue = Input { Value = 0.132248, },
Color1Alpha = Input { Value = 1, },
Color2Red = Input { Value = 0.59089592, },
Color2Green = Input { Value = 0.89, },
Color2Blue = Input { Value = 0.33197, },
},
ViewInfo = OperatorInfo { Pos = { 388, 106.758 } },
},
Merge3D1 = Merge3D {
Inputs = {
SceneInput1 = Input {
SourceOp = "Ground_Obj_2",
Source = "Output",
},
SceneInput2 = Input {
SourceOp = "Camera3D1",
Source = "Output",
},
SceneInput3 = Input {
SourceOp = "Cube_Obj_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 644.667, 106.758 } },
},
Renderer3D1 = Renderer3D {
CustomData = {
ToolVersion = 2,
},
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
SceneInput = Input {
SourceOp = "Merge3D1",
Source = "Output",
},
["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
["RendererSoftware.Channels.ObjectID"] = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 767.333, 106.424 } },
},
Camera3D1 = Camera3D {
Inputs = {
["Transform3DOp.Translate.X"] = Input { Value = -0.015625, },
["Transform3DOp.Translate.Y"] = Input { Value = 0.572, },
["Transform3DOp.Translate.Z"] = Input { Value = 1.47684247423554, },
["Transform3DOp.Rotate.X"] = Input { Value = -3.9, },
["Transform3DOp.UseTarget"] = Input { Value = 1, },
["Transform3DOp.Target.X"] = Input { Value = 0.00447117164731026, },
["Transform3DOp.Target.Y"] = Input { Value = 0.494405925273895, },
["Transform3DOp.Target.Z"] = Input { Value = 0.984630286693573, },
FLength = Input { Value = 18.2123442718302, },
["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
["MtlStdInputs.MaterialID"] = Input { Value = 2, },
},
ViewInfo = OperatorInfo { Pos = { 792, 17.9394 } },
},
Bitmap2 = BitmapMask {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Image = Input {
SourceOp = "Renderer3D1",
Source = "Output",
},
UseObject = Input { Value = 1, },
Object = Input { Value = 2, },
},
ViewInfo = OperatorInfo { Pos = { 888, 147.364 } },
},
Bitmap1 = BitmapMask {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Image = Input {
SourceOp = "Renderer3D1",
Source = "Output",
},
UseObject = Input { Value = 1, },
Object = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 882.667, 60.0909 } },
},
BrightnessContrast1 = BrightnessContrast {
Inputs = {
MultiplyByMask = Input { Value = 1, },
Input = Input {
SourceOp = "Renderer3D1",
Source = "Output",
},
EffectMask = Input {
SourceOp = "Bitmap1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 961.333, 107.03 } },
},
BrightnessContrast2 = BrightnessContrast {
CtrlWZoom = false,
Inputs = {
MultiplyByMask = Input { Value = 1, },
Alpha = Input { Value = 1, },
Input = Input {
SourceOp = "Renderer3D1",
Source = "Output",
},
EffectMask = Input {
SourceOp = "Bitmap2",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 888, 201.909 } },
},
Merge1 = Merge {
Inputs = {
Background = Input {
SourceOp = "BrightnessContrast2",
Source = "Output",
},
Foreground = Input {
SourceOp = "Blur1",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 1086.67, 172.818 } },
},
Blur1 = Blur {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
XBlurSize = Input { Value = 56.7, },
Input = Input {
SourceOp = "BrightnessContrast1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1089.33, 107.03 } },
}
}
}


---------------------------------------------------------------

Code: Select all
{
   Tools = ordered() {
      Ground_Obj_2 = ImagePlane3D {
         NameSet = true,
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.0994912891216342, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -1.45, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -90, },
            ["Transform3DOp.Scale.X"] = Input { Value = 9.45, },
            ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            MaterialInput = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 522, 106.758 } },
      },
      Cube_Obj_1 = Shape3D {
         NameSet = true,
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.464, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.866130220859411, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -1.4062072574161, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = -41.7000000001863, },
            ["Transform3DOp.Scale.X"] = Input { Value = 0.237, },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.368391, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.581015832, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.843, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["SurfaceCubeInputs.ObjectID.Nest"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 528, 44.9394 } },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Detail = Input { Value = 9.76, },
            Contrast = Input { Value = 3.03, },
            XScale = Input { Value = 16.85, },
            Color1Red = Input { Value = 0.488, },
            Color1Green = Input { Value = 0.132248, },
            Color1Blue = Input { Value = 0.132248, },
            Color1Alpha = Input { Value = 1, },
            Color2Red = Input { Value = 0.59089592, },
            Color2Green = Input { Value = 0.89, },
            Color2Blue = Input { Value = 0.33197, },
         },
         ViewInfo = OperatorInfo { Pos = { 392, 107.97 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -0.015625, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.572, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 1.47684247423554, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -3.9, },
            ["Transform3DOp.UseTarget"] = Input { Value = 1, },
            ["Transform3DOp.Target.X"] = Input { Value = 0.00447117164731026, },
            ["Transform3DOp.Target.Y"] = Input { Value = 0.494405925273895, },
            ["Transform3DOp.Target.Z"] = Input { Value = 0.984630286693573, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 680.667, 120.364 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Cube_Obj_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 692.667, 57.0606 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.Channels.ObjectID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 816, 55.5152 } },
      },
      Merge3D2 = Merge3D {
         CtrlWZoom = false,
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Ground_Obj_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 660.667, 211.606 } },
      },
      Renderer3D2 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 793.333, 207.97 } },
      },
      BrightnessContrast2 = BrightnessContrast {
         Inputs = {
            MultiplyByMask = Input { Value = 1, },
            Alpha = Input { Value = 1, },
            Input = Input {
               SourceOp = "Renderer3D2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 936.667, 209.182 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            MultiplyByMask = Input { Value = 1, },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 966, 108.242 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "BrightnessContrast2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Blur1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1090.67, 174.03 } },
      },
      Blur1 = Blur {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            XBlurSize = Input { Value = 56.7, },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1093.33, 108.242 } },
      }
   }
}

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Thu Nov 14, 2019 6:59 pm
by Bryan Ray
The limitation of the ObjectID approach is that it doesn't handle overlaps very well. The Coverage pass does a little to ameliorate the problem, but it will never go away entirely, and you'll never be able to fill in a holdout, as you see in your first example.

To get the best quality, separate render layers (your second example) is the way to go. Yes, it's slower, but it maximizes flexibility and quality.

Re: 3D > 2D: processing elements in 2D-land?

PostPosted: Wed Nov 27, 2019 10:38 am
by Dazzer
Thanks Bryan, you're right, more control with separate renderers!