网格轮廓概述 -- MRTK3

许多网格轮廓技术都是使用后处理技术完成的。 后处理提供优质的轮廓,但在许多混合现实设备上可能会非常昂贵。

MeshOutlineSampleScene

MeshOutline.cs 和 MeshOutlineHierarchy.cs 可用于渲染网格渲染器四周的轮廓。 启用此组件会引入已绘制轮廓的对象的其他渲染通道,但其目的是在移动混合现实设备上高效运行,且不利用任何后处理。

注意

此效果的局限性在于它无法很好地处理非水密性对象(或需要具有双面的对象),并且重叠对象可能出现深度排序问题。

示例

有关轮廓系统的演示,请参阅“网格轮廓”示例

材料设置

轮廓行为与“图形工具/标准”着色器结合使用。 轮廓材料通常是不发光的纯色,但可对其进行配置以实现各种效果。 轮廓材料的默认配置如下所示:

Mesh outline material inspector

  1. 深度写入 - 应对轮廓材料禁用此设置,以确保轮廓不会妨碍其他对象的渲染。
  2. 顶点延伸 - 需要启用才能渲染轮廓。
  3. 使用平滑法线 - 对于某些网格,此设置是可选的。 通过沿着顶点法线移动顶点可完成延伸,在某些网格上,沿着默认法线延伸会导致轮廓中断。 若要修复这些中断,可选中此框以使用由 MeshSmoother.cs 生成的另一组平滑法线

网格平滑

MeshSmoother.cs 是可用于在网格上自动生成平滑法线的组件。 此方法对网格中共享同一空间位置的顶点进行分组,然后取这些顶点的法线的平均值。 此过程会创建基础网格的副本,并且应仅在需要时使用。

Smooth normals comparison

在上图中,立方体 1 使用网格平滑,而立方体 2 不使用。 请注意不使用网格平滑的立方体的角落处的中断。

提示

某些网格(如球体)不显示这些中断。 因此,最好对需要网格平滑的网格进行测试。

另请参阅