计算光照图 UV 坐标

在虚幻引擎 4 中计算 SpeedTree 模型光照图 UV 坐标。

Windows
MacOS
Linux

如要在 UE4 中使用静态光照(全局光照),必须为模型计算一套展开的 UV 坐标。该 UV 贴图即为模型的光照图。设置优秀的光照图需要技术和艺术的结合。以下步骤将详细说明如何在 SpeedTree 中计算光照图 UV 贴图。

左图为模型光照图和密度,右图为 UE4 中贴上光照图的模型。

步骤 1:切换至 Lightmap Density 渲染模式

使用 Render 工具栏按钮,将渲染模式切换至 Lightmap Density。所示画面应与下图相似。

ue4_starting_lightmap.jpg

该展示显示光照图在模型上的分布情况,旨在高度匹配 UE4 中相同的展示模式(Show -> Lightmap density)。模型的绿色部分代表理想的密度。蓝色意味着光照图精度过低,在 UE4 中构建光照图时可能出现穿帮。红色意味着光照图精度过高,应用在现有几何体上有浪费之嫌。

光照图在左下角进行渲染。选择模型的部分,确认其在光照图中的位置。也可选择光照图中的三角形,确定它们来自模型的哪个部分。最大化利用光照图的方法是让模型较大的部分使用较大的光照图。稍后将详细讲述如何进行此操作。

模型单元在展示中具有作用。选择 Tree 生成器并编辑 Lightmap:Scale,按导入 UE4 时的相同缩放量对模型进行缩放。此默认值与导入器的默认值相同。

Window 属性 中对相关属性进行编辑,即可改变光照图在视口中的渲染尺寸。

步骤 2:选择光照图分辨率

光照图的分辨率取决于项目的要求和树的复杂程度。目的是使用尽量低的光照图分辨率,为场景中模型的放置获得足够的覆盖。

选择 Tree 生成器并编辑 Lightmap:Resolution 属性,即可对目标光照图分辨率进行设置。有可能模型过于复杂,无法与选择的分辨率匹配。出现这种情况时,输出窗口将弹出警告提示,分辨率将变为最小分辨率;将在光照图中为模型中的每个节点添加至少一个纹素,同时保持一个纹素的边界,防止渲染穿帮。

步骤 3:调整光照图

选择分辨率后,下一步需要对模型上光照图的分布方式进行调整,确保最大的密度设置在最需要的模型部分上。整体而言,最大的密度应该设置在树干、低枝和根部。这些区域对玩家常见,密度较低时容易出现明显穿帮。相对而言,树叶的密度通常较小,便于在较小的光照图中匹配模型。

结合下列工具的使用对光照图密度分布进行调整:

  • Reset - 选择 Tools -> Reset lightmap,将除树叶外的全部光照图标量设为 1.0。树叶的标量被设为 0.0,因此每片树叶将获得一个纹素,不多不少(稍后详细讨论)。

  • Material Scales - 每个材质均拥有一个名为 Unwrap scale 的属性。增加或减少该数值可改变使用此材质的每块几何体的相对尺寸(便于设置上限)。

  • Generator/Node Scales - 每个存储几何体的生成器/节点组合均拥有一个 Lightmap:Scale 属性。调整此数值即可改变所选物体在光照图中的空间尺寸。枝干上的分布曲线可在物体上调整光照图空间的分布(而无需变更实际使用的光照图区域)。该曲线用于消除这样的情况:使用相同纹理空间的情况下,随几何体的缩小,顶端附近枝干光照图的密度将自然增加。

  • Lightmap Resolution - 如在所选分辨率中无法完成操作,可能需要选择更高的分辨率(如步骤 2 中所述)。布置将会产生巨大变化,可能需要重置并重新开始。

可进入节点编辑模式将单个枝干、叶片和树叶的比例调大,针对出现问题的区域进行处理。

最佳做法:在枝干设置好之前,使树叶保持为零。然后将树叶的比例调大,使其填充所有空白空间。

算法将积极尝试将所有资源匹配到所选的分辨率中。如一个组件比例过大,其他组件无法匹配,算法将对其尺寸进行调整,以便完成匹配。出现这样的情况时,之前密度正常的区域可能突然变为不正常。调低之前编辑的比例使其重新获得正常距离,即可将此问题解决。

步骤 4:在虚幻引擎 4 中选择光照图分辨率

在 UE4 中导入模型时,默认的光照图分辨率为 64(与所有静态网格体相同)。选择网格体资源并输入您在此处使用的光照图分辨率(Details -> Static Mesh Settings -> Lightmap Resolution)。在 UE4 中构建灯光时,可以利用光照图在一些非常复杂的几何体上实现令人惊叹的效果!

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback