动画模块核心存放在away3d.animators包里;

Away3D支持下面几种动画格式:

  • VertexAnimator:顶点动画
  • SkeletonAnimator:骨骼动画
  • UVAnimator:UV动画
  • SpriteSheetAnimator:二维切换动画
  • ParticleAnimator:粒子动画
  • PathAnimator:路径动画

这几种动画都有各自的特点及应用场景,一般而在3D游戏中应用得最广泛的是骨骼动画,因为骨骼动画是人物动画的核心,我们下半段会专门详解这个动画;

动画简介

核心类

IAnimator

提供控制动画播放的接口,具体的动画类型对应具体的实现类,如骨骼动画使用SkeletonAnimator类;

将该对象赋值到对应的Mesh的animator属性既可以控制该Mesh对象播放动画;

对于播放的所有动画都应该存放到IAnimationSet对象中;

IAnimationSet

提供管理多个动画的容器,多个动画如奔跑或攻击都需要添加到对应的Set容器后才能进行播放;

data包

动画所需的数据对象元变化(帧)信息;

nodes包

一串变化组成的一个独立动画节点;

states包

动画当前状态,从Nodes提取以供当前显示的动画元(帧)信息;

渲染流程

Away3D中的动画渲染是双线更新渲染的,一个更新位于AnimatorBase类的方法update中,负责更新动画数据,一个更新位于MaterialBase类的renderPass方法中,负责渲染绘制;

具体的更新都是更具当前时间来更新对应的State对象,更新具体流程可以具体的打断点查看,这里就不深入解读了。

骨骼动画

骨骼动画在网络上有大量的资料,大家可以去网上搜搜看,这里主要说一下Away3D中是如何处理骨骼动画的数据的;

SkeletonJoint

由于多个关节之间是可以相互链接的(父关节变化时会影响到子关节),该对象用来保存关节的链接信息;

Skeleton

骨骼对象包含了所有关节的链接信息(SkeletonJoint);

JointPose

保存一个关节的信息,包括3个数据:名称、四元数(用于旋转)和转换信息;

SkeletonPose

记录一个关键帧下所有的关节的信息(每个关节的位置及旋转数据),包含所有的关节对象(JointPose)列表;

SkeletonClipNode

包含了一个骨骼动画的所有关键帧数据(SkeletonPose列表),同时还可以为每个关键帧指定一定的间隔;

SkeletonClipState

更新特定时间点的骨骼数据,骨骼动画的插值运算;

SkeletonAnimationSet

存放多个骨骼动画(SkeletonClipNode)的容器,使骨骼动画(SkeletonClipNode)和其name属性关联起来,配合SkeletonAnimator的play方法可以指定播放哪个骨骼动画(SkeletonClipNode);

SkeletonAnimator

骨骼动画的播放类,可以设定到指定Mesh上,需要指定一个骨骼容器(SkeletonAnimationSet)和对应的骨骼对象(Skeleton);

【Away3D代码解读】(五):动画模块及骨骼动画相关推荐

  1. 动画编辑器和骨骼动画使用

    动画编辑器 1.使用编辑器来创建编辑动画 (1)创建一个节点 (2)往节点里添加动画组件cc.Animation (3)编辑 动画剪辑器制作 AnimClip 动画剪辑就是一份动画的声明数据,我们将它 ...

  2. 【Away3D代码解读】(四):主要模块简介

    数据模块: Away3D中最核心的数据类是Mesh类,我们先看看Mesh类的继承关系: NamedAssetBase:为对象提供id和name属性,是Away3D大部分类的基类: Object3D:3 ...

  3. 【Away3D代码解读】(一):主要类及说明

    在深入解读Away3D的代码之前,需要对其有个大概的认识.本节主要列出Away3D中常用的类,并附上说明: View3D: Away3D的入口类,即创建该类就会初始化一个可以使用GPU呈现3D的对象, ...

  4. layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二

    一.角色序列帧.ani动画的制作 1.在项目管理器中创建动画文件 2.创建动画模板,编辑动效名称 3.编辑序列帧动画 .ani格式动画的代码控制 1.动画加载loadAnmition() 2.播放与停 ...

  5. cocos creator 动画编辑器以及骨骼动画的使用

    转载地址:https://www.cnblogs.com/rickyctbu/p/10086597.html 一.普通动画的设置 1.添加动画组件 a.添加空节点=>添加动画组件 b.新建Cli ...

  6. Spine2D动画系统添加骨骼动画事件帧

    spine是基于骨骼的2D动画系统,相比较与模型动画各有利弊.在做项目时,有时候需要在spine特定骨骼出添加动画帧,类似于模型动画的Animation动画帧一样. 接下来就是 spine骨骼的2D动 ...

  7. creator小功能----关于帧动画Animation和骨骼动画Skeleton一些有趣的东西

    动画是app中经常要用到的,尤其是游戏中,可以增强表现效果. 那么在creator中,怎么使用和实现动画效果呢? 动画获取的方式: 第一种,编辑器绑定 //1.编辑器绑定anim: {type: cc ...

  8. 3D动画概述暨骨骼动画实现

    引言 本文论述了3D领域内的常见动画类型的运作机制.不同于其他文章简单的罗列和介绍每种类型的3D动画,本文尝试以一种优化演进的思路对动画运作机理进行递进式推演,在这个过程中自然而然的推导出常见的几种3 ...

  9. 游戏引擎的动画系统及骨骼动画原理

    一.<游戏引擎架构>动画系统 动画的几种分类 <游戏引擎架构>中简单介绍了几种动画种类.用途以及优劣,在<计算机动画算法与技术>中详细介绍了各种动画的算法原理: 精 ...

最新文章

  1. 【codevs2011】【LNOI2013】最小距离之和
  2. Android ListView异步加载图片乱序问题,原因分析及解决方案
  3. Data Mining的十种分析方法
  4. [CMMI]中型项目流程梳理
  5. dev-mysql_GitHub - intergrate-dev/mysql-elasticsearch
  6. jmeter学习指南之Beanshell Sampler 常用方法
  7. Oracle安装本地和远程两种方式的DISPLAY设置
  8. struts2进阶篇(3)
  9. oracle 存储过程 转换为mysql存储过程 实例总结 (数据库有感篇一)
  10. Python实验-字典攻击
  11. 复现贪吃蛇程序——吃食物增加长度(最后一篇)
  12. zookeeper学习一-ZK简介
  13. 盘点那些被AI换脸、一键“脱”衣所滥用的AI模型
  14. python学习笔记--Dictionary
  15. 【opensource】开源网址推荐
  16. HTML5 canvas 实现小时钟
  17. 科卡在线linux,典型建网方案之家庭内部网设计
  18. java8Stream流的使用2--终止操作(分组,分区)
  19. 小白看完都会了!mysql面试题sql语句
  20. 【注册码】WinAVI Video Converter v10.1 注册码

热门文章

  1. Helm安装weave scope
  2. Allegro如何设置铜箔自动避让走线
  3. Ubuntu 18.04 ———(Intel RealSense D435i)安装kalibr + 双目视觉与IMU标定(2022年)
  4. 山东大学软件学院操作系统(考试)——期末考试回忆版
  5. 1131. 拯救大兵瑞恩
  6. Protobuf编码解析
  7. 谈谈保证导线连接器安全的三大检验方法
  8. 2020年全球及中国疫苗行业发展现状及竞争格局分析,13价肺炎结合疫苗稳居榜首「图」
  9. java面试基础问题答不上来怎么办,快来看鸭~
  10. blankcount函数python,Python pandas常用函数详解