UE5中ML布料生成
39681 7
实名

通过了实名认证的内容创造者

发布于 2023-10-27 12:23:36

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

x

虚幻引擎5.3中的Chaos布料新增了一个实验性ML布料数据生成过程。相比于使用外部DCC来模拟布料并生成一个alembic文件,再导入引擎,使用Chaos布料和新的面板布料节点图表编辑器,布料模拟可以直接在虚幻引擎中作为几何体缓存生成。然后你可以将缓存添加到现有的ML变形器设置中。
ML布料数据生成概述
本教程主要将介绍如何在虚幻引擎中设置布料模拟,创建用于训练的几何体缓存,不涉及动画设置或实际的训练过程。如果想了解这些内容,请访问文末的链接。
与Chaos面板布料教程类似,ML布料数据生成的初始步骤也是创建布料资产和数据流图表。我们将使用本教程的输出,把布料资产添加到ML变形器设置中。
注意:建议先学习面板布料教程再尝试这个过程,因为我们将以面板布料教程中创建的数据流图表为起点。

bc6156e4d9d07d54a2a729eca56f28c4.png

ML变形器编辑器中的实验性Chaos布料生成器工具。

36e208c06605983ee2d0b315060d8a17.png

示例内容文件
我们提供了一些示例文件和资产,可以在使用新的面板布料编辑器时作为参照。欢迎访问以下链接获取更多信息。https://dev.epicgames.com/community/learning/tutorials/r287/unreal-engine-panel-cloth-example-files-5-3
1. 布料设置
需要的资产在面板布料教程中,我们使用了两个静态网格体,但是在这个工作流程中,我们将使用通过标准.fbx过程导入虚幻引擎的静态网格体和骨骼网格体资产。这些资产包含在提供的示例内容中。此外,我们还需要一个物理资产,用于上半身的碰撞和训练动画。
示例内容中有一个完整的布料资产可以供我们在这个教程中使用(CA_Longsleeve_shirt),如果你想跟着这个教程学习,那么接下来我们将复制面板布料教程中的数据流图表,作为创建新的布料资产和数据流的基础,展示更多与模拟高分辨率布料有关的项目。
高分辨率网格体在为ML训练生成布料模拟时,我们通常希望模拟网格体具有比实时模拟更高的分辨率。我们提供的示例内容以及下面的步骤都考虑到了这一点。

2. 跳转至ML变形器编辑器部分(可选)如果你已经有用于训练的布料资产,不想重复面板编辑器步骤,可以直接跳转至本文的“ML变形器编辑器”部分。
如果你使用自己的资产,请确保骨骼网格体资产能与训练动画协同工作。
3. 更新面板布料教程数据流我们将替换、添加和编辑面板布料教程中创建的数据流节点,以便按下列步骤设置用于训练ML布料的图表。在这个过程中,我们将介绍新的节点和新的工作流程,替代面板布料教程中展示的一些方法。
复制数据流图表和断开节点首先,在Example/Content/Cloth/ClothAsset目录中复制提供的“DF_Logo_shirt”数据流图表。



打开图表,断开两个静态网格体导入节点以及转移蒙皮权重(TransferSkinWeights)和布料资产终端(ClothAssetTerminal)节点。右键单击内容浏览器中的图标,或使用面板布料编辑器左上角的“保存此资产”磁盘图标,在内容浏览器中保存数据流图表副本。






实验性解决方案:由于目前还不支持复制/粘贴节点,我们将通过这种方式来解决这个问题。我们还希望确保在使用预先存在的数据流创建新的布料资产时,不会出现评估问题。
创建布料资产和选择新的数据流和在面板布料教程中一样,要创建新的布料资产,只需要右键单击内容浏览器。



双击打开新建的布料资产,在弹出的创建或打开数据流图表选项中,选择“打开现有的数据流”。



选择在第一步中断开节点的数据流图表副本。在这个例子中是“DF_Logo_shirt1”,点击“打开”。



打开后的面板编辑器几乎没什么内容,除了数据流中的节点。屏幕右下角可能会出现警告,但现在可以忽略不计。



替换静态网格体和骨骼网格体我们要从头开始,替换两个静态节点,先将它们删除(右键单击节点并删除),然后再导入两个新的节点,点击鼠标右键,选择“静态网格体导入(StaticMeshImport)”,再点击鼠标右键,选择“骨骼网格体导入(SkeletalMeshImport)”,将这个节点放到数据流图表中。



在数据流中,将静态网格体(StaticMesh)设为模拟网格体。关闭“作为渲染网格体导入”。如果有UV,可以将UV缩放的XY值都设为100,以更好地可视化面板,但是对这个过程来说不是必需的。




将骨骼网格体(SkeletalMesh)设为渲染网格体。关闭“作为模拟网格体导入”。




和在面板布料编辑器中一样,将这些节点连到“合并布料合集(MergeClothCollections)”节点上组合在一起。



转移蒙皮权重连接“合并布料合集”节点和“转移蒙皮权重(TransferSkinWeights)”节点。此时可能会弹出有关顶点不匹配的错误消息。没关系,我们知道当前使用的权重贴图来自简化的徽标T恤,数据流就是从那里复制过来的。只不过我们需要重新绘制“MaxDistance”权重贴图。






和在面板布料教程中一样,这也提示我们在最后重新连接布料资产终端节点,以便更好地可视化数据流图表和整个布料资产。
连接布料资产终端一开始,我们断开了布料资产终端节点,以防止在复制过程中出现任何可能的问题。现在,我们需要重新连接布料资产终端节点,重新建立数据流图表可视化。



更新最大距离权重贴图现在,我们来更新最大距离权重贴图。在2D/3D布料面板网格体视图中按“F”键聚焦面板。你可以看到,由于绘制顶点不匹配,所有面板都是黑色的。



将笔刷的属性值设为1.0,点击“泛洪填充当前(Flood Fill Current)”按钮,为网格体上的所有顶点添加最大距离值1。在面板布料编辑器教程中,这步操作是通过绘制笔刷来完成的,具体选择哪种工作流程因人而异。



这将使所有面板的权重值变为1,但现在我们要“钉住”不必要移动的区域。通常是领口,也有可能是手腕。具体取决于你想实现的模拟效果。



点击绘制权重贴图“接受”按钮来设置绘制。
移除多余节点这是我们在面板布料教程中展示的示例,ML示例不需要这些节点,我们来删除这些节点。使用键盘上的Del键或右键单击节点,选择“删除”。



重新连接模拟最大距离配置(SimulationMaxDistanceConfig)将“高权重(High Weight)”设为100,这与面板布料教程中展示的例子相同。这个值基于布料从静止位置开始移动的最大距离,可以降低,但我们不希望布料运动受人为因素影响,所以这个值通常会设置得很高(例如裙子通常是150-300),具体取决于你的世界规模,需要根据特定的模拟需求调整。



PBD到XPDB约束节点通常我们不担心实时模拟和性能,因为ML布料会缓存,我们可以探索新的XPBD节点,这些节点可以提供更好的布料约束,包括阻尼,但是会增加性能开销。
我们要删除三个PBD节点和模拟中不需要的一些节点。选择SimulationPBDBendingSpringConfig/AreaSpringConfig/EdgeSpringConfig以及SimulationAerodynamicsConfig和SimulationDampingConfig。然后删除。



添加两个节点:SimulationXPBDEdgeSpringConfig



SimulationXPDBDBendingSpringConfig



备注:关于这两个节点的详情,请参阅面板布料约束节点教程。
添加“模拟动画驱动配置(SimulationAnimDriveConfig)”添加“SimulationAnimDriveConfig”节点,通过它来添加一点动画驱动。动画驱动有助于混合默认的蒙皮权重。因为我们使用的量很少,所以它会稍微“收紧”整个模拟网格体。这是个非常值得尝试的节点,也是个很有用的布料设置工具。



添加“模拟重力配置(SimulationGravityConfig)”最后要添加的节点是“SimulationGravityConfig”。因为我们要训练ML布料,所以我们要使用非常低的重力来创建准静态模拟。



在重新连接所有节点前,我们来检查一下数据流副本中剩余的3个节点,并根据需要进行更新。
更新“模拟解算器配置(SimulationSolverConfig)”首先,增加迭代次数和子步。



迭代次数和子步是模拟设置的核心。布料模拟参数由用户基于他们想要的材质效果来决定。要注意的是,迭代次数和细分的值越高,性能开销越大,模拟时间越长。
确认碰撞配置和物理资产更新碰撞配置



确认“设置物理资产(SetPhysicsAsset)”中分配的物理资产仍然正确。



我们将继续使用自定义的“PA_Mannequin_Cloth”物理资产和上身碰撞。
最终的数据流设置在图表末尾连接新增/更新的节点。



最终的数据流图表大致如图所示。为了匹配截图大小,部分节点的位置有所改动。



要在3D渲染视图中可视化长袖T恤,可能需要拉远镜头,选择T恤,然后按F键,以便看得更清楚。



你可以随意更换配置节点和调整模拟参数,获取你想要的布料模拟效果。使用预览场景细节面板并加载动画资产和骨骼网格体资产,在3D窗口中可视化动态的模拟效果(在面板布料教程中演示过)。
备注:参阅Chaos学习中心的“Chaos布料参数”文档。
准备ML变形器在面板布料编辑器中设置好布料模拟和保存好布料资产文件后,你就可以开始设置ML变形器。
ML变形器编辑器
有关ML变形器编辑器的工作原理在这里不做深入介绍。本教程的主要内容是演示如何实现我们刚刚创建的布料资产,并使用ML变形器编辑器生成具有几何体缓存输出的布料模拟,用于训练。
要想了解有关ML变形器的详细内容,请参阅“最近邻”文档。https://dev.epicgames.com/community/learning/tutorials/2lJy/unreal-engine-nearest-neighbor-model
加载插件首先,我们要确保在引擎中加载适当的插件,以加载带布料模拟的ML变形器编辑器。为此我们需要添加三个插件:Chaos布料生成器(Chaos Cloth Generator)ML变形器框架(ML Deformer Framework)ML变形器最近邻模型(ML Deformer Nearest Neighbor Model)




确保这些插件已加载,可能需要重新启动引擎才能使这些插件生效。
创建ML变形器资产在内容浏览器中点击鼠标右键,选择动画->变形器->ML变形器,创建一个新的ML变形器资产。



在内容浏览器中双击新建的ML变形器资产,打开ML变形器编辑器。



打开ML变形器编辑器。



Chaos布料生成器Chaos布料生成器是我们用来生成ML布料的界面。要加载Chaos布料生成器,可以使用顶部菜单栏:工具->Chaos布料生成器。



打开一个空白的布料生成器窗口。



将资产添加到Chaos布料生成器中。使用在“创建布料资产”部分创建并保存的布料资产。



备注:如果你训练的网格体使用了通过面板布料编辑器中的“蒙皮权重转移(Skin Weight Transfer)”工具转移的蒙皮权重,则要将该资产作为“骨骼网格体资产输入”。
设置几何体缓存的文件输出位置:点击“模拟缓存(Simulated Cache)”旁边的“新建(New)”按钮。



新的几何体缓存资产创建完成。继续保存该资产。



设置好所有输入和输出后,Chaos布料生成器就可以用于布料模拟。



设置骨骼网格体资产:ML变形器将使用的资产。必须为骨骼网格体资产(因为ML变形器需要一个骨骼网格体)。这个骨骼网格体必须和布料资产拥有相同的网格体(相同的顶点数量/排序)。布料资产:在本文开头创建并保存的Chaos布料资产。动画序列:训练姿势。默认情况下,该工具将使用各个姿势并模拟布料N步,直到稳定并且只会将最终结果保存在几何体缓存中。参阅“在虚幻中使用机器学习变形器”文档了解如何设置这个动画。https://docs.unrealengine.com/5.0/zh-CN/using-the-machine-learning-deformer-in-unreal-engine/要模拟的帧:动画序列中要模拟的帧。例如“0,2,5 -10,12-15”。如果为空,将模拟所有帧。这对测试来说很有用。模拟缓存名称:输出几何体缓存的路径。在前面的步骤中,我们创建了一个空的几何体缓存资产,现在准备进行模拟。调试:如果需要为动画序列中的一帧输出整个模拟序列。调试帧:想输出的帧调试缓存名称:输出几何体缓存的路径
时间步:每一步模拟的时间,以秒为单位。步数:每帧模拟的步数。线程数:同时运行的并行模拟数量。从1个线程开始。4个线程就足以让64个物理核心非常忙碌。检查任务管理器,查看CPU的使用情况。避免CPU负荷过重!
调试调试、调试帧和(设置)调试缓存名称可用于生成每帧模拟的总步数的单帧模拟。例如,当模拟设置中设置的步数为100时,激活的调试设置将在100步的指定调试帧上生成几何体缓存(使用调试缓存名称和路径)。参见下文的“确认缓存”查看结果。

模拟准备好模拟时,点击Chaos布料生成器窗口底部的“开始生成(Start Generating)”按钮。



点击之后,可以在显示器右下方看到一个模拟布料对话框。



模拟不可交互,意味着无法实时看到任何更新,但是你可以在对话框中看到帧和完成百分比信息。
完成布料模拟时会显示“已完成(Finished)”。ML训练的推荐帧范围约为5000帧,可能需要一段时间,仅供参考!!



几何体缓存输出完成模拟时,指定文件夹中将包含一个几何体缓存输出。注意,长达5000帧的几何体缓存可能有好几个GB!例如,这个缓存有将近3个GB。



确认缓存你可以通过将几何体缓存放入一个空白关卡,创建一个关卡序列,然后将几何体缓存Actor添加到关卡序列中来确认几何体缓存的输出。



添加一个几何体缓存轨道,然后你就可以移动滑块,查看模拟缓存结果。






训练模式返回ML变形器编辑器,确保在编辑器顶部菜单栏中选择“训练(Training)”模式。



在“训练”模式的细节面板中,将原始骨骼网格体、动画序列和刚刚创建的几何体缓存添加到相应的输入槽中。



设置好这些输入后,你就可以在ML变形器视图中看到正确分配的训练缓存。



如果从零开始创建ML变形器编辑器,可能需要添加输入骨骼。我们在“骨骼(0/0)(Bones (0/0))”的加号菜单中选择了“添加所有动画骨骼(Add All Animated Bones)”。






最后,你就可以用创建好的几何体缓存和缓存,通过引擎中的完整布料模拟来训练你的模型!
使用“训练模型(Train Model)”按钮,根据你的“最近邻模型”设置开始训练过程。



参阅“最近邻”文档(链接如下)详细了解相关设置,以便更好地训练最终模型。https://dev.epicgames.com/community/learning/tutorials/2lJy/unreal-engine-nearest-neighbor-model

全文完

评分

参与人数 1元素币 +5 活跃度 +2 展开 理由
phoneix + 5 + 2 收藏了,谢谢

查看全部评分

本帖被以下画板推荐:

内容主要涵盖影视特效,CG动国,前沿CG技术,作品欣賞
使用道具 <
xdxttt  发表于 2023-10-27 16:45:54  
2#
相当不错,感谢分享!
回复 收起回复
使用道具
Liu_shuoye  发表于 2023-10-27 19:04:32  
3#
回复 收起回复
使用道具
liushuoye  发表于 2023-10-27 19:54:31  
4#
回复 收起回复
使用道具
仰空越梦  发表于 2023-10-28 00:25:54  
5#
感谢分享!
回复 收起回复
使用道具
y6552547  发表于 2023-12-15 08:11:54  
7#
ML布料
回复 收起回复
使用道具
y6552547  发表于 2023-12-16 09:06:51  
8#
UE5中ML布
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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