版本:Unity 6 (6000.0)
语言:英语
平滑光照贴图中的硬边
优化烘焙

修复光照贴图中的光晕

每个 光照贴图预渲染的纹理,包含场景中静态物体上的光源效果。光照贴图叠加在场景几何体上,以创建光照效果。 更多信息
参见 术语表
包含多个 图表。在运行时,Unity 将这些图表映射到 网格Unity 中的主要图形基元。网格构成了 3D 世界的很大一部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、Subdiv 表面必须转换为多边形。 更多信息
参见 术语表
面,并使用图表的照明数据来计算最终外观。由于 GPU 采样方式,如果图表彼此太靠近,则来自一个图表的數據可能会溢出到另一个图表。这通常会导致意外的伪影,例如锯齿、像素化等等。

Example of graphical artifacts due to chart bleeding
图表溢出导致图形伪影的示例

为了避免光晕,图表之间必须有足够的间距。当 GPU 采样光照贴图时,光照系统根据最靠近采样点的四个纹素(假设使用双线性过滤)来计算最终采样值。这四个纹素称为采样点的双线性“邻域”。如果图表重叠,则图表过于靠近,即如果任何图表内的点的邻域与另一个图表中的任何点的邻域重叠。在下图中,白色 像素计算机图像中的最小单位。像素大小取决于屏幕分辨率。每个屏幕像素都会计算像素光照。 更多信息
参见 术语表
表示图表邻域,红色像素表示重叠邻域。

Red pixels indicate overlapping chart neighbourhoods
红色像素表示重叠图表邻域

确定最佳图表位置和间距可能很困难,因为它取决于多个参数(例如光照贴图分辨率、网格 UV 和导入器设置)。出于这个原因,Unity 提供了以下部分中概述的轻松识别这些问题的功能。

识别

有三种方法可以识别重叠

  • 密切注意 Unity 的控制台。如果 Unity 检测到重叠的 UV,它将打印一条警告消息,其中包含受影响 游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、相机、路径点等等。游戏对象的功能由附加到它的组件定义。 更多信息
    参见 术语表
    的列表。

  • 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您可以放置环境、障碍物和装饰物,本质上是设计和构建游戏的各个部分。 更多信息
    参见 术语表
    视图中使用 UV 重叠 绘制模式(有关更多信息,请参见 场景视图中的 GI 可视化)。启用此模式后,Unity 会在过于靠近其他图表纹素的图表纹素上添加红色突出显示。如果您在 场景视图对您正在创建的世界进行交互式查看。使用场景视图选择和放置场景、角色、相机、灯光以及所有其他类型的游戏对象。 更多信息
    参见 术语表
    中发现伪影,并且想快速检查是否是由 UV 重叠引起的,这将非常有用。

Scene View using UV Overlap draw mode (see dropdown in top left)
使用 UV 重叠绘制模式的场景视图(参见左上角的下拉菜单)
  • 使用 烘焙的光照贴图预览。选择一个游戏对象,然后转到“光照”窗口,然后选择“烘焙的光照贴图”选项卡。双击突出显示的光照贴图,导航到“预览”窗口,然后选择“烘焙的 UV 重叠”(参见右上角的下拉菜单)。在该视图中,预览窗口将以红色对有问题的纹素进行着色。
The Baked Lightmaps Preview in the Lighting window’s Baked Lightmaps tab
光照窗口的“烘焙的光照贴图”选项卡中的烘焙的光照贴图预览

解决方案

对于 UV 重叠,没有唯一的解决方案,因为有很多因素会导致 UV 重叠。以下是一些最常见的解决方案

  • 如果您自己提供光照贴图 UV,请使用建模软件添加边距。
  • 如果 Unity 自动为模型生成光照贴图 UV,则可以告诉 Unity 增加打包边距。最简单的方法是将 边距方法 设置为 计算,并设置适当的 最小光照贴图分辨率最小物体缩放比例。如果您希望将 边距方法 设置为 手动,则可以直接调整 打包边距 值。有关这些设置的更多信息,请参见有关 生成光照贴图 UV 的文档。
  • 增加整个光照贴图的分辨率。这将增加图表之间的像素数量,从而降低光晕的可能性。缺点是您的光照贴图可能会变得太大。您可以在 光照 选项卡的 光照贴图设置 下执行此操作。
  • 增加单个游戏对象的分辨率。这样可以仅为具有重叠 UV 的游戏对象增加光照贴图分辨率。尽管可能性较小,但这也会增加光照贴图的大小。您可以在游戏对象的 网格渲染器网格组件,从网格过滤器获取几何体,并在由对象的变换组件定义的位置进行渲染。 更多信息
    参见 术语表
    中的 光照贴图设置 下更改游戏对象的光照贴图分辨率。
Same mesh as before, but without bleeding artifacts
与之前相同的网格,但没有光晕伪影
平滑光照贴图中的硬边
优化烘焙