Mesh Transform动画的高效实现 您所在的位置:网站首页 3dmax蒙皮工具 Mesh Transform动画的高效实现

Mesh Transform动画的高效实现

2023-04-11 12:03| 来源: 网络整理| 查看: 265

本文介绍一种Transform动画的实现方式,通过创建虚拟关节的方法,以蒙皮动画的方式实现Transform动画,此方法应用于快手必扬特效平台的FBX导出系统中。

关键帧动画主要有顶点动画、蒙皮动画、Transform动画三种,观察到蒙皮动画与Transform动画的数据类型有大量的相似之处,本文通过创建虚拟的关节,对Mesh进行蒙皮绑定,转移动画至关节上,从而将Transform动画转换为蒙皮动画。

01 背景介绍1.1 必扬特效开放平台

必扬特效平台[1]服务于快手及快手旗下的拍摄类产品矩阵,兼具专业性、创造性、与商业性的特点,能够同时为C端和B端带来持续性的创意化支持。以行业领先的技术沉淀,为用户提供多种支持与场景拓展。并提供创作工具Beyond Effects,旨在向创作者提供美颜、美型、美妆、滤镜、画面细调、素材配置、画面特效等技术,创作者可以使用工具制作自己的特效,并在快手应用上发布,吸引上亿用户使用。通过必扬特效平台,可以给用户建立更深层次的情感表达,品牌可以以更有意义的方式与客户建立联系。“激发创意,创造流行”是平台的使命。

1.2 关键帧动画

关键帧动画[2]是指一种只包含物体关键动作数据 ,其余部分由插值得到的动画。帧动画往往大量运用于游戏、影视、特效中,使其中的角色富有生机。必扬特效平台现已支持三种关键帧动画:蒙皮动画[3](图1)、Transform动画[3](图2)、Morph动画[3](图3)。

图1 蒙皮动画图2 Transform动画图3 Morph动画

在支持蒙皮动画与Transform动画的过程中,我们发现两者的数据有大量的相似之处,因此,我们在导出Transform动画时,采用蒙皮动画的格式来生成Transform动画的数据。

1.3 FBX

FBX[4](.fbx)文件是用于记录3D几何和动画数据的格式,可以使用不同的程序打开,编辑和导出高保真3D文件。本文主要操作对象为含有Transform动画的FBX对象。

02 实现步骤

本文的主要处理目标是不受骨骼影响的Mesh(Static Mesh)的Transform动画,即直接作用于Mesh本身的Transform的一系列变换。由于不同的引擎的设计理念和底层架构有较大差异,对于Static Mesh的Transform动画,不同引擎的实现方案差距也较大。

我们根据快手自研渲染引擎的设计理念和底层架构,调研了Unity、Unreal Engine等引擎的处理方案,最终采用了和Unreal Engine相似的实现方法:将Static Mesh转换成Dynamic Mesh,从而将相应的Transform动画转换成蒙皮动画。

本方法主要有三个步骤:

导出Mesh数据:从FBX中读取Mesh的数据,生成动画的操作对象。创建关节并进行姿势绑定:通过给Static Mesh进行绑定蒙皮,将Static Mesh对象转换为Dynamic Mesh对象。生成蒙皮动画数据:通过Transform动画数据和创建的虚拟关节,生成对应的蒙皮动画数据。2.1 导出Mesh数据

通过遍历FBX的整个场景我们可以获取当前需要导出的Mesh的节点,有了这个节点,我们可以获取到Mesh的Transform、控制点位置、光滑组、UV等信息,用这些信息我们可以在引擎中构建出一个Mesh对象。

2.2 创建关节并进行姿势绑定

首先我们创建一个虚拟的关节[5],并给它一个独一无二的索引和名字,并将它的父关节的索引设置为-1,表示它为一个根关节,关于关节的树结构我们将在后续再进行讨论。之后,获取当前节点的Global Transform和父节点的Global Transform,以AUTODESK FBX SDK为例,使用EvaluateGlobalTransform函数可以直接获取当前节点的Global Transform。根据下式:

可以计算出该节点到父节点的变换矩阵。我们将该变换矩阵作为关节姿势,遍历mesh的所有顶点使其只受到我们刚才创建的关节的影响,权重设为1,这样,我们就给mesh创建了一个影响权重为1的关节,并且进行了姿势绑定[6]。

2.3 生成蒙皮动画数据

为了构造蒙皮动画,我们需要先拿到Tranform动画的数据。FBX中的动画数据结构如下所示:

我们找到当前Mesh的Tranform动画对应的AnimationLayer,之后通过AnimationLayer和Mesh的Node节点可以得到对应的Tranform动画数据,如下所示:

struct AnmationKey//一个关键帧中保存的数据 { float time;//动画时间,这里用的是实际时间 float value;//当前数据对应的值,例如缩放的X分量 float leftTangent = 0.0f;//曲线的左切线点,用于控制前一帧和当前帧的变化趋势 float rightTangent = 0.0f;//曲线的右切线点,用于控制当前帧和后一帧的变化趋势 InterpolationType type;//插值类型 TangentMode tangentMode;//切线的变换方式,如:样条线、线性、钳制等。和切线点一起控制帧之前曲线的变换趋势 };

通过观察发现,Tranform动画数据和蒙皮动画的数据基本完全一致,区别在于Tranform动画的对象为Mesh,而蒙皮动画的对象为关节,因此,只需要采用相同的数据,对上一步创建的关节生成动画即可,因为不同的引擎的数据结构有较大差异,所以具体生成方法应该根据引擎具体的数据结构确定。在快手自研3d引擎中,只需要将Tranform动画数据中对象的名字,修改为上一步中创建的虚拟关节的名字,则该动画数据可以直接用于驱动引擎中的蒙皮动画。

03 效果展示

图4为maya中的动画效果,图5为必扬特效平台中的动画效果,可以看出必扬特效平台基本完全地复现了设计师在maya中制作的动画效果。

图4 maya动画效果图5 必扬特效平台动画效果04 细节讨论4.1 动画的层阶结构

创建虚拟关节的时候,我们只是简单的把当前Mesh的关节置为根节点(父关节索引为-1),所以最终得到的动画只计算了本身的变换,并没有将父节点可能存在的动画进行叠加计算。

图6 层阶结构

如图六所示,球体有向右移动的动画,立方体有向下移动的动画,由于立方体是球体的子节点,立方体的最终动画效果应该为向右下移动。因此在创建立方体的虚拟关节时,需要将它的父关节索引设置为球体的虚拟关节索引,这样在最终计算动画时,我们立方体的“蒙皮动画”才能具有向右移动的动画。

4.2 顶点数据处理

我们在设定虚拟关节的姿势时,采用了当前Mesh节点到父节点的变换矩阵作为姿势矩阵,因此,在存储Mesh控制点的位置信息时,只需要存储控制点相对于Mesh空间的部分即可。然而部分引擎最终存储的Mesh顶点的位置信息是相对于世界空间或者模型空间的,这样导致转换后的Transform动画在计算顶点最终位置时,会出现预期外的偏移。

图7和图8分别展示了在一个动物手掌转动的动画中,未处理偏移和处理偏移的情况。可以明显看出,相较于图8,图7中“掌心”与“掌”两个Mesh之间出现较大的“间隙”,这个“间隙”就是我们所说的预期外的偏移。

图7 未处理偏移图8 处理偏移

因此在导出Mesh数据的时候,需要检查顶点的位置信息是否是相对Mesh空间的,如果不是,则需要转换至Mesh空间中。

05 总结与展望

本文提到的Transform动画的实现方法,属于必扬特效平台FBX导出系统的一个子功能。我们通过此方法,使引擎可以通过一个动画系统展现多种动画,减少了引擎的开发工作,并且通过修改虚拟关节的数据,可以实现多种效果,如模型镜像,更多效果可以参照Unreal Engine中的虚拟骨骼部分。未来我们将继续开发更多的3d功能,并上线到必扬特效平台减少广大特效师用户的创作成本。(本文首次发布时间为2022-03-18)

参考:

[1] https://effect.kuaishou.com/#/faq/content/effect_info[2] Burtnyk N, Wein M. Computer-generated key-frame animation[J]. Journal of the SMPTE, 1971, 80(3): 149-153.[3] https://lensstudio.snapchat.com/guides/3d/3d-animation/[4] https://www.autodesk.com/products/fbx/overview[5] Gregory J. Game engine architecture[M]. AK Peters/CRC Press, 2018.[6] Joshi P , Meyer M , Derose T , et al. Harmonic coordinates for character articulation[J]. ACM Transactions on Graphics, 2007.

快手Y-tech介绍(公众号同名)Y-tech团队是快手公司在人工智能领域的探索者和先行者,致力于计算机视觉、计算机图形学、机器学习、AR/VR等领域的技术创新和业务落地,不断探索新技术与新用户体验的最佳结合点。Y-tech在北京、深圳、杭州、Seattle、Palo Alto有研发团队,成员来自于国际知名高校和公司。

长期招聘(全职和实习生):计算机视觉、计算机图形学、多模态技术、机器学习、AI工程架构、美颜技术、特效技术、性能优化、平台开发、工具开发、技术美术、产品经理等方向的优秀人才。如果你对我们做的事情感兴趣,欢迎联系并加入我们,一起做酷炫的东西,创造更大的价值。

联系方式:[email protected]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有