常见网址格式 |
您所在的位置:网站首页 › ue4材质不受光照影响 › 常见网址格式 |
继续分享学习啊!UE4光照烘焙这一块常见问题整理的第三章。内容有点多不过值得看至少值得收藏。 相关阅读: 【UE4_光照】UE4中光照的常见问题和解决方案(一)使用手册 【UE4_光照】UE4中光照的常见问题和解决方案(二)使用手册 光照贴图分辨率/阴影质量 每一个项目都有其独特的艺术方向和目标,所以本节意在介绍一些常见的概念,提供一些基本知识,便于你开始实现通过静态照明想要达到的效果。我们在此提供的设置并不一定始终适合于每一个项目。 包含 3 个静态网格的样本场景 该场景中有 3 个对象,两面墙和一个地板网格。每一个对象都有自己的阴影,阴影烘焙到纹理中,称为光照贴图。该光照贴图将投射到自身的任何阴影/照明信息存储到该纹理中。这通常由美工在创建资产时处理。 想要进一步了解光照贴图以及如何有效地创建光照贴图? 换言之,如果我想提高墙投射到门口的阴影的分辨率,我不会调整门口,而是调整地板的光照贴图分辨率。这是阴影所投射到并烘焙到光照贴图的位置。 明确这一点之后,我们可能只需要提高一部分网格的光照贴图分辨率。每个网格都有自己的光照贴图分辨率,选择网格后可以通过“细节”面板进行设置,也可以通过网格编辑器进行设置。 对于该光照贴图质量演示,我们只需研究地板网格的光照贴图分辨率即可。在调整 LM 分辨率时,确保使用 2 的幂次方(32 [引擎默认值]、64、128 等),但 BSP 例外(详情见下文) 该光照贴图分辨率的质量主要取决于两个因素:网格大小和光照贴图 UV 中的 UV 壳的大小。 静态网格的光照贴图分辨率
![]() ![]() ![]() BSP 光照贴图分辨率
![]() ![]() ![]() ![]() 景观光照贴图分辨率
![]() ![]() 在“细节”面板中,你可以选择增大静态照明分辨率,其默认值为 1。调整该设置时,只需以整数为增量逐渐增大即可,直到达到所需分辨率 间接照明的阴影接缝/明暗差异 通常在构建项目照明时,在间接照亮区域中,可能会注意到模块化平面之间有时会出现明暗差异,通常是墙面、地面和天花板。这是目前由于对静态间接照明的处理方式而导致的负面影响,无法轻易解决。希望将来能够加以改善。 以下是对该问题的详细剖析,方便对此尚不熟悉的读者学习。 照明点亮了一个表面,然后光线反射到了周围的表面上。这种类型的反射光称为间接照明。有些表面也会被直接照亮,同时也会接收到一些反射光,比如下图中的墙,一部分是完全照亮的,一部分接收了间接照明,因此在有阴影的角落出现了明暗问题
![]()
![]() 现在大家一定在想,我该怎么解决这个问题呢? 在全局设置的光照系统部分下,可以调整一些设置来获得更好的效果。 间接照明质量可以设置为 2 或更大的值。间接照明平滑度通常可以设置为 .65-.75 的范围。该值越低,失真的可能性越大,导致光照贴图看起来就像有污渍。(仅建议高级用户使用!!)静态照明关卡比例可以调整为较低值,也可以获得更好的融合效果。但是这会更改为整个关卡计算照明的比例。如果将该值降低,会明显增加构建时间,但结果也会更好。该设置通常被建筑可视化领域的从业者们使用,游戏开发者则不常用,除非具有特定的原因并理解该选择的效果。 调整间接照明的质量时,降低照明平滑度总是很好的做法,这样可以获得更好的结果。这样有助于各个面更自然地衔接起来,但不一定会彻底解决该问题,而且也可能会产生其他负面影响。应该在项目或测试贴图中进行测试,充分理解各种调整的影响以及原因。 还可以执行一些其他步骤来降低这种失真的明显程度,并执行一些其他操作来改进项目设计。 尽量不要将关卡设计得过于模块化!这一点十分重要。有些人可能会觉得,把一面中等面积的墙体分解成一块块小型的精简拼块,然后像乐高一样打包在一起是最好的做法,但这就会有明暗差异的风险,而且现在会有更多的 Actor,导致绘图调用增加,资产可见性检查量也会增加。最好是就设计一面墙,这样更为合理,而不是许多小的拼块。这样绘图调用数量降低,照明问题也会减少。 只需要使用一些其他的几何结构来隐藏可能存在接缝的位置即可,比如柱状体、邻接墙或踢脚线。 构建照明时出现的“重叠 UV 错误”是什么意思? 在使用静态或静止照明时,必须在网格中使用两个 UV,否则在构建照明时就会看到如下警告: 消息日志,照明结果 这意味着需要为光照贴图建立第二个 UV 通道,否则编辑器就会使用现有的纹理 UV 作为光照贴图,从而引起这一类的错误。 要解决该问题,可以调整光照贴图的 UV,以便不会出现重叠面。 该操作可以在编辑器中通过生成光照贴图执行,也可以使用所选的建模软件来创建和编辑 UV。 原始 UV 和结果
![]() ![]()
![]() ![]() 如果有重叠面,就会因为无法正确烘焙照明信息而产生不正确的明暗效果。 如何在编辑器中生成光照贴图 UV? 在 4.5 版本中,编辑器会自动在导入时或使用网格编辑器生成 UV。 我们假设你想要从网格编辑器进行设置。 打开想要为其创建光照贴图的网格。 在右侧找到如下面板:
![]() “构建设置”选项卡中需要重点关注的设置包括: 生成光照贴图 UV = 确保选中该项。 最低光照贴图分辨率 = 这是你希望光照贴图分辨率具有的最小值。 源点光照贴图索引 = 这是要从中生成光照贴图 UV 的源点。 目标光照贴图索引 = 这是在创建后将用于存储该 UV 的位置。 对于大多数资产而言,上述设置足以满足需要。关键是要确保选择正确的源点光照贴图索引。这是通常用于纹理的 UV。该 UV 中的 UV 壳/岛会重新打包,避免出现重叠面,这对于使用光照贴图而言至关重要。 对于光照贴图分辨率设置,从较低值开始使用也并不是坏事,因为不一定会用到这个分辨率。如果决定使用较高分辨率,无需回到这里更改设置,除非你知道这样会改善光照贴图烘焙。在大多数情况下不必如此。 单击“应用更改”之后,可以验证是否创建了光照贴图,查看是否有任何错误。 要执行此操作,可以转至网格编辑器工具栏,单击 UV 图标来显示 UV,并使用右侧的下拉按钮来选择 UV 通道 1,就可以看到新创建的光照贴图。 应该类似于以下内容:
![]() 在网格编辑器右侧的“细节”面板中,找到“静态网格设置”选项卡?
![]() 确保以 2 的幂次方调整该值。(即32、64、128、256 等) 需要核实的下一个设置时光照贴图坐标索引现在是否指向正确的通道。确保设置为你在上述构建设置中所设置的通道。通常应该设置为 1。 在使用这些设置后,你现在应该具有正确的光照贴图分辨率了。 但这里也有一些注意事项,可能需要使用 Blender、3Ds Max 或 Maya 之类的建模程序来彻底更正该问题。 生成的光照贴图不会导致现有 UV 中来自纹理 UV 通道 1 的接缝断开。只会重新打包现有的 UV 布局,以更好地适应光照贴图 UV 的需要。 例如,可以想象一个圆柱体。如果要把这些面全部平铺展开,需要在圆柱体的侧面剪开一条线才可以。在建模程序中,这不是必需操作,具体取决于你是如何设置要使用的纹理 UV 的。如果切割这个侧面不是为了平铺展开,那么通过网格编辑器生成的 UV 就不起作用,但仍会在构建照明后引起重叠 UV 警告。 如何使用静态照明控制全局光照?即反射的优点 在使用静态照明时,需要构建照明来查看结果。光照系统用于编译和生成纹理,通过将场景的照明和阴影信息烘焙到光照贴图纹理,将该信息存储到纹理中。 默认情况下,光照系统设置为使用三次光线反射,以通过静态照明控制 GI。如果还需要进一步设置,需要通过“全局设置”选项卡直接更改光照系统设置来获得不同的结果。我们可以通过更改光线投射的反射次数来影响全局光照。 要启用“全局设置”选项卡,需要转至工具栏,选择“设置 > 全局设置”
![]() ![]() 这里看到的很多设置都会影响通过光照系统处理照明的方式,从而直接影响场景。对于 GI,我们只会着重讲解第二个选项“间接光线反射次数”。该滑块的范围是 1 到 4。但只能通过手动输入值覆盖原有设置。 右侧显示的是默认设置。 全局光照样本场景,单一点光源位于 250(≈ 15W 灯泡)
![]() ![]() ![]() ![]() ![]() ![]() ![]() 想要进一步了解光照系统和全局光照? https://docs.unrealengine.com/en-US/RenderingAndGraphics/Lightmass/index.html 为什么我的静态网格上有阴影斑点?或者如何清理这些不干净的光照贴图? 在 UE4 中,无论使用哪种类型的静态照明,出现污渍、斑点、污垢等都是十分常见的问题。但不要担心,因为我们可以通过光照系统设置来清理这些不干净的光照贴图。 首先,看到类似效果的原因是光照系统构建时 GI 反射产生的间接照明导致的。 为了最有效地重现此问题,下面这个简单的场景有两个房间。 样本场景
![]() ![]() 构建照明后得出以下结果: 初始照明构建,默认设置
![]() ![]() 例如,下面是光照贴图分辨率更改为 1024 的上述第二个室内。 初始照明构建,默认设置
![]() ![]()
![]()
![]() 间接照明质量:这会增大全局光照解算器计数,为需要高质量的关卡提高质量。 间接照明平滑度:这是要应用于间接照明的平滑度因子。 警告:间接照明质量使用大于 1 的值会大幅增加构建时间。
![]() ![]()
![]() ![]()
![]() ![]() 虽然这种方法深入探索了不在房间里设置任何照明的选项,并寻找各种方法减少由于间接照明导致的“不干净”失真,但必须注意的是,在这些区域中使用照明,即使是密度极低的无阴影投射光线,也会产生一定的效果。以上所列的方法可以作为起点,可能需要经历一些试验和错误才能得到更理想的结果。 想要进一步了解光照系统基本支持? https://tinyurl.com/y4lwhb5u 想要进一步了解光照系统全局光照? https://tinyurl.com/y6n5kkyd 左上角错误中的“需要重建照明”是什么意思?
![]() 当照明因移动或修改照明 Actor 而导致失效时会产生此警告。这样会导致问题的原因是关卡中的渲染照明不能准确地表示关卡中当前的照明状态。要解决该错误,可以转至“构建”菜单并重建地图照明。 故障排除技巧 未构建 Actor 列表 有时会发现已经构建了照明,但仍会看到弹出该警告,指出有多个未构建的对象,但无法直接识别是哪些对象。 您可以从“开发者工具”菜单打开输出日志窗口。 输入命令 DumpUnbuiltLightInteractions 就会显示一列没有构建照明或者照明失效的 Actor。 这一列 Actor 对于确定所发生的问题十分有用。可能只是因为某个蓝图设置为静态但包含可移动组件,也可能是因为某个 Actor 是通过构造脚本放置的,然后构建照明后被移到了其他位置。 统计信息窗口 转至“窗口 > 统计信息”可以打开统计信息窗口。该工具可以用于确定构建照明的信息以及场景中设置了光照贴图分辨率的所有静态网格的信息。要排查特定 Actor 在照明构建过程中构建照明所需的确切时间,该工具十分有用。如果感觉某些进程十分缓慢,该工具可以帮助轻松识别照明构建时间较长的有问题对象。 照明质量比较,或制作 > 预览 当需要为某个关卡构建照明时,可以转至工具栏中的“构建 > 照明质量”并选择质量级别来设置光照贴图的照明构建质量。 默认情况下,该质量设置为预览。该设置具有最快的计算时间,而制作的计算时间最慢,但准确性要高得多。 “照明质量”设置位于以下位置: 照明质量设置 在以下演示中,用了一个封闭的房间显示所构建阴影的质量:(该场景与#为什么我的静态网格上有阴影斑点?或者如何清理这些不干净的光照贴图?所用的场景设置一样 照明质量设置,建筑
![]() ![]() ![]() ![]() 在以下场景中,雕塑静态网格的阴影质量调整并不明显。质量上有轻微的差异,但这个具体的对象不足明显地显示出来 照明质量设置,有机线条
![]() ![]() ![]() ![]() ![]() 光照贴图错误颜色 选择“使用错误颜色”并使用“预览”或“中”照明质量设置时,通过“构建菜单”下拉按钮可以启用该选项。
![]() 橙色:因非唯一或重叠 UV 导致的。 绿色:因环绕 UV 或 UV 超出了 0,1 UV 空间范围导致的。 黄色:这是没有贴图的纹理元素,它们或者没有光照贴图区域,或者光照贴图分辨率过低(如果是 BSP)。 您可以在仍然适用的 UE3 文档中查看更多信息: https://udn.epicgames.com/Three/LightmassTools.html#Lightmap error colors 查找“需要重建照明(X 个对象)”中引用的对象 有时,可能会遇到照明总是无效的问题,或者你可能调整了关卡中的某些设置,但没有意识到因此而导致了令人沮丧的“需要重建照明([数量] 个对象)”,但却不能轻松识别这 [数量] 个对象都是什么。 幸运的是,我们为你提供了一种简单的方法来获取此信息,帮助你更有效地跟踪、调查和解决照明无效的问题。 首先转至“窗口 > 开发者工具 > 输出日志”以打开“输出日志”窗口。使用 `(波浪符)键,输入命令 DumpUnbuiltLightInteractions 来打开控制台 那么这种方法作用在哪呢? 你可以快速识别导致出现该警告的 Actor。所构建的某个 Actor 是静态的,然后使用代码或蓝图进行了移动,从而导致出现该警告。使用大量实例和高光照贴图分辨率实例化的网格可能没有正确构建,因为没有生成集群实例光照贴图。这表示需要降低光照贴图分辨率。在某些情况下,使用构造脚本通过蓝图生成网格位置时,如果之前构建了照明,那么移动网格会导致照明失效。该命令也可以快速识别这种情况。 照明构建统计信息 编辑器中提供的“统计信息”窗口是在光照构建完成后查看关卡统计信息的好方法。该窗口可以提供有用的统计信息,帮助缩小场景中耗时最长的 Actor 的范围,计算该 Actor 的照明所耗用的时间及其光照贴图分辨率。
![]() 照明构建信息和静态网格照明信息中包含的所有信息都有助于优化、调查和排查照明构建。 也可以在下列文档中找到该信息: https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/Lightmass/#gettingthebestlightingbuildtimes 景观草类资产平铺图案 你或许没有注意到,景观草类资产中有一个隐藏的小功能。此功能允许使用景观光照贴图,通过引用间接照明缓存样本,对过程景观草类材质获得更好的融合效果。 你可以选中“使用景观光照贴图”复选框来启用该功能。
![]() 景观草类使用景观光照贴图
![]() ![]() 通过命令行构建照明 如果需要通过命令行构建照明,该功能从 4.10.2 开始已经添加到引擎中。 要使用命令行构建照明,请使用以下结构进行设置以作为基础: UE4-Editor.exe [Project Folder Path] -run=resavepackages -buildlighting -MapsOnly -ProjectOnly -AllowCommandletRendering -Map=[Name of map] 如果想要构建项目中所有可用的地图/关卡,可以删除 -Map=[Map Name]。 在以下 GitHub 提交版本中可以找到更多详细信息: https://github.com/EpicGames/UnrealEngine/commit/f89256dd0efb7d0b1427729a8f8a6007 如果看到 404 错误页面,需要确保你有 GitHub 帐户,并且 Epic 帐户已经与 GitHub 帐户关联起来。 植物叶子工具光照贴图分辨率 使用植物叶子工具时,工具面板中有一些不同的设置可供所选 Actor 使用。一个重要的设置是覆盖网格光照贴图分辨率的选项。
![]() 你可能会疑惑“这样有什么不好?我不就是希望正常烘焙的阴影有一个良好的光照贴图分辨率吗?”但问题是使用植物叶子工具时,它们不再是独自放置并具有自己的光照贴图的 Actor。它们是聚集在一起的实例,而这些集群会一起烘焙到单一光照贴图中。 如果你有大量实例,并继续以静态网格默认光照贴图分辨率进行构建,很可能会遇到警告“Instanced_Foliage_Actor_[X] 光照贴图过大,应缩小。”该警告明确表示光照贴图分辨率过高。应该启用上述选项,尝试更低的分辨率,比如 8 或 4,然后再继续重建。 但一种较为普遍的合理做法是执行下列操作: 如果希望树木/草丛随风摆动,限制静态照明在植物叶子上的使用。植物叶子摆动时看起来不自然,但阴影则不会。将植物叶子的光照贴图分辨率降低至可以处理的大小。禁用草上的静态照明。这是较为普遍的合理做法,因为随着关卡的发展,实例数量很可能会达到数千个,在大多数情况下会显著增加光照构建时间。 来源:Game艺视界 原文:https://mp.weixin.qq.com/s/G6BZfVRcySGXcuET-GLGWw |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |