
metahuman dna calib
提供了python绑定工具
当前世代实时角色
使用joints和blendshapes是做动画
解算快速,适用游戏
缺点:表达内容局限 肩胛骨的移动 抬起手臂时皮肤下的肋骨移动
使用肌肉系统可以解决这些问题 让角色活起来 缺点是计算成本很高
使用机器学习 学习数据 在实时表现
houdini输出的模拟动画作为一组用于学习的变形目标 神经网络运算输出这些权重
UE5提供了不同的训练模型供以使用,它们各有优缺点,没有哪种模型是适合所有人的
Neural神经模型虽然很好,但对Cloth部分表现不太好,在Cloth部分,我们使用的是Nearest Neighbor模型,在角色移动时,可以展现更为复杂的折叠
使用变形器需要两套相同角色的资源
- 具有基本骨架结构的线性蒙皮(传统实时绑定)
- 具有肌肉、皮肤和布料模拟的Alembic动画(传统离线解算) 目的:学习离线资源中的的数据增量或差异 然后将该信息压缩为可被运行时使用的数据
最终把ML网格和一系列的资源打包到ML Deformer资产中
当我们将其应用于简单的骨骼网格体中并设置动画时,产生的变形效果会非常接近
学习数据本质上是静态的(StaticMesh),但被学习的数据本质上是动态数据(Alembic),可能涉及重力、惯性、进入姿势等影响;这也出现了一种情况就是,当我们学习具有相同特征的姿势时,增量或者差异之间发生了冲突,那么这些数据结果将会被平均,这也导致了机器学习时的结果可能不是那么可靠
所以我们在准备动态数据时也需要一些注意事项
- 对于动态数据来说,看起来很好的东西可能训练结果并不好
- 降低惯性和重力的影响
- 调整刚度Stiffness和阻尼Damping以更多的产生折叠或褶皱状态
- 对于不同姿势准备10帧,以适应每个姿势(7帧让动画到正确位置,3帧让模拟稳定,1帧保存)
- 为衣服选择NearestNeighbor模型
看看模型
右侧神经元中的每一根线条就代表了一次计算成本,当我们添加更多的输入时,全局模型的成本迅速增加,而局部模型拥有更好的扩展性来增加网络维度。然而,全局模型的使用不仅仅局限于骨骼周围,在某些情况下,它能更好的学习多个输入导致的变形;为了改善在局部模型下的这种情况,UE提供了骨骼关联功能,例如用户可以在特定情况下让骨骼考虑多个输入,比如上半身的锁骨和肱骨之前创建关联,这明显改善了肩部区域的学习效果
最邻近模型仅针对布料使用,这是最难的地方,因为布料数据本身时高度混乱且有联系的,当拥有更为细微的模拟设置和更复杂的服装,最邻近模型的表现每次都优于NeuralMorph模型
主成分分析(PCA)是一种降维方法,通常用于通过将数量很多的变量转换为仍包含集合中大部分信息的较少变量来降低数据集的维数。
减少数据集的变量数量自然是以牺牲精度为代价的,但降维是为了简单而略微准确。因为较小的数据集更易于探索和可视化,并且使机器学习算法更容易和更快地分析数据,而无需处理无关的变量。
总而言之,PCA的概念很简单:减少数据集的维数,同时保留尽可能多的信息。
NN layer是神经网络中的一层,通常包括输入数据、权重、偏置和输出数据。在神经网络中,每个层都有一组可调参数,这些参数可以通过训练来优化,以使网络的输出与期望的输出尽可能接近
第一步 PCA层导入Alembic数据 先减少数据且尽可能保留信息,第二步 NN层优化,参考游戏动画的信息来优化数据
最重要的部分是训练数据,模型能很好的做插值,对于推算重建表现欠佳
例如一个骨骼旋转只包含了0~140°之间的数据,那么最终在这个范围外的动画表现就会较差
因此 UE提供了Maya PoseGen插件,来确保动画数据包含了完整的姿势空间
但是这样的姿势空间包含了大量的非生物学部分,会产生很多奇怪的姿势,以及错误的骨骼生物关系,因此UE也提供了一个MAYA的Key-System来驱动脊柱、关节部,以确保数据脊柱、关节的数据在合理范围内
同事也有一个后处理脚本,以根据肱骨的方向匹配锁骨旋转值