分析虚幻引擎编辑器中使用 TAA 或 TSR 时角色眨眼导致的眼睛模糊问题

1. 引言

用户反馈在使用虚幻引擎编辑器时,当抗锯齿方法设置为时间性抗锯齿 (TAA) 或时间性超级分辨率 (TSR) 时,角色的眼睛在眨眼时会出现模糊现象。时间性抗锯齿和时间性超级分辨率是现代游戏引擎(包括虚幻引擎)中常用的抗锯齿和放大技术 1。选择合适的抗锯齿方法对于在保持最佳性能的同时实现最佳视觉质量至关重要 1。时间性抗锯齿通过混合来自先前帧的信息来平滑锯齿边缘 2。时间性超级分辨率是虚幻引擎 5 中引入的一项技术,它通过将图像以较低的分辨率渲染,然后使用时间数据将其放大到所需输出分辨率,从而进一步提升了时间性抗锯齿 1。角色渲染中的视觉保真度至关重要,尤其是在眼睛运动等特写细节中。本报告旨在分析此模糊现象的潜在原因,并提供有效的缓解策略。

2. 时间性抗锯齿 (TAA) 和时间性超级分辨率 (TSR) 的基本原理

  • 2.1. 时间性抗锯齿 (TAA)

    • 时间性累积的概念是指混合来自先前帧的信息以平滑锯齿边缘(空间混叠)。时间性抗锯齿通过在时间上采集多个样本来工作,有效地充当一种跨帧分布的超级采样形式 3。维基百科的 3 解释说,TAA 结合了过去帧和当前帧的信息来消除锯齿,实现了与超级采样相当的结果。Unigine 文档的 7 说明了 TAA 如何使用场景摄像机的子像素抖动跨多个帧来实现更平滑的图像。UnrealStack 的 2 将 TAA 描述为利用先前帧的信息来平滑锯齿边缘并提高图像的稳定性,这在动态场景中尤其有用。

    • 子像素抖动是指在每个帧内采样略微不同的位置,并将这些样本随时间累积。这种抖动确保在几个帧内,每个子像素区域都被采样,从而有助于最终的抗锯齿像素 5。Unigine 文档的 7 说明了 TAA 如何使用场景摄像机的子像素抖动跨多个帧,然后组合这些帧。5 解释说,通过在渲染时添加每帧"抖动"来实现每个帧在不同位置采样像素。

    • 帧混合是指使用运动矢量将当前帧与来自先前帧的重新投影信息相结合。1。运动矢量对于确定像素从一帧到下一帧的移动方式至关重要,从而实现准确的混合 5。3 提到使用运动矢量进行运动补偿是一种避免混合包含不同对象的像素的方法,否则会导致重影。9 强调 TSR(通常包括 TAA)通过混合来自先前帧的运动矢量、深度和颜色历史来工作,以进行放大和平滑。

    • 其优点包括:有效的混叠减少,尤其是在运动中,以及相对于多重采样抗锯齿 (MSAA) 等空间抗锯齿方法而言相对较高的性能效率。1。TAA 可以以较低的性能成本实现与超级采样相当的结果 3。2 指出,与其他高质量抗锯齿方法相比,TAA 的性能相对友好,可以在不显着降低性能的情况下实现高视觉质量。4 指出,TAA 的成本相对较低,例如在《杀出重围:人类分裂》中,TAA 计算仅占帧时间的百分之三。

    • 其固有的缺点包括:可能出现运动模糊、重影伪影(尤其是在快速移动的物体或视线遮挡解除的情况下)以及精细细节的柔化。1。先前帧的混合可能导致拖尾或残影(重影)以及图像的整体柔化 1。1 特别提到运动模糊和重影是 TAA 的缺点。3 指出该技术不可避免地会导致重影和模糊。4 指出 TAA 的一个关键问题是由于它如何整合先前帧的信息而导致图像变得柔和。10 解释说,TAA 的时间部分使用先前帧的数据,如果处理不当,可能会导致运动中的重影、残影或模糊。

      TAA 的核心机制依赖于过去的帧,这本身就会在视觉更新中引入延迟,对于像眨眼这样的快速变化,这种延迟可能会表现为模糊 1。先前状态与当前状态的混合会产生时间上的平均效果,这可以平滑锯齿,但也会模糊快速的过渡。过渡越快(如眨眼),这种平均就越明显,因为先前的帧会显示眼睛处于不同的状态(睁开或闭合)。此外,准确的运动矢量对于 TAA 正确地重新投影过去的帧至关重要。不准确或丢失的运动矢量可能导致重影和其他伪影 5。如果引擎无法准确跟踪像素的移动(例如,在眼睑快速变形期间),混合过程将存在缺陷。来自先前帧的像素可能与当前帧中的错误位置混合,从而导致模糊或重影。12 强调虚幻引擎中的时间性抗锯齿依赖于准确的每像素运动矢量。

  • 2.2. 时间性超级分辨率 (TSR)

    • 时间性超级分辨率作为一种时间性放大器,通过以较低的内部分辨率渲染图像,然后使用时间数据重建更高分辨率的图像。1。TSR 旨在实现接近原生高分辨率的图像质量,同时提高性能 11。11 指出,TSR 渲染的帧在输入分辨率低至 1080p 的情况下,其质量接近原生 4K。9 解释说,TSR 使用时间样本重建图像,从而在较低的渲染分辨率下获得更好的视觉效果,并提高性能。11 强调 TSR 使虚幻引擎能够渲染精美的 4K 图像,通过以较低的内部分辨率进行渲染。17 报告说,TSR 可以在提供出色时间稳定性和比 TAA 更少重影的同时,提供比原生渲染更好的性能。

    • 时间性超级分辨率通常将时间性抗锯齿作为其放大过程的一部分。1。TSR 可以看作是 TAA 的进化,通过添加放大功能使其更进一步 1。1 提到 TSR 通过结合放大技术,使时间性抗锯齿更进一步。9 指出 TSR 取代了 TAA 作为抗锯齿方法,并且通常效果更好。11 提到 TSR 以比 UE4 中的 TAAU 更低的内部分辨率进行渲染。

    • 其优点包括:在相同的输出分辨率下,图像比 TAA 更清晰,并且通过以较低的分辨率进行渲染,可以潜在地提高性能。1。TSR 专为需要高细节和高保真度的下一代游戏而设计 11。1 表明,与 TAA 相比,TSR 可以生成更清晰、伪影更少的图像,尤其是在静态场景中。17 指出,TSR 在提供出色时间稳定性和比 TAA 更少重影的同时,可以提供比原生渲染更好的性能。

    • 其潜在的缺点包括:在动态场景中也可能出现重影和模糊,并且质量取决于运动矢量的准确性和放大算法。1。虽然 TSR 旨在减少与旧版 TAA 实现相比的重影,但重影仍然可能发生 11。11 提到与 UE4 的 TAA 相比,TSR 对高频背景的"重影"伪影更少。11 也指出 TSR 的重影更少。17 提到 TSR 比 TAA 更少重影。1 指出 TSR 比 TAA 更能抵抗模糊和重影,但并未完全消除这些问题。11 提到任何时间放大技术的一个局限性是需要时间来累积细节。18 报告说,TSR 的图像稳定性更好,重影更少,但仍然可能出现拖影等问题。

      TSR 较低的渲染分辨率会在放大过程无法有效处理快速变化时放大伪影 11。由于初始渲染的像素较少,时间累积和放大可用的信息也较少。像眨眼这样的快速运动可能会导致细节丢失或引入模糊,因为算法难以在快速过渡期间准确地重建更高分辨率的图像。11 和 11 中提到的 TSR 的收敛速度(TSR 1spp)对于此类快速事件尤其重要,因为它表示 TSR 需要多少时间才能获得足够的每个像素一个样本的数据。虽然 TSR 旨在改进 TAA,但它仍然依赖于时间数据和运动矢量,这意味着它也可能表现出类似类型的伪影,尽管在某些情况下可能程度较轻 1。两种技术都依赖于基于运动矢量混合来自先前帧的信息。如果在快速眨眼期间运动矢量不准确,或者时间累积过程滞后于快速的视觉变化,TAA 和 TSR 都可能产生模糊。然而,TSR 的额外放大步骤可能会引入其自身独特的这些伪影,这可能与它在快速运动期间如何从较低分辨率的时间数据重建更高分辨率的图像有关。

3. 虚幻引擎中的角色动画和眨眼

  • 3.1. 常用的眨眼动画方法

    • 变形目标(混合形状): 解释变形目标如何用于变形基础网格以创建不同的面部表情,包括眨眼。20。变形目标存储顶点位置的快照,允许直接操作网格形状 21。21 解释了 FBX 变形目标管线,详细介绍了如何创建和导入变形目标,方法是变形基础网格并保存编辑后的版本。25 演示了如何在虚幻引擎的序列器中通过设置变形滑块的关键帧来制作变形目标动画。20 讨论了 UE5 Preview 2 中变形目标严重的闪烁问题,表明这是一个已知错误。20 报告了 UE5 Preview 2 中类似的变形目标闪烁问题。

    • 骨骼动画: 描述骨骼网格中的骨骼如何通过动画控制以控制眼睑的运动。这涉及到创建专门用于上眼睑和下眼睑的骨骼,并通过动画控制它们的旋转来模拟眨眼。28 概述了虚幻引擎中基于骨骼网格的角色动画系统。22 说明了一般的骨骼网格动画技术。

    • 提到使用两种方法的组合来实现复杂的面部动画的可能性。例如,骨骼动画用于整体眼睛运动,变形目标用于更精细的细节,如眯眼。

      变形目标涉及在眨眼期间短时间内顶点位置的快速变化。这种突然的变形可能难以让时间性抗锯齿技术在不引入模糊的情况下进行处理 20。睁眼和闭眼状态之间的插值需要由抗锯齿算法平滑地处理,并且这种过渡的速度至关重要。如果顶点位置的变化过于突然,TAA/TSR 可能会将其解释为快速运动,从而导致模糊,因为它试图跨帧混合快速变化的形状。20 和 20 都强调了 UE5 中变形目标闪烁的问题,这可能与时间性抗锯齿如何处理几何体的快速变化有关。32 讨论了 UE5.0.3 中变形目标的闪烁,将其描述为几乎具有应用于其上的运动模糊。20 也提到了变形目标的闪烁。相比之下,眼睑的骨骼动画可能提供比变形目标更一致的运动矢量,从而可能减少时间性抗锯齿的伪影 28。骨骼运动通常由动画系统更明确地跟踪,这有助于运动矢量的生成。28 概述了基于骨骼网格的动画系统。34 讨论了动画期间骨骼网格的模糊,并提到每骨骼运动模糊可能是一个因素。

  • 3.2. 眨眼动画的特点

    • 强调典型眨眼的速度和持续时间很短。35。自然的眨眼是一个非常快速的动作,通常在很短的时间内完成。35 描述了一个用户在使用 Metahuman 时遇到眨眼模糊的情况。

    • 突出运动的相对较小范围,重点在于角色面部的特定区域。

      眨眼非常快的特性意味着 TAA/TSR 的时间累积窗口可能会在几帧内捕获睁眼和闭眼状态,从而导致混合的模糊外观 35。如果过渡太快,算法可能无法清晰地区分眨眼前后的状态。TAA/TSR 中固有的时间混合可能会平均来自眼睛睁开的帧和眼睛闭合的帧的视觉信息,从而导致可见的模糊中间状态。

  • 3.3. 运动矢量和面部动画

    • 解释如何为动画网格生成运动矢量,包括使用变形目标或骨骼动画的网格。12。运动矢量表示从一帧到下一帧的每像素运动。12。12 讨论了时间性抗锯齿和运动矢量,询问 TAA 是否依赖于准确的每像素运动矢量。13 解释了如何计算运动矢量并将其用于时间性抗锯齿和运动模糊,并指出不同类别的运动矢量(摄像机和物体)。14 讨论了世界位置偏移在虚幻引擎中为树叶动画生成运动矢量,强调了准确的运动矢量对于 FSR 2 等时间放大技术的重要性。15 建议骨骼网格在动画期间的模糊可能是由于缺少或不正确的运动矢量造成的。

    • 讨论在眨眼引起的快速变形期间,运动矢量生成准确性方面可能存在的问题。11。快速而复杂的变形有时可能导致不准确或丢失的运动矢量。15。36 提到如果运动矢量不正确,尤其是对于世界位置偏移的树叶和半透明粒子,Gen5 TAA 非常严格,会导致重影。15 建议骨骼网格在动画期间的模糊可能是由于运动矢量的问题造成的,特别是如果存在不应有的运动或不应没有的运动。37 解释了虚幻引擎如何支持苹果的 ARKit 面部跟踪系统,该系统提供可驱动数字角色的面部跟踪数据,暗示了运动数据的生成。

      如果运动矢量不能准确地表示眨眼期间眼睑的运动(尤其是使用变形目标时),TAA/TSR 将难以正确地重新投影先前的帧,从而导致模糊或重影 11。时间性抗锯齿依赖于能够准确地跟踪每个像素从一帧到下一帧的运动。如果运动矢量存在缺陷,则先前帧和当前帧的混合将不正确,从而导致视觉伪影。眨眼的快速和局部特性,尤其是在由直接操纵顶点的变形目标驱动时,与骨骼动画(其中骨骼运动可能提供更一致的速度信息)相比,可能会对鲁棒的自动运动矢量生成构成挑战。

4. 眼睛眨眼模糊问题分析

  • 4.1. 时间累积延迟

    • 解释 TAA/TSR 中先前帧的混合如何导致快速闭合和打开的眼睑出现拖尾或模糊效果。1。时间累积过程本质上是在短时间内平均视觉信息。3。5 解释说,累积缓冲区存储了多个帧的结果,并通过混合当前抖动帧的一小部分来每帧更新。10 描述了 TAA 如何使用先前帧的数据,如果处理不当,可能会导致运动中的重影、残影或模糊。

    • 将此与眨眼的短持续时间相关联,在这种情况下,算法可能会平均具有显着不同视觉状态的帧。

      TAA/TSR 使用的累积帧数可能与模糊的强度有关。更大的累积窗口可能导致快速事件的模糊更明显 40。来自先前帧的更多样本将对当前帧的外观产生更大的影响。如果眨眼发生在几帧内,较长的累积历史会将更多"睁眼"状态与"闭眼"状态混合,从而导致更强的模糊。40 讨论了如何使用控制台变量(如 r.TSR.History.SampleCountr.TemporalAACurrentFrameWeight)来潜在地更改 TAA 和 TSR 的帧累积量。

  • 4.2. 运动矢量不准确

    • 讨论眨眼期间眼睛的快速变形如何导致不正确或丢失的运动矢量,从而阻碍 TAA/TSR 中的重新投影过程。11。运动矢量对于 TAA/TSR 了解先前帧的像素移动位置至关重要。11。11 解释说,TSR 的视差启发式取决于深度和速度缓冲区(运动矢量)。12 讨论了时间性抗锯齿和运动矢量,强调了它们的重要性。36 强调如果运动矢量不正确,尤其是对于世界位置偏移动画,Gen5 TAA 非常敏感,会导致重影。15 建议动画骨骼网格的模糊可能是由于运动矢量的问题造成的,特别是如果存在不应有的运动或不应没有的运动。

    • 考虑动画方法(变形目标与骨骼动画)是否会影响此特定场景中的运动矢量准确性。15。

      引擎可能无法始终正确地从直接的顶点变形中推断出每像素的运动。与骨骼动画相比,变形目标通过直接操纵顶点位置而不一定涉及骨骼运动,有时可能导致不太可靠的自动运动矢量生成 15。骨骼动画通过骨骼变换间接移动顶点,可能提供更一致和准确的运动矢量数据,TAA/TSR 可以利用这些数据。这可能是因为骨骼变换在动画系统中被更明确地跟踪。

  • 4.3. 材质属性

    • 探讨眼睛的材质属性(例如,其着色器复杂性、半透明度的使用)如何与 TAA/TSR 交互并导致模糊。41。眼睛材质上的复杂着色器或后期处理效果可能会干扰时间性抗锯齿过程。41 讨论了 TSR 如何处理半透明材质,指出了由于缺少速度信息而可能存在的挑战,并建议将半透明通道默认设置为在景深之后。44 提到了 UE 5.1 中半透明材质的"响应式 AA"问题以及重影问题,表明材质通道设置会影响这些问题。42 指出 TSR 在被遮挡时可能会导致广告牌出现渲染错误,暗示了潜在的材质交互问题。

    • 考虑应用于眼睛材质的特定着色器功能或后期处理效果是否会加剧问题。

      半透明材质有时会导致时间性抗锯齿出现问题,这是由于缺乏清晰的表面定义以及可能出现的混合伪影 41。TAA 和 TSR 依赖于跟踪表面的运动。半透明材质本质上允许光线通过,这使得难以定义清晰的表面,并可能导致不正确的时间累积和模糊,尤其是在像眨眼这样的快速变化期间。正如 41 和 44 中讨论的那样,引擎处理具有时间放大器的半透明度的方式会显着影响最终的视觉效果。

  • 4.4. 屏幕百分比/渲染分辨率(对于 TSR)

    • 解释 TSR 如何以较低的内部分辨率进行渲染,然后进行放大。1。较低的屏幕百分比意味着更大的放大倍数。11。11 提供了屏幕百分比如何影响渲染分辨率和 TSR 馈送的示例,说明了这些值之间的关系。9 建议在使用 TSR 时将屏幕百分比设置为 75% 以提高清晰度。

    • 讨论非常低的屏幕百分比是否会由于初始数据较少而放大眨眼期间的模糊伪影。

      虽然 TSR 可以提高整体清晰度,但非常激进的缩小(低屏幕百分比)可能会导致快速移动的细节(如眼睑)的保真度损失,从而可能使放大后的模糊更加明显 11。以较低的分辨率渲染时,关于快速、微小的运动(如眨眼)的信息可能会被欠采样。随后的放大过程可能会放大任何不准确或缺乏细节的情况,从而导致更明显的模糊。正如 11 和 11 中描述的那样,受屏幕百分比和帧速率影响的 TSR 馈送速率指示了 TSR 可用的信息量,并且由于屏幕百分比低而导致的较低馈送速率可能会加剧问题。

  • 4.5. 运动模糊设置

    • 考虑项目中的常规运动模糊设置与眨眼眼睛的时间性抗锯齿效果之间的相互作用。2。运动模糊根据场景中物体的速度添加定向模糊效果。47。47 解释了运动模糊如何通过全屏速度图工作。49 讨论了如何使用控制台命令或后期处理体积在 UE5 中禁用运动模糊。51 提到了运动设计工具的改进,表明其在动画中的相关性。

    • 如果启用了运动模糊,它可能会加剧在快速眼部运动期间观察到的模糊效果。

      全局启用运动模糊可能会加剧眨眼的感知模糊,因为这两种效果都会导致运动的柔化 2。运动模糊根据物体速度显式地添加模糊效果,这可能会与 TAA/TSR 的时间平均重叠。如果启用了运动模糊,眨眼期间眼睑的快速运动自然会触发运动模糊,从而可能使时间性抗锯齿的模糊更加明显,并产生不希望的双重模糊效果。

5. 故障排除和潜在的缓解策略

  • 5.1. 调整抗锯齿设置

    • 项目设置: 导航至"编辑 > 项目设置 > 引擎 > 渲染 > 默认设置 > 抗锯齿方法"。2。建议尝试不同的 TAA 和 TSR 质量级别(如果可用)。16。16 提到抗锯齿可扩展性设置。52 指出 TSR 质量设置更改了 BaseScalability.ini 中的各种控制台变量。考虑暂时切换到不同的抗锯齿方法(FXAA、MSAA 或无),以查看模糊是否仍然存在,这有助于隔离问题。1。20 建议从 TSR 切换到其他 AA 方法可以解决变形闪烁问题。45 列出了更改抗锯齿模式的控制台命令。

    • 后期处理体积设置: 检查影响场景的任何后期处理体积内的抗锯齿设置。2。2 提到使用后期处理体积可以更精细地控制 TAA。49 提到使用后期处理体积来修改运动模糊。

      切换到像 FXAA 这样的非时间性抗锯齿方法可能会消除模糊,但可能会引入其他视觉伪影,如锯齿或闪烁 1。FXAA 是一种仅平滑当前帧边缘的空间后期处理效果,不依赖于过去的帧。1 将 FXAA 描述为有时会模糊精细细节。10 指出 FXAA 的结果与其他技术相比可能相当模糊。

  • 5.2. 控制台变量

    • TAA 特有:

      • r.TemporalAASamples: 调整时间样本数。较高的值可能会增加模糊,但可以提高静态区域的质量。尝试较低的值以减少时间延迟。40。55 提到将其设置为 4 可以获得良好的改进。56 建议 5-6 个样本可能会引入震动和卡顿。
      • r.TemporalAACurrentFrameWeight: 控制当前帧在时间混合中的权重。较低的值会赋予先前帧更多的权重(可能导致更多模糊),而较高的值会优先考虑当前帧(可能减少模糊但增加时间不稳定性)。40。57 建议使用 0.25 或 0.4 等值以获得清晰度。55 提到将其设置为 0.1。
      • r.TemporalAA.Quality: 控制 TAA 的质量。16。16 列出了可能的值(0 到 2)。
      • r.TemporalAA.Algorithm: 可以在不同的 TAA 算法之间切换(例如,Gen5 TAA)。36。36 解释了如何使用 r.TemporalAA.Algorithm=1 切换到 Gen 5 TAA。
    • TSR 特有:

      • r.ScreenPercentage: 调整内部渲染分辨率。尝试稍微增加它,看看是否可以减少模糊。2。9 建议将其设置为 75% 以提高清晰度。45 显示了如何使用它来控制放大目标。
      • r.TSR.History.ScreenPercentage: 控制 TSR 使用的历史缓冲区的分辨率。11。41 解释了其用法。52 提到它是由可扩展性设置更改的。
      • r.TSR.History.SampleCount: 当前帧贡献给历史记录的最小样本数。41。40 指出最小值为 8。
      • r.TSR.Velocity.WeightClampingSampleCountr.TSR.Velocity.WeightClampingPixelSpeed: 控制 TSR 如何处理运动期间的历史权重,可能会影响模糊。40。40 建议使用这些设置来调整运动期间的历史权重。40 提到 Fortnite 使用 r.TSR.Velocity.WeightClampingSampleCount=2
      • stat tsr: 显示 TSR 统计信息,包括收敛率,这有助于了解细节累积的速度。11。11 解释了此命令提供的信息。

      试验与 TAA 和 TSR 中时间累积和历史权重相关的控制台变量对于微调抗锯齿效果和运动模糊之间的平衡至关重要 40。这些变量直接控制过去帧对当前渲染的影响程度。调整它们可以改变平滑度和清晰度之间的权衡,从而可能减少快速眨眼期间的模糊。例如,增加 TAA 的 r.TemporalAACurrentFrameWeight 可能会减少对过去帧的依赖,从而减少模糊。监视 TSR 收敛率 (stat tsr) 可以深入了解模糊是否是由于时间数据累积不足造成的,尤其是在眨眼非常快的情况下 11。如果收敛率 (TSR 1spp) 较低,则意味着 TSR 需要更长的时间才能收集足够的清晰图像数据。非常快速的眨眼可能发生在 TSR 完全收敛之前,从而导致感知到的模糊。这可能表明需要调整屏幕百分比或帧速率。

  • 5.3. 运动模糊配置

    • 项目设置: 在"编辑 > 项目设置 > 引擎 > 渲染 > 运动模糊"中禁用或减少运动模糊。20。20 建议禁用运动模糊以解决变形闪烁,这也有助于解决眨眼模糊问题。

    • 后期处理体积: 在后期处理体积内覆盖运动模糊设置以进行更局部的控制。2。49 提到使用后期处理体积来修改运动模糊。

    • 每骨骼运动模糊: 如果面部动画使用骨骼动画,请检查是否启用了每骨骼运动模糊并尝试禁用它。20。34 指出禁用"每骨骼运动模糊"解决了骨骼网格动画的模糊问题。59 提到关闭骨骼运动模糊有助于解决变形目标的闪烁问题。

      禁用运动模糊,尤其是适用于眼睑的每骨骼运动模糊(如果适用),可能会显着减少眨眼期间感知到的模糊 20。这消除了运动引起的模糊的显式来源。即使 TAA/TSR 由于时间累积而导致一些模糊,禁用运动模糊也可以在像眨眼这样的快速运动期间获得更清晰的整体图像。

  • 5.4. 其他抗锯齿方法

    • 简要讨论使用 FXAA(快速但会模糊精细细节)或 MSAA(适用于几何边缘但不处理着色器混叠且可能与延迟渲染不兼容)的权衡。1。1 比较了 FXAA 和 MSAA,指出 FXAA 的速度但可能模糊,以及 MSAA 对边缘的有效性但对延迟渲染的限制。16 显示 MSAA 可用于前向渲染器,但不能用于桌面/控制台上的延迟渲染器。53 建议前向渲染器与 MSAA 相比,延迟渲染器与 TSR 相比,可能提供更好的抗锯齿效果。

    • 请注意,完全禁用抗锯齿可能会导致可见的锯齿边缘。2。16 显示了无 AA 和有 AA 之间的视觉差异。10 警告说禁用 TAA 通常会导致闪烁和图形故障。

      虽然其他 AA 方法可能避免时间模糊,但它们也有自己的视觉和性能权衡 1。AA 方法的选择取决于项目的特定需求和视觉风格。如果时间模糊是一个主要问题,牺牲一些清晰度或引入其他类型的伪影可能是必要的妥协。例如,虽然 FXAA 在运动中可能更清晰,但它会模糊纹理,而 MSAA 则不会解决着色器混叠。

  • 5.5. 动画技巧

    • 如果使用变形目标,请尝试调整眨眼动画的插值。更快、更线性的插值可能会减少导致模糊的中间帧数。25。25 演示了使用线性插值制作变形目标动画。

    • 考虑稍微调整眨眼动画的计时。非常短促、急促的眨眼可能比缓慢、逐渐的眨眼更不容易出现时间模糊。

      眨眼动画的制作方式(例如,变形目标或骨骼运动的速度)可以直接影响时间性抗锯齿模糊的严重程度 25。非常缓慢的眨眼可能会加剧更多帧上睁眼和闭眼状态的混合。更快的眨眼会缩短过渡的持续时间,从而可能最大限度地减少导致模糊的时间平均效果。尝试动画的速度和曲线可能会在使用时间性抗锯齿时获得更好的结果。

  • 5.6. 屏幕百分比调整(TSR)

    • 尝试稍微增加 r.ScreenPercentage 值,以在放大之前以更高的内部分辨率进行渲染。2。11 显示了屏幕百分比如何控制渲染分辨率。9 建议使用 75% 的值。45 显示了如何使用它来控制放大目标。

    • 监视增加屏幕百分比对性能的影响。

      使用 TSR 增加渲染分辨率有时可以提高放大图像的清晰度并潜在地减少伪影,但这会增加 GPU 处理的成本 9。以更高的内部分辨率渲染为时间累积和放大过程提供了更多数据,从而可以生成更清晰、更详细的最终图像,从而可能减轻在眨眼期间观察到的模糊。但是,这也会增加 GPU 上的计算负载,因此需要权衡。

6. 研究资料中的见解

  • 6.1. 变形目标闪烁和时间性抗锯齿:

    • 参考了讨论 TAA 和 TSR 导致变形目标闪烁的 20。这些问题通常表现为网格动态变化期间的视觉故障。
    • 请注意,切换 AA 方法(如 20 中建议)、禁用运动模糊(如 20 中建议)或使用时间轴制作变形目标动画(如 20 中建议)是解决闪烁的建议方法,这也可能与快速眨眼期间的模糊问题相关。
    • 强调 20 中的建议,即将抗锯齿方法从 TSR 更改为另一种 AA 方法可以解决变形闪烁问题,这意味着 TSR 可能存在与变形目标相关的特定问题。
    • 提及 20 中使用时间轴逐步制作变形目标动画的解决方法,这可以通过平滑几帧内的过渡来减少突然眨眼引起的模糊。
    • 参考 20 中的建议,变形目标可能会因运动模糊而闪烁,这表明这两个功能之间可能存在交互作用,从而导致模糊等视觉伪影。
  • 6.2. TAA/TSR 的重影和模糊:

    • 引用了普遍讨论与 TAA 和 TSR 相关的重影和模糊(尤其是在运动中)的 1。这些片段证实模糊和重影是时间性抗锯齿技术的常见伪影。
    • 请注意 35 中用户的建议,即检查抗锯齿设置,并且 TAA 比 TSR 更能减少 Metahuman 眼睛眨眼的模糊,为这种特定情况提供了直接的建议。
    • 强调了关于 TAA 导致模糊的常见抱怨以及 r/FuckTAA 子版块的存在 (19),表明用户普遍对 TAA 有时引入的模糊感到不满。
    • 提及 9 中 TSR 比 TAA 更清晰的建议,如果 TAA 导致过度模糊,这提供了一个潜在的替代方案。
    • 参考了 57 中 (r.temporalaacurrentframeweight=0.25, r.temporalaafiltersize=0.7) 用于调整 TAA 以减少模糊的控制台变量建议,提供了要调整的具体参数。
    • 请注意 55 中尝试特定 TAA 设置 (r.TemporalAASamples=4, r.TemporalAACurrentFrameWeight=0.1) 以在没有显着问题的情况下提高视觉质量的建议。
    • 强调了 17 中 TAA 和 TSR 之间的性能比较,表明 TSR 有时可以在运动中看起来比 TAA 更好,同时提供更好的性能。
  • 6.3. 材质交互:

    • 参考了讨论材质(尤其是半透明度)与时间性抗锯齿技术之间潜在交互的 41。这些片段表明,眼睛的材质属性,尤其是如果涉及半透明度,可能是导致模糊的一个因素。
    • 请注意 42 中提到 TSR 在被遮挡时可能会导致广告牌出现渲染错误,暗示了 TSR 在处理某些材质配置和深度时可能存在问题。
  • 6.4. 优化和设置:

    • 引用了提供与 TAA 和 TSR 质量和性能相关的各种控制台变量和项目设置信息的 11。这些片段提供了一系列可用于微调 TAA 和 TSR 行为的工具和参数。
    • 提及抗锯齿的可扩展性设置 (16),允许调整与 AA 质量相关的 GPU 成本。
    • 强调了 11 中 TSR 收敛率信息作为理解 TSR 质量和潜在模糊的关键指标。

7. 建议和最佳实践

  • 首先尝试论坛上的建议,对 Metahuman 的眨眼使用 TAA 而不是 TSR 35。
  • 根据研究资料中的建议 (55),尝试调整 TAA 控制台变量,首先从 r.TemporalAASamples(尝试 2 或 4 等值)和 r.TemporalAACurrentFrameWeight(尝试更高的值,如 0.2 或 0.3)开始。
  • 如果使用 TSR,请尝试稍微增加 r.ScreenPercentage 以查看是否可以提高清晰度。
  • 禁用或减少项目和任何相关的后期处理体积中的运动模糊设置。如果面部动画使用骨骼动画,请尝试禁用每骨骼运动模糊。
  • 如果眨眼使用变形目标,请尝试调整动画序列中的插值设置。更线性、更快的插值可能会有所帮助。考虑为变形目标闪烁提到的时间轴解决方法 (20)。
  • 使用 stat tsr 监视 TSR 收敛率,以查看模糊是否可能与时间数据累积缓慢有关。
  • 如果问题仍然存在,请尝试暂时切换到 FXAA,看看模糊是否消失,这将强烈表明 TAA/TSR 是主要原因。请注意 FXAA 的潜在缺点。
  • 确保正在为动画面部正确生成运动矢量。这可能涉及到检查材质设置或网格的移动性。
  • 考虑眼睛的材质属性。如果它是半透明的,请尝试调整半透明设置或材质的渲染通道。

8. 结论

当使用 TAA 或 TSR 时,眼睛眨眼模糊的可能原因包括时间累积延迟和运动矢量不准确。时间性抗锯齿和时间性超级分辨率通过混合来自先前帧的信息来工作,这可能会导致快速运动(如眨眼)出现拖尾或模糊效果。如果动画方法(变形目标与骨骼动画)导致运动矢量不准确,则重新投影过程可能会失败,从而导致模糊。眼睛的材质属性和项目的运动模糊设置也可能影响模糊的感知。

建议首先尝试使用 TAA 而不是 TSR,并调整 TAA 特定的控制台变量(如 r.TemporalAASamplesr.TemporalAACurrentFrameWeight)以减少时间延迟并优先考虑当前帧。对于 TSR,稍微增加 r.ScreenPercentage 可能会提高清晰度。禁用运动模糊设置(包括每骨骼运动模糊)也可以帮助减少模糊。如果使用变形目标,调整动画插值以使其更快、更线性可能会有所帮助。监视 TSR 收敛率可以提供有关数据累积的信息。如果问题仍然存在,切换到 FXAA 可以帮助确定 TAA/TSR 是否是问题的根源。确保正确生成运动矢量并考虑眼睛的材质属性。通过尝试这些设置和技术,开发者应该能够找到减少或消除使用 TAA 或 TSR 时角色眨眼导致的眼睛模糊问题的最佳平衡。最终,抗锯齿方法的选择应根据项目的具体视觉和性能要求来决定。

相关推荐
waterHBO2 小时前
Cursor 编辑器, 使用技巧,简单记录一下
windows·编辑器
程序猿小D5 小时前
第24节 Node.js 连接 MongoDB
数据库·mongodb·npm·node.js·编辑器·vim·express
aerror6 小时前
如何正确的用Trae 打开 Unity 3D 项目
3d·unity·游戏引擎
FL16238631297 小时前
VScode打开后一直显示正在重新激活终端 问题的解决方法
ide·vscode·编辑器
步、步、为营8 小时前
.NET 的IOC框架Unity代码示例
unity·游戏引擎·.net
Magnum Lehar8 小时前
wpf游戏引擎的script实现
游戏引擎·wpf
程序猿小D9 小时前
第26节 Node.js 事件
服务器·前端·javascript·node.js·编辑器·ecmascript·vim
留待舞人归12 小时前
【Unity优化】提高热更新和打包速度
游戏·unity·游戏引擎·unity3d·优化
tealcwu12 小时前
【Unity踩坑】Unity 6在Mac平台编译运行时去除‘trial version‘
macos·unity·游戏引擎
朝阳3913 小时前
Electron-vite【实战】MD 编辑器 -- 编辑区(含工具条、自定义右键快捷菜单、快捷键编辑、拖拽打开文件等)
javascript·electron·编辑器