找回密码
 立即注册
查看: 278|回复: 0

如何使用不同的路径在unreal虚幻引擎中渲染骨架网格体?

[复制链接]
发表于 2023-1-12 08:44 | 显示全部楼层 |阅读模式
骨架网格物体是如何渲染的

骨架网格物体具有三种渲染路径:

  • GPU皮肤顶点工厂
  • 皮肤缓存系统
  • 带有 Deformer Graph 插件的 Mesh Deformer
部分和块

骨架网格体分为两种方式:SectionsChunks。骨架网格体的每个部分都与一个材质相关联。如果一个截面的几何体太复杂——意味着它有太多不同的骨骼影响截面顶点——它会被几何管线进一步分成块,这对应于网格将创建的绘制调用的数量。
在骨架网格体编辑器中查看骨架网格体资源时,“细节”面板可以让您了解网格体的材质是如何划分的。在每个LOD类别下,展开Sections以查看 Materials 和 Chunks 列表。
下面是两个例子。第一个是最常见的结果,显示每个骨架网格体及其 LOD 的材质(或部分)列表。第二个是更高级的分解,显示部分 (1) 何时被分解为块 (2)。一般来说,骨架网格体编辑器中的部分映射到材质。在运行时,渲染代码中的 Sections 指的是 Chunks。


8 位和 16 位骨骼索引

导入骨架网格物体时,它们可以有8 位16 位骨骼索引,这设置了一个部分可以支持的骨骼数量。8 位骨骼索引支持每个部分最多 256 根骨骼,而 16 位骨骼索引支持超过 256 根骨骼。
默认情况下,所有网格都使用 8 位骨骼索引导入。在Engine > Rendering > Skinning下的Project Settings中,选中Support 16-bit Bone Index复选框以支持每个部分更多的骨骼。


启用此设置时:

  • 您需要重新启动编辑器才能使此更改生效。
  • 必须重新导入在此更改之前项目中已经存在的骨架网格体,以便更新它们。
  • 导入的骨架网格物体将使用 8 位或 16 位,具体取决于 Sections 是否有多达 256 根或更多的骨骼。
每个部分的最大骨骼

对于导入的任何源网格物体,骨架网格物体允许每个部分的骨骼数量有最大限制。每个部分允许的骨骼数量是在单个绘制调用中可以在 GPU 上蒙皮的骨骼数量。如果源网格超过每个部分的最大骨骼限制,几何管线会将部分分成适合该限制的较小块。
控制每个部分的最大骨骼数量的典型用例是当您的项目同时支持高端和移动平台时。您可以使用项目设置为所有平台或单个平台在Engine > Rendering > Skinning中设置每个部分的最大骨骼数
默认情况下,每个部分的最大骨骼数设置为 65536。移动平台的每个部分最多有 75 个骨骼。


您可以通过单击添加(+) 图标并从列表中选择一个平台来按平台覆盖此设置。


每个平台都被限制在全局设置中Compat.MAX_GPUSKIN_Bones。默认情况下,它设置为 65536,不应超过此值。如果未启用 16 位索引模式,则限制为 256(或 8 位骨骼索引)。
使用控制台命令SkeletalMeshReport输出统计日志,分解项目中的每个骨架网格体。细分包括有关其设置和内存使用情况的信息。




GPU蒙皮顶点工厂

GPU Skinned Vertex Factory使用顶点着色器对位置和法线/切线进行蒙皮,结果根据需要存储在 GPU 上。每个顶点工厂都支持默认骨骼影响无限骨骼影响
Default Bone Influences 控制每个顶点是否可以被 4 或 8 个骨骼影响蒙皮。骨骼影响的数量是固定的,因此如果骨架网格体每个顶点有四个骨骼渲染,如果一个顶点仅使用一个骨骼,则其余三个插槽将填充零权重并仍用于蒙皮计算。骨骼索引和权重绑定到顶点流,使该模式适用于低端硬件和平台。
Unlimited Bone Influences 移除了每个顶点固定数量的骨骼影响,允许使用可变数量的骨骼影响。不是将骨骼索引/权重直接绑定到顶点流,而是每个顶点存储一个索引偏移量和骨骼影响计数,打包成一个整数。该值用于查找包含骨骼索引和权重数据的顶点缓冲区。
启用无限骨骼影响模式

Unlimited Bone Influence 模式是从Engine > Rendering > Skinning部分 下的Project Settings启用的。


必须设置两个设置:

  • Use Unlimited Bone Influences允许任何新导入(或重新导入)的骨架网格体使用无限骨骼缓冲区而不是默认的最大骨骼影响进行渲染。此设置无法在运行时更改,启用后需要重新启动编辑器。
  • Unlimited Bone Influences Threshold对每个缓冲区使用固定的骨骼影响,直到网格的最大默认骨骼影响超过该限制。
虽然每个顶点的最大影响数在理论上是无限的,但实际上由于骨架网格体源数据的存储方式,最大影响数被限制为 12。
使用无限骨骼影响模式时,我们建议启用无限骨骼影响并将无限骨骼影响阈值设置为8。骨骼影响在 9 到 12 之间的骨架网格体使用无限骨骼影响路径渲染,骨骼影响在 0 到 8 之间使用固定的 4 / 8 骨骼影响路径渲染。
皮肤缓存系统

皮肤缓存系统使用计算着色器对位置和法线/切线进行皮肤处理,结果缓存在顶点缓冲区中,然后传递给 GPUSkinPassThroughVertexFactory(一种变体LocalVertexFactory)进行渲染。


您可以使用“支持计算皮肤缓存”设置在“引擎”>“渲染”>“优化”部分下的“项目设置”中启用“皮肤缓存”系统。


该系统提供了灵活性,可以在项目级别定义行为,并让各个骨架网格物体覆盖其行为。
使用以下项目设置来设置皮肤缓存行为和支持:

  • 默认皮肤缓存行为控制骨架网格体通过皮肤缓存或 GPUSkinVertexFactory 路径。有两种行为可供选择:

    • 默认情况下, Inclusive包括皮肤缓存中的所有骨架网格体。单个骨架网格体可以选择退出并改用 GPUSkinVertexFactory 路径。
    • Exclusive从蒙皮缓存中排除所有骨架网格体并默认使用 GPUSkinVertexFactory。单个骨架网格体可以选择使用蒙皮缓存。



  • 每个世界计算皮肤缓存的最大内存 (MB) 设置允许计算皮肤缓存生成输出顶点数据和重新计算切线的每个世界/场景的最大内存量(以兆字节为单位)。每个世界都有自己的皮肤缓存对象,骨架网格物体按照先到先得的原则插入到皮肤缓存中。
    插入顺序取决于游戏。如果皮肤缓存已满且无法容纳另一个骨架网格体,则该网格体将转而通过 GPUSkinVertexFactory 路径。当网格从较高(较低细节)LOD 切换到较低(较高细节)LOD 时,这可能会造成细节级别 (LOD) 的情况,皮肤缓存会卸载较高 LOD,但由于内存较重而无法容纳较低 LOD要求。
您可以使用以下控制台命令:

  • r.SkinCache.Mode设置是启用还是禁用皮肤缓存。默认情况下,它是启用的 (1)。
  • r.SkinCache.SkipCompilingGPUSkinVF通过在启用皮肤缓存系统时跳过编译着色器排列来减少 GPU 皮肤顶点工厂变体。

    • 0编译所有 GPU 皮肤顶点工厂变体。(默认)
    • 1不编译所有 GPU 皮肤顶点工厂着色器排列。

覆盖骨架网格物体上的皮肤缓存

单个骨架网格体 LOD 可以使用Skin Cache Usage下拉选项 覆盖 Skin Cache 行为。


选择:

  • 自动:使用在默认皮肤缓存行为的项目设置中设置的全局行为。
  • 禁用:此网格不会使用皮肤缓存。如果在网格上启用了硬件光线追踪,则意味着皮肤缓存已启用。
  • 已启用: 该网格物体将使用皮肤缓存。
光线追踪和发丝皮肤缓存渲染要求

硬件光线追踪和发束渲染等渲染功能需要皮肤缓存路径进行渲染。但是,当 Deformer Graph 用于驱动位移时,不使用 Skin Cache 路径。只要使用 Deformer Graph,光线追踪和发束渲染仍然有效。
借助硬件光线追踪,所有骨架网格物体都会自动通过皮肤缓存路径并渲染为光线追踪效果。您可以使用 禁用硬件光线追踪的骨架网格物体r.RayTracing.Geometry.SupportSkeletalMeshes,这样可以节省 GPU 内存和时间资源。这不能在运行时更改。
网格还可以选择使用与传统光栅 LOD 不同的光线追踪 LOD。您可以结合使用设置 Global Ray Tracing LOD Bias ( r.RayTracing.Geometry.SkeletalMeshes.LODBias) 和单独的骨架网格体设置Ray Tracing Min LOD来控制这一点。在 Raster LOD Index 和 Global Ray Tracing LOD Index 以及设置的 Ray Tracing Min LOD 之间选择较高的 LOD 索引。


重新计算切线

重新计算切线是蒙皮过程之后蒙皮缓存的一个可选步骤。蒙皮缓存使用蒙皮三角形重新计算法线和切线,并在两个计算着色器步骤中执行此操作:

  • Triangle Pass ,其中每个三角形从蒙皮顶点位置计算其法线和切线,并将结果累积到其三个顶点中的每一个。
  • 顶点通道,其中每个顶点规范化累积的法线和切线。网格的顶点颜色缓冲通道之一可选择用作蒙皮法线/切线和重新计算的法线/切线之间的混合蒙版。
您可以为项目或每个骨架网格体全局设置重新计算切线。
全局设置:

  • r.SkinCache.RecomputeTangents

    • 1强制重新计算所有骨架网格体上的切线。
    • 2仅重新计算已在其截面上启用它们的骨架网格体上的切线。(默认)


每个网格设置:
LOD [n]类别下,使用 Sections 设置如何为每个 Material Section 处理 Recompute Tangents。


从以下选项中选择:

  • 无:不重新计算切线。
  • 全部:重新计算所有颜色通道的切线并使用重新计算的结果。
  • 红/绿/蓝:使用 R/G/B 顶点颜色缓冲通道作为混合蒙版,重新计算切线和带蒙皮结果的 lerp。
Recompute Tangents 的一个限制是每个 Chunk 的处理都独立于网格的其他 Chunk。因此,与相邻 Chunk(s) 相连的 Chunk 的顶点不知道它们的连通性。结果,沿着两个块的边界,可以有可见的接缝。
调试皮肤缓存的技巧

使用以下命令调试项目中的皮肤缓存。
控制台命令


  • 用于profilegpu捕获包含各个皮肤缓存条目及其所属的骨架网格物体详细信息的 GPU 帧。



  • 用于r.SkinCache.PrintMemorySummary输出所有皮肤缓存条目的内存使用明细。

    • 0禁用摘要。(默认)
    • 1当内存超过项目设置中 每个世界的计算皮肤缓存的最大内存 (MB)r.SkinCache.SceneMemoryLimitInMB设置的限制或最大内存时,将在帧上打印摘要。
    • 2每帧打印摘要。

皮肤缓存调试可视化

使用View Modes下拉菜单到GPU Skin Cache列表中的调试可视化之一,以可视化带有着色的单个骨架网格体。


-game在输入控制台命令r.SkinCache.Visualize后跟Overview、Memory 或时,使用命令行参数启动项目时,您可以使用这些可视化模式RayTracingLODOffset。按照带有 的命令禁用可视化None。这些视图模式在打包构建中被禁用。
概述可视化

概览可视化显示场景中启用或禁用皮肤缓存和重新计算切线的 Actors 。


视口的左上角显示场景中 Actor 的颜色参考。


内存可视化

内存可视化显示光栅和光线追踪组合的低、中和高皮肤缓存内存使用情况 。


视口的左上角显示皮肤缓存内存信息。


您可以通过编辑DefaultEngine.ini配置文件部分下的值来覆盖每个项目的内存阈值GPUSkinCacheVisualizationLowMemoryThresholdInMB。GPUSkinCacheVisualizationHighMemoryThresholdInMB[/Script/Engine.Engine]
光线追踪LODO偏移可视化

RayTracingLODOffset可视化显示光线追踪蒙皮缓存条目和光栅蒙皮缓存条目之间的 LOD 索引差异,这在光线追踪使用与用于光栅化的 LOD 不同的 LOD 时非常有用 。


视口的左上角显示了场景中 Actors 的光线追踪 LOD 偏移的颜色代码。


Deformer 图表插件

此功能目前处于测试阶段。
Deformer Graph插件是一个编辑器,可让您构建专门在 GPU 上运行的顶点变形管道。它提供即插即用的图形编辑功能,并根据接收到的某些输入设置所需数据流来修改网格顶点。


本地配置不够,如何解决Unreal渲染速度的问题?

Unreal虚幻引擎电脑配置的要求是比较高,特别是实时渲染,前期的硬件成本是比较高,这里有一个简单的节省硬件成本的方法,使用赞奇超高清云工作站,即使本地普通的电脑也能运行UE5软件,且普通电脑也能享受行业最高端的CPU和GPU,极大提高制作效率和使用体验,且使用方便快捷,全面支持3D应用软件插件运行,随时调用百余款软件插件,高效作业。
赞奇超高清云工作站可以为UNREAL 用户提供云端制作输出方案,提高工作效率。为Unity用户提供灵活、高效、低成本的云端烘焙服务,享受游戏制作的乐趣。用户在全国各地通过赞奇超高清云工作站直接连接服务器,共享一套资产, 可以直接在赞奇超高清云工作站上制作 / 修改工程文件,减少数据传输成本,高性能云办公选赞奇超高清云工作站!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 02:33 , Processed in 0.136962 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表