使用灯光在渲染中

使用 Gather Lights Render Pass 从节点列表中收集光节点,以便为场景中的3D节点提供照明。

../../_images/gather-lights-render-pass1.svg

收集灯光

Gather Lights Render Pass 收集光节点以照亮场景中的 3D 节点。

默认情况下,Gather Lights Render Pass 收集场景中的所有光节点或其最近的上级 Node List Render Pass 提供的光节点。

例如:在此渲染传递预设中,Gather Lights Render Pass 收集其父 Node List Render Pass 提供的光节点:

../../_images/node-list-gather-lights-draw-objects.png

您可以在相同的 Render Pass Prefab 中使用任何 Node List Render Pass 来为 Gather Lights Render Pass 提供光节点。要了解如何使用过滤器将节点传递给渲染通道,请参阅 过滤器 (Filters)。

要设置您想要用于收集灯光的 Node List Render Pass:

  1. 在 Library > Rendering > Render Pass Prefabs 中选择您要使用来收集光节点的 Gather Lights Render Pass。

    ../../_images/gather-lights-render-pass-in-library.png
  2. 在 Properties 中点击 + Add Binding,并在 Binding Editor 中设置:

    • Property 到 Node List

    • 将 Expression 到 Node List Render Pass 的 Output Node List 属性。

      例如,要收集由 Gather Lights Render Pass 的同级 Node List Render Pass 提供的光节点,请将 Expression 设置为:

      {@../Node List Render Pass/NodeListRenderPass.OutputNodeList}
      

    单击 Save。

    ../../_images/gather-lights-render-pass-node-list-binding.png
  3. 使用您收集的光节点渲染 3D 内容。请参阅 照明 3D 节点 (Lighting 3D nodes)。

照明 3D 节点 (Lighting 3D nodes)

使用 Draw Objects Render Pass 和 Draw Objects With Material Render Pass 渲染通道来绘制 3D 节点。Kanzi 默认情况下使用最近的祖先 Gather Lights Render Pass 提供的光源节点为由 Draw Objects Render Pass 或 Draw Objects With Material Render Pass 绘制的 3D 节点照明。

例如,在此渲染传递预设中,Kanzi 照亮 3D 节点,Draw Objects Render Pass 使用父 Gather Lights Render Pass 收集的光节点进行绘制:

../../_images/gather-lights-draw-objects.png

Gather Lights Render Pass 具有输出属性,每个属性都包含由该 Gather Lights Render Pass 收集的特定类型的灯光集。您可以手动设置 Draw Objects Render Pass 或 Draw Objects With Material Render Pass 以使用同一渲染通道预设中任何 Gather Lights Render Pass 提供的灯光。

../../_images/gather-lights-render-pass-properties.png

要设置您希望其输出灯光用于照亮 3D 节点的 Gather Lights Render Pass:

  1. 在 Library > Rendering > Render Pass Prefabs 中,选择您用于绘制3D内容的 Draw Objects Render Pass 或 Draw Objects With Material Render Pass。

    ../../_images/draw-objects-render-pass-sibling.png
  2. 在 Properties 中点击 + Add Binding,并在 Binding Editor 中设置:

    • 将 Property 设置为您要使用的灯光类型:

      • Directional Lights 用于 Directional Light 节点。

      • Point Lights 用于 Point Light 节点。

      • Spot Lights 用于 Spot Light 节点。

    • 将 Expression 应用于您要使用的 Gather Lights Render Pass 的输出灯光属性:

      • Output Directional Lights 用于 Directional Light 节点。

      • Output Point Lights 用于 Point Light 节点。

      • Output Spot Lights 用于 Spot Light 节点。

    例如,要使用您添加绑定的渲染通道的同级 Gather Lights Render Pass 的 Directional Light 节点,请设置:

    • Property 到 Directional Lights

    • Expression 到

      {@../Gather Lights Render Pass/GatherLightsRenderPass.OutputDirectionalLights}
      

      单击 Save。

    ../../_images/directional-lights-binding-editor.png
  3. 重复上一步以添加您要使用的其他类型光节点的绑定。

    ../../_images/draw-objects-render-pass-light-bindings.png
  4. 使用渲染通道:

    1. 在 Node Tree 中选择包含您要渲染的3D内容的 Viewport 2D 节点。

    2. 在 Properties 中,将 Render Pass Prefab 属性设置为包含您用于收集光节点的 Gather Lights Render Pass 和用于绘制3D内容的 Draw Objects Render Pass 或 Draw Objects With Material Render Pass 的渲染通道预设。

另请参阅

渲染 (Rendering)

过滤器 (Filters)

使用光源节点

收集节点以进行渲染。