原创性声明
本文为作者原创,在个人Blog首次发布,如需转载请注明引用出处。(yanzhang.cg@gmail.com 或 https://graphicyan.github.io/)
UE5中的应用示例
Workflow
ML Deformer in UE5
Vertex Delta Model
Neural Morph Model(NMM)
- 神经形变模型,UE5的Morph Target的神经网络版。
- 基于CPU的神经网络。
- 适用于Muscle、Flesh对象的拟合。
- 需要针对特定对象进行二次训练,更新权重张量。(如:“火箭浣熊”与“星爵”的骨骼-肌肉动作明显不同)。
Nearest Neighbor Model(NNM)
- 最近邻模型。
- 适合布料对象的模拟。
Performance on PS5
肌肉模拟
原理
Local模式
- 由多个单独的小网络学习各关节周围的变形。
- 需要的数据集相对少。
- 每根骨骼都会创建一组变形目标,总的Morph Traget数为:
(num_bones + num_bone_groups) * num_morphs_per_bone_or_curve + (num_curves + num_curve_groups) * num_morphs_per_bone_or_curve + 1
Global
数据集
- 使用Maya中的PosGenTool插件。
- 官方推荐5000个随机pose,一般需要5000~15000个姿态。
- 在Maya或Houdini中,使用离线的变形器进行肌肉模拟(如Houdini中基于PBD的Vellum)。
- 输出肌肉文件(Alembic格式)通常比较大,几十~几百个G。
限制
布料模拟
原理
神经变形模型(ML Deformer)
低频率变形,使用多层感知机(MLP)建模,网络输出PCA系数。
pca_delta = mean_delta + pca_coeff * pca_basis
推荐采用5000个姿势。
最近邻模型(Nerest Neighbor)
高频率变形,ML的变体,从上述获得PCA系数后,在“最近邻”数据集中搜索最接近的值。
vertex_delta = pca_delta + nearest_neighbor_delta
推荐采用50~100个姿势。
可以用KMeans Pose Generator来进行自动姿势选择。
数据集
限制
- 半静态服装,可预测褶皱,无法预测摇摆等动态移动。
- 适合紧身服装,不适合宽松。
附:经典常用蒙皮方法
线性蒙皮(LBS)
线性对偶四元数蒙皮(DQS)
姿态空间变形(Pose Space Deformer)
- UE5中的Morph Target的Deformer Graph
- Houdini中的Niagara的GPU Simulation
- 非线性变形
- 需要TA干引擎的货,审美基础上开发特适的变形器:“晶格变形器,簇变形器,褶皱变形器,张力变形器,抖动变形器”等。
参考
Nearest Neighbor Model | Tutorial
机器学习布料模拟概述
如何使用机器学习变形器
UE5 机器学习变形器解析