Yan's Studio.

基于机器学习的物理变形器

Word count: 747Reading time: 2 min
2023/07/08

原创性声明

本文为作者原创,在个人Blog首次发布,如需转载请注明引用出处。(yanzhang.cg@gmail.comhttps://graphicyan.github.io/)

63438006e420c.gif
6343800937219.gif

UE5中的应用示例

Workflow


ML Deformer in UE5

Vertex Delta Model
  • 基于GPU的神经网络。
  • 顶点差是参数。
  • 性能较为糟糕。
Neural Morph Model(NMM)
  • 神经形变模型,UE5的Morph Target的神经网络版。
  • 基于CPU的神经网络。
  • 适用于Muscle、Flesh对象的拟合。
  • 需要针对特定对象进行二次训练,更新权重张量。(如:“火箭浣熊”与“星爵”的骨骼-肌肉动作明显不同)。
Nearest Neighbor Model(NNM)
  • 最近邻模型。
  • 适合布料对象的模拟。

Performance on PS5

image.png

肌肉模拟

image.png

原理

MLAsset4.gif
image.png

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
  • 整个网络是全连接的。
  • 从所有相关关节的协调运动中学习变形。
  • 需要的数据集和训练时间也相对更长。
  • 网络实现与Local类似,且更简单一些。

数据集

  • 使用Maya中的PosGenTool插件。
  • 官方推荐5000个随机pose,一般需要5000~15000个姿态。
  • 在Maya或Houdini中,使用离线的变形器进行肌肉模拟(如Houdini中基于PBD的Vellum)。
  • 输出肌肉文件(Alembic格式)通常比较大,几十~几百个G。

限制

  • 数据集生成、训练耗时。
  • 不同角色有较强的的特适性。

布料模拟

physics-mlcloth-2.gif

原理

physics-mlcloth.gif
两个阶段

神经变形模型(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来进行自动姿势选择。

数据集

  • 待仿真结果稳定,Houdini Vellum。
  • 关闭重力。
  • ML Deformer使用尽可能随机的姿势,确保每个关节都充分采样了所有角度。
  • ML Deformer尽量多一些姿势,建议5000个以上。

限制

  • 半静态服装,可预测褶皱,无法预测摇摆等动态移动。
  • 适合紧身服装,不适合宽松。

附:经典常用蒙皮方法

线性蒙皮(LBS)

image.png

线性对偶四元数蒙皮(DQS)

image.png

姿态空间变形(Pose Space Deformer)

  • UE5中的Morph Target的Deformer Graph
  • Houdini中的Niagara的GPU Simulation
  • 非线性变形
  • 需要TA干引擎的货,审美基础上开发特适的变形器:“晶格变形器,簇变形器,褶皱变形器,张力变形器,抖动变形器”等。

参考

Nearest Neighbor Model | Tutorial
机器学习布料模拟概述
如何使用机器学习变形器
UE5 机器学习变形器解析

CATALOG
  1. 1. 原创性声明
    1. 1.1. UE5中的应用示例
      1. 1.1.1. Workflow
      2. 1.1.2. ML Deformer in UE5
        1. 1.1.2.1. Vertex Delta Model
        2. 1.1.2.2. Neural Morph Model(NMM)
        3. 1.1.2.3. Nearest Neighbor Model(NNM)
      3. 1.1.3. Performance on PS5
    2. 1.2. 肌肉模拟
      1. 1.2.1. 原理
        1. 1.2.1.1. Local模式
        2. 1.2.1.2. Global
      2. 1.2.2. 数据集
      3. 1.2.3. 限制
    3. 1.3. 布料模拟
      1. 1.3.1. 原理
        1. 1.3.1.1. 神经变形模型(ML Deformer)
        2. 1.3.1.2. 最近邻模型(Nerest Neighbor)
      2. 1.3.2. 数据集
      3. 1.3.3. 限制
    4. 1.4. 附:经典常用蒙皮方法
      1. 1.4.1. 线性蒙皮(LBS)
      2. 1.4.2. 线性对偶四元数蒙皮(DQS)
      3. 1.4.3. 姿态空间变形(Pose Space Deformer)
    5. 1.5. 参考