In the olden days, producers knew what visual effects were. Now they’ve gotten into this methodology where they’ll hire a middleman – a visual effects supervisor, and this person works for the producing studio.
They’re middle managers. And when you go into a review with one of them, there’s this weird sort of competition that happens.

It’s a game called ‘Find What’s Wrong With This Shot’. And there’s always going to be something wrong, because everything’s subjective. And you can micromanage it down to a pixel, and that happens all the time. We’re doing it digitally, so there’s no pressure to save on film costs or whatever, so it’s not unusual to go through 500 revisions of the same shot, moving pixels around and scrutinizing this or that.

That’s not how you manage artists. You encourage artists, and then you’ll get – you know – art.

If your idea of managing artists is just pointing out what’s wrong and making them fix it over and over again, you end up with artists who just stand around asking “OK lady, where do you want this sofa? You want it over there? No? Fine. You want it over there? I don’t give a fuck. I’ll put it wherever you want it.” It’s creative mismanagement, it’s part of the whole corporate modality. The fish stinks from the head on down. Back on Star Wars, Robocop, we never thought about what was wrong with a shot.

We just thought about how to make it better.

Phil Tippett

3D Shadow Question

Moderator: SecondMan

crujitricl
Posts: 9
Joined: Mon Feb 13, 2017 8:35 am

3D Shadow Question

Post #1 by crujitricl » Fri May 12, 2017 12:03 am

Hey, I can't seem to figure out how to create a shadow cast on a 3D plane using the spotlight to only show the shadow, and not the plane.

Also, Is it possible to cast a shadow with the directional light?

User avatar
SecondMan
Site Admin
Posts: 1576
Joined: Thu Jul 31, 2014 4:31 pm
Location: Vancouver
Been thanked: 34 times
Contact:

Re: 3D Shadow Question

Post #2 by SecondMan » Fri May 12, 2017 6:47 am

To get a shadow-only pass, use two Renderer3D nodes, one with shadows and one without, then calculate the difference between them, for example by using a Channel Booleans node.

And no, directional lights​ don't support shadows.

User avatar
Chad
Fusionator
Posts: 1006
Joined: Fri Aug 08, 2014 12:11 pm
Been thanked: 8 times

Re: 3D Shadow Question

Post #3 by Chad » Fri May 12, 2017 8:15 am

SecondMan wrote:To get a shadow-only pass, use two Renderer3D nodes, one with shadows and one without, then calculate the difference between them, for example by using a Channel Booleans node.


You have to replace materials, too, as the surface receiving the cast shadow may not be white when shadows are off.

crujitricl
Posts: 9
Joined: Mon Feb 13, 2017 8:35 am

Re: 3D Shadow Question

Post #4 by crujitricl » Fri May 12, 2017 9:24 am

SecondMan wrote:To get a shadow-only pass, use two Renderer3D nodes, one with shadows and one without, then calculate the difference between them, for example by using a Channel Booleans node.

It worked but I'm having trouble changing the shadows color to black as it just disappears when I lower the brightness using the color corrector node.

User avatar
SecondMan
Site Admin
Posts: 1576
Joined: Thu Jul 31, 2014 4:31 pm
Location: Vancouver
Been thanked: 34 times
Contact:

Re: 3D Shadow Question

Post #5 by SecondMan » Fri May 12, 2017 9:33 am

Chad wrote:You have to replace materials, too, as the surface receiving the cast shadow may not be white when shadows are off.


For a shadow matte, yes, but a shadow pass may just contain the colored shadow as is.

crujitricl wrote:It worked but I'm having trouble changing the shadows color to black as it just disappears when I lower the brightness using the color corrector node.


Here are a few examples:

Code: Select all

{
   Tools = ordered() {
      SpotLight1 = LightSpot {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.414497479778722, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 2.36790773655278, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 1.0172355676146, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -61.2000045776367, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 32.5999984741211, },
            ["ShadowLightInputs3D.Nest"] = Input { Value = 1, },
            ["ShadowLightInputs3D.ShadowMapSize"] = Input { Value = 4048, },
         },
         ViewInfo = OperatorInfo { Pos = { 605, 148.5 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.696711931304798, },
            SceneInput1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D1_1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "SpotLight1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 379.5 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 1.48373735015261, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.546642662772501, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.27491814502451, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -21.4000045776367, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 34.5999980926514, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 379.5 } },
      },
      Renderer3D1_1 = Renderer3D {
         Inputs = {
            GlobalOut = Input { Value = 2000, },
            Width = Input { Value = 4096, },
            Height = Input { Value = 1936, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL" }, },
            ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
            ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
            ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 445.5 } },
      },
      Renderer3D1 = Renderer3D {
         Inputs = {
            GlobalOut = Input { Value = 2000, },
            Width = Input { Value = 4096, },
            Height = Input { Value = 1936, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL" }, },
            ["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
            ["RendererOpenGL.Channels.RGBASS"] = Input { Value = 1, },
            ["RendererOpenGL.Supersampling"] = Input { Value = 1, },
            ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
            ["RendererOpenGL.ShadowsEnabled"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 379.5 } },
      },
      ChannelBooleans1 = ChannelBoolean {
         Inputs = {
            Operation = Input { Value = 13, },
            Background = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 445.5 } },
      },
      Shape3D1_1 = Shape3D {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.538835314446283, },
            ["Transform3DOp.Translate.Z"] = Input { Value = -0.127346147060909, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -76.7029329496436, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.87719298245614, },
            ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.553147574819401, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
            ["SurfacePlaneInputs.Width"] = Input { Value = 2.74528301886792, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { 770, 511.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.298569502193136, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.406245401281842, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -76.7029329496436, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.862745098039216, },
            ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.585139318885449, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 0.235849056603774, },
            ["SurfaceSphereInputs.SubdivisionLevelBase"] = Input { Value = 60, },
            ["SurfaceSphereInputs.SubdivisionLevelHeight"] = Input { Value = 60, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 550, 511.5 } },
      },
      View_Me_Example2 = ChannelBoolean {
         NameSet = true,
         Inputs = {
            Blend = Input { Value = 0.727358490566038, },
            Operation = Input { Value = 2, },
            Background = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Blur1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 577.5 } },
      },
      Blur1 = Blur {
         Inputs = {
            XBlurSize = Input { Value = 9.05660377358491, },
            Input = Input {
               SourceOp = "ChannelBooleans1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 511.5 } },
      },
      View_Me_Example1_1 = ChannelBoolean {
         NameSet = true,
         Inputs = {
            Operation = Input { Value = 2, },
            Background = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "ChannelBooleans1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 577.5 } },
      },
      View_Me_Example3 = ChannelBoolean {
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            Operation = Input { Value = 6, },
            Background = Input {
               SourceOp = "Renderer3D1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "ChannelBooleans4",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 577.5 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Saturation = Input { Value = 0, },
            Input = Input {
               SourceOp = "ChannelBooleans1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 445.5 } },
      },
      BrightnessContrast3 = BrightnessContrast {
         Inputs = {
            Gain = Input { Value = 2.32830188679245, },
            ClipWhite = Input { Value = 1, },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 478.5 } },
      },
      ChannelBooleans4 = ChannelBoolean {
         Inputs = {
            Operation = Input { Value = 10, },
            Background = Input {
               SourceOp = "BrightnessContrast3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 511.5 } },
      }
   }
}

crujitricl
Posts: 9
Joined: Mon Feb 13, 2017 8:35 am

Re: 3D Shadow Question

Post #6 by crujitricl » Fri May 12, 2017 10:11 am

Thanks a lot for that example! Got it working perfectly now.
As an unrelated question, is it possible to get the 3D OpenGL renderer to use anti-aliasing like the software one?

User avatar
SecondMan
Site Admin
Posts: 1576
Joined: Thu Jul 31, 2014 4:31 pm
Location: Vancouver
Been thanked: 34 times
Contact:

Re: 3D Shadow Question

Post #7 by SecondMan » Fri May 12, 2017 10:16 am

Yes, look at the example above, it's set up to do that.

And don't forget to turn on the 'HiQ' button at the bottom of Fusion's UI to see the result interactively.

crujitricl
Posts: 9
Joined: Mon Feb 13, 2017 8:35 am

Re: 3D Shadow Question

Post #8 by crujitricl » Fri May 12, 2017 10:40 pm

Ah, I forgot to turn that on. Thank you again.

Who is online

Users browsing this forum: No registered users and 3 guests