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

动画模块核心存放在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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Away3D傻瓜系列教程(3)》是一本与Away3D技术相关的教程书籍,旨在以简明易懂的方式向读者介绍Away3D引擎的基本概念和使用方法。 该教程第三部分主要涵盖了一些高级主题,帮助读者深入了解Away3D的强大功能和应用。首先,教程介绍了顶点动画的概念和实现方法,通过示例代码演示了如何在3D场景中创建逼真的动画效果。然后,教程介绍了光照和阴影的原理与实现,帮助读者了解如何在场景中模拟真实的光照效果,并创建逼真的阴影效果。 教程的下一部分涵盖了粒子系统的使用方法。它详细介绍了如何使用Away3D的粒子系统功能创建各种各样的粒子效果,例如烟雾、火焰和爆炸效果。通过学习这一部分, 读者将能够使用粒子系统为3D场景增添更加生动和逼真的效果。 此外,教程还介绍了相机控制和用户交互的方法。通过学习这些内容,读者将能够掌握如何自由控制相机的位置和视角,以及如何通过鼠标和键盘与场景进行交互。 《Away3D傻瓜系列教程(3)》对于想要深入学习Away3D技术的读者来说是一本很有价值的教程书籍。它通过简单明了的讲解和丰富的示例代码,帮助读者逐步掌握和应用Away3D引擎的核心功能,从而能够创建出令人印象深刻的3D场景和动画效果。无论是新手还是有一定经验的开发者,都可以通过这本教程书籍获得宝贵的学习经验和技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值