【UE动画】虚幻动画系统

 一. 动画简析

1.1 2D动画、3D动画、骨骼动画

  • 早期游戏动画被分为2D和3D两种(实现手段)
    • 2D 游戏动画
      • 无骨骼的实现手段,最简单暴力,通过图片帧的切换,完成动画系统的动画播放,最贴近动画实质性,切帧播放
      • 但帧动画调整成本大,浪费资源,每个姿势都需要进行重复渲染,程序负担大
    • 3D 游戏动画
      • 早期使用顶点动画制作基本角色动画,
      • 通过移动三维模型的顶点位置和相对位置,实现简单的模型旋转、位移等操作,复杂动画通过一定的算法,进行整体(或部分)模型顶点的位移,来实现动作展现

 

  • 骨骼动画
    • 游戏骨骼动画,也是模型动画方式的一种(顶点动画,骨骼动画)
    • 由骨骼牵动模型进行动画的表现,支持结构化,可以通过结构细化骨骼层级关系方便动画调整,易于创建编辑
    • 动画信息是通过骨骼的转动位移来影响模型顶点信息,需要较高的时时运算处理能力

 

 

1.2 虚幻动画系统

  • 虚幻中的动画
    •  动画合成:将两段动画片段进行拼接,组合成为新的动画(合成动画禁止使用被调整的动画,例如蒙太奇,混合空间等)
    • 动画蓝图:可以用来编写动画逻辑数据蓝图
    • 动画蒙太奇:用来将动画进行逻辑拆分与组合
    • 混合空间:基于基准动作,将多个动画通过使用驱动值(最多两个)进行混合过度
    • 目标偏移:使用动画叠加空间,将多个动画进行组合,最后使用驱动数据(最多两个)进行驱动调整
    • 姿势资源:允许将动画与基准动作之间过度时借助曲线进行调整,可以构建表情动画(表情这东西不是一直播放的)

 

 

  • 虚幻动画系统
  • 虚幻的动画系统由骨架网格,动画片段,动画逻辑,骨架物理组成
    • ① 骨架网格
      • 骨架是一组由骨骼位置和旋转角度组成的树状结构
      • 每个骨架网格物体需要一个相关的骨架资源(可以在导入骨架网格物体时创建一个新的骨架资源,或选择一个已有的骨架资源)
      • 进行重定向时需注意到:骨架的初始部分是由根据其创建该骨架的骨架网格物体定义的
      • 要想共享动画,那么骨架网格物体必须使用同样的骨架资源(共享同样的骨架资源,要求不要破坏骨架网格物体中的骨骼层次结构的命名顺序)
    • ② 动画序列
      • 是由其他软件(Maya,3DMax等)进行输出的,是可在骨架网格体上播放的独立的动画资源,包含了一些关键帧,这些关键帧可以及时地指出某个特定点处的一个骨骼的位置、旋转度及缩放比例
      • 动画序列驱动骨骼,骨骼带动网格
      • 但动画与骨骼不是约束关系,可通过重定向,将一套动画转嫁到另一套骨骼上
    • ③ 动画组合方式
      • 虚幻中的动画组合方式分为两种:附加动画与混合动画(决定了动画过渡方式和组合方式)
      • 附加动画
        • A动画是1,B动画是1,叠加后动画是2
        • 动画都可以随时作为完全动画或者附加动画进行使用
        • 系统将在必要时进行适当计算, 把数据转换为偏移,不需要提前指定被识别为附加动画的动画
        • (如将上半身开枪的动画,叠加到任何下半身姿势上,以构建多样性动画)
      • 混合动画

        • A动画是1,B动画是2,叠加后动画是1.5

        • 使用 “混合节点” 和 “混合空间” 后,可将各种动画混合在一起,实现一个 更为复杂的最终姿势,可在各种不同情形下对单一源动画 进行重复利用
        • (举例而言,跑步动画可以和瞄准姿势/面部表情动画混合,实现一边跑步一边举枪瞄准,或者一边跑步一边说话的最终效果;并且在这种状态下,保持源动画的独立)

 

  • 动画片段包括:动画片段,动画组合,动画偏移,混合空间,蒙太奇
  • 虚幻动画系统在设计上将动画与角色逻辑彻底分开,使得动画系统尽量不依赖角色系统,从而可以更清晰的将角色系统与动画系统进行解耦设计

 

 二. 虚幻动画系统的使用

 1. UE导入角色后一般会获得以下三种文件:

 

  •  ① 骨骼网格体(理解成蒙皮的模型)

 

  • ② 物理资产(物理效果)

 

  •  ③ 骨骼

 

2. 调试动画时以便观察,cmd输入命令:

ShowDebug ANIMATION  //开启
ShowDebug None  //关闭

 

三. 重定向动画

1. 先在虚幻商城嫖一套动画来,添加到工程

2. 选中需要动画重定向的资源 - 重定向动画资产

 

 

 

 

 

 等等,好像有亿点问题

 

 

 

 

 

 

 

 

 

 程序化批量处理有位移的动画

  • 1. 程序化绑定根骨骼
    •  将有位移的动画导入Maya

  

    • 在脚本编译器中输入如下代码:
      JointTool; //骨骼工具
      select -d;
      joint -p 0 0 0; //创建一个在(0,0,0)位置的骨骼joint
      SnapToGrid; dR_enterForSnap;
      select -r joint1;
      rename "joint1" "root"; //重命名为root
      select -r mixamorig:Hips;
      select -add root;
      parent;

       

    •  全选代码,按鼠标中键拖入

 

  • 2. 曲线编辑器禁用位移关键帧

 

  • 1. 第一次导入骨骼和动画

  • 第二次批量导入动画(注意:动画需要经过处理:添加根骨骼 + 去位移) 

  • 动画重定向(此处需要花费亿点时间)

  • 调节骨骼属性,使控制动画高度

  • 对动画进行骨骼重定向 

  • 大功告成,将小白人模型换成了Mixamo

 

 

 

将Blender节点动画导入UE

  • 在输出节点前添加 “输出实例 Realize Instances” 节点

     

     

  • 输出格式为 .usd 文件,注意不能输出为 fbx 格式

     

     

     

  • 在UE中装好插件:USD Importer / USD Multi-User synchronizationusd

     

     

  • 将 .usd 文件导入UE,打开usd文件,就可以得到一个Sequence啦!!!

     

     

 

 

 

 

 

未完待续...

 

posted @ 2022-11-21 09:46  哟吼--小文文公主  阅读(981)  评论(0编辑  收藏  举报