GAMES105(一)Introduction


一、概述

动画 分为 物理模拟 和 人物动画,物理模拟的过程是被动的过程,有物体自发进行,在物理模拟基础上进行一些控制,就类似人物动画

物理仿真大部分都有精确地数学描述,可以用数学大致的算出来,但是人物动画大部分都是通过大量统计的方法进行建模

在这里插入图片描述

角色动画通过先将骨骼绑定到蒙皮上,然后通过驱动骨骼,来实现动画的生成

在这里插入图片描述

角色动画有两种方法

在这里插入图片描述

基于关键帧的方法直接更新角色的各种物理属性,可以实现一些非物理的效果,例如瞬移

在这里插入图片描述

基于物理仿真的方法是需要实时的计算各种物理参数,因此强调的是符合物理定律。

在这里插入图片描述

针对控制目标的不同,角色动画的效果也可以表示为高低维度,高维度的效果是直接实现一个动作效果,例如命令去拿起一个杯子,低维度的效果则是控制各个关节的旋转平移等参数。

在这里插入图片描述
在这里插入图片描述

  ~  

二、Keyframe Animation

基于关键帧的动画需要绘制出每一帧,其中有两个技术点:给出每个关节的旋转角度来得出末端部位位置的前向运动学 以及 给出身体末端位置求出每个关节具体如何旋转的逆向运动学(知道手的动作来得出手臂、胳膊的旋转)

在这里插入图片描述

在这里插入图片描述

以及通过关键帧来进行插值求出中间的过渡帧

在这里插入图片描述

关键帧插值虽然制作的动画比较精确但很耗时耗力,所以有了动作捕捉

在这里插入图片描述

一般的动捕需要一套比较昂贵的器材,最近的一些研究方向尝试运用手机拍摄的视频进行动作捕捉,虽然很方便但是精确度不如有设备的

在这里插入图片描述

无论哪种动作捕捉,都需要将动作重定向到一个目标角色身上

在这里插入图片描述

动作捕捉本质上还是只能产生已有的动作,如何通过已有的动作数据产生新的动作,便是转态机(motion graph / state machines)的工作。状态机 可以在切换动作时,从已有的动作中寻找适合的动作进行过渡,甚至可以通过插值实现更精细的控制

在这里插入图片描述

随着需要控制的动作增加,状态机会变得非常复杂。

在这里插入图片描述

由于状态机的本质还是对一段完整的动作进行切换,如果再对动作的每一帧进行细分,在每一帧结束的时候去寻找下一帧,满足角色运动的方向目标,同时保证与当前帧的动作比较相似。

比较关键的点是,如何设计距离函数,也就是每帧之间的距离控制,以及如何设计动作库

在这里插入图片描述

但角色动画的目标是为了从数据中去学习角色的动作,从而可以去学习角色动作的规律。基于学习的方法就是从很多角色动作中进行学习,从而输入一个角色信号,就可以得到对应的动作

在这里插入图片描述

例如从用户输入的指令学习角色运动的方向,这样输入新的指令就可以控制角色的新的运动方向。

在这里插入图片描述

还有用生成器例如GAN生成新的图片作为下一帧,来表示角色动画

在这里插入图片描述

现在还有很多跨模态的生成,例如通过声音,通过语言,通过文本来生成

在这里插入图片描述

在这里插入图片描述

使用运动学的方法,由于把物理过程给隐含掉了,所以生成的角色很难满足物理的准确性,导致穿模、脚面打滑等问题;另一方面由于运动学是从过去的动作中来得到的,所以很多与环境的交互动作很难学习到。

  ~  

三、Physics-based/Dynamic Approaches

基于物理的方法实际上输入控制信号,得到相关的力、力矩等,然后这些物理量通过物理仿真才得到下一个姿态的动作。

在这里插入图片描述

如果把中间的动作控制去除,直接物理仿真,则可以得到 Ragdoll 仿真,它常用于人已经死去后收到外物作用后的效果,有时也可以模拟人体在一瞬间的动作(由于人体受到外力具有反应时间,在反应时间内可以把人体视为一个 Ragdoll)

在这里插入图片描述

在这里插入图片描述

物理仿真的方法不仅在一些游戏中运用,从而实现了角色可以生成任意的 physical plausible 的动作,尤其在VR/AR 中会有很大用处,假定要在VR中生成一个击打,由于用户可以从任意方向进行击打,使用物理仿真的方法就可以满足这种非常个性化的需求。

在这里插入图片描述

同时由于在VR中生成的模型很多只有上半身,所以如果使用物理仿真的方法就可以生成合理的下半身动作,以及一些比较细节的动作

在这里插入图片描述

基于物理的方法由于比较难对所有的肌肉神经系统进行仿真,所以大部分时候都是对人体进行简化,然后使用关节力矩来驱动模型做动作

在这里插入图片描述

对于具体的关节控制,一般使用PD控制来计算,就是我们已知关节部位想要到达的一个位置,我们算出身体所有关节的运动力矩。

在这里插入图片描述

因此有一种技术就是设定一个动作的控制轨迹,然后用 PD控制 算出施加在角色上的力,用力来驱动角色运动。这与关键帧的方法不同的是,关键帧的方法算出的就是确定的姿势,但是基于物理仿真的方法就是通过力算出一个差不多的姿势

在这里插入图片描述

后续通过优化的方法算出角色运动的轨迹,不用人手动去生成,还可以将动作重定向到其他角色上,从而可以产生不同的动作。

优化问题是一个高维非线性的方法,所以计算比较慢,且比较难泛化到复杂动作和复杂的场景。

在这里插入图片描述

使用简化模型的方法可以让降低计算量,让一些动作做起来很顺畅并且很鲁棒,例如走路,但是对于复杂的动作仍然不是很适用。

在这里插入图片描述

使用强化学习的方法,可以让角色学会与环境的交互,从而做出各种动作。

在这里插入图片描述

通过将强化学习与状态机,来实现协调各个动作来完成更加复杂的动作。

在这里插入图片描述

或者与 motion matching 结合,把控制本身切换更细的片段,来处理一些复杂的动作,也就是RL + 其他 方法处理一些层级性的任务,例如滑板过路障的动画

在这里插入图片描述

基于关键帧的运动生成模型,是通过学习一堆运动数据来学习输入控制信号生成对应的动作,而物理仿真中的控制生成模型,是从大量的运动数据中学习输入控制信号如何生成力和力矩等物理量,与运动控制模型不同的是,这个过程是不会改变角色姿态的,通过物理量做物理仿真来生成角色动画。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值