讲师简介:杨帆,腾讯互动娱乐北极光工作室群,客户端开发高级工程师。11年程序开发经验,参与了PC平台《天涯明月刀》的开发,完成了其动画、战斗及各种客户端玩法的实现,现任一款MMORPG手游客户端Gameplay负责人。

动画控制了整个游戏角色战斗的节奏,声音、特效、镜头等表现元素要和位移做好匹配,才能有好的表现效果;游戏中有大量的A类和B类剧情动画,动画数据占据了游戏中很大一部分的运行时内存和计算消耗……动画贯穿了游戏开发的方方面面,所以,学好动画的相关知识对游戏开发非常重要。

01骨骼蒙皮动画

3D动画主要有几种动画技术:第一种是刚体层级动画,它的特点是连接处有折断、不自然,是适合机器人的动画;第二种是顶点动画,即在每一个关键帧改变顶点的位置,它的特点是效果棒、数据爆炸、工作量大;第三种是骨骼蒙皮动画,它可以解决前两种动画技术的缺点。首先介绍一下骨骼蒙皮动画的几个概念。

骨架:在生物学中,骨架是由一系列关节以树状结构组织而成,关节就是下图中蓝色球的部分,而关节之间的连接,即图中红色部分,称为骨骼。而在游戏动画领域,骨骼就是指关节,而关节之间的连接是没有意义的。

姿势:姿势就是骨骼的形态,它描述了骨骼当前的位置。

蒙皮:在游戏里是看不到骨骼的,骨骼只是一个逻辑数据,玩家看到的是渲染的皮肤,也就是蒙皮之后的形象。蒙皮就是把皮肤绑定到骨骼上的过程,绑定好之后,皮肤才能随着骨骼的运动而运动。

动画数据:在动画内容制作时,动画师只会做关键帧的数据,其余的部分都是通过插值来完成,通过插值可以取得任意点的姿势。电影里的动画是以固定帧率来播放,并不需要插值,而游戏里面,它的帧率会随时发生改变,会随着当前一帧需要计算的内容变多而变少,所以中间状态都需要插值算法来完成。

那么,为什么骨骼蒙皮动画可以解决掉刚体层级动画和顶点动画的缺点?首先,游戏在启动时,需要去读取骨骼的层级数据、动画数据、带有蒙皮的网格数据;在运行时,会根据时间从动画数据中算出骨骼的位置,再根据当前骨骼的位置和蒙皮信息计算出网格顶点信息,最后根据网格信息和材质渲染出角色。

骨骼动画的顶点是受多根骨骼影响的,关节处的皮肤会由多根骨骼拉伸而变形,这个变形和拉伸是符合规律的,所以它不会产生折断。另外骨骼动画手机靓号拍卖数据产生的方式是改变骨骼的位置,而不是改变顶点的位置,我们一个人一般会有几十上百根骨骼,我们去改变这些骨骼的位置,比直接改变几千乃至几万个顶点的数据量要小非常多,这个对动画师来说,需要做的工作同样也会小很多,正是这些特点使得骨骼蒙皮动画,成为当前游戏开发中应用最多的一种动画技术。

02动画是如何流转的

丨动画融合

游戏的交互性,使得动画都是一个个的小片段,连接这些片段就需要动画的融合。通常融合有两种类型:一种是多个动画的融合;另一种就是一个动画到另一个动画的过渡,过渡的方式有两种,一种是平滑过渡,一种是冻结过渡。

平滑过渡是在动画A还没有结束的时候,就开始向动画B融合,而冻结过渡是在动画A结束之后才开始向动画B融合,游戏里面会根据表现的需要来选择哪种过渡方式。

丨动画状态机

游戏里有多种状态机的结构,正是这种复杂的结构,才能支撑游戏里流畅自然的动画效果和良好的交互响应。以外层状态机为例,它的结构分为Idle、Move和Fight。Idle,即待机,包括战斗待机、休闲待机等;Move,包括转向移动等;Fight,即攻击动画。这些外层的大状态,可以通过驱动信号来进行相互之间的过渡,来达到动画片段流转的目的。

丨动画逻辑管线

在游戏代码里面,有AI和动画的接口层,AI会通过游戏接口层向动画状态机发送各种信号,比如跑、跳、攻击,以及跑的速度、转向角度等等,这些参数告诉动画状态机,状态机会根据它自己的结构来进行跳转,或是融合到具体的动画片段,计算出当前帧的骨骼偏移,再通过这些骨骼信息,计算出蒙皮网格,最后再渲染。

游戏角色是怎么动起来的?3D游戏动画系统介绍相关推荐

  1. 3D模型欣赏:《死亡搁浅》角色Porter 次世代 现实主义 【3D游戏建模教程】

    今天给大家分享的作品,来自:VelimirKondic,是一名游戏与电影CG艺术家.创作心得:我真的很喜欢<死亡搁浅>的故事,我想从中汲取灵感,来表达我对角色山姆·波特·布里奇斯理解.SR ...

  2. unity 3d游戏开发_使用Unity 5开发3D游戏

    unity 3d游戏开发 If there's one thing cooler than playing games, it's building games. 如果有比玩游戏更酷的一件事,那就是构 ...

  3. 测试3d游戏pfs的软件,五款大型3D游戏性能测试(二)

    ●五款大型3D游戏性能测试(二) ○Call Of Juarez <Call Of Juarez>的测试和其他游戏项目的测试稍有不同,它并非利用完整游戏程序运行相应的Demo以得到测试数据 ...

  4. python游戏引擎3d_一个人独立开发 3D 游戏引擎可能吗?

    当然可以,但难道有个引擎,就可以做出真正商业化的游戏么?而且国产游戏大部分是网游啊. 几年前的老文--<一个人的服务器端>(只是为了说明游戏开发难度,不是针对题主问题.) 技术准备 能够做 ...

  5. 游戏角色原画图怎么画?学游戏原画的详细步骤是什么?

    很多喜欢角色原画的小伙伴都想着自己某天可以画出自己心中的角色原画人物,对于零基础角色原画萌新来说,非常的想拿起画笔自己创作,那么萌新学角色原画应该怎么学呢? 下面小编就给大家详细的罗列一下,角色原画应 ...

  6. 3D游戏建模师职业现状:大学生毕业就是失业,真的这么可怕吗

    3D建模属数字媒体专业.或动漫游戏专业.向传媒类的大学都有课程开设,或者计算机科学与技术类院校也有开设.具体看一下游戏动漫专业.游戏动漫专业是依托数字化技术.网络化技术和信息化技术对媒体从形式到内容进 ...

  7. 2D游戏比3D游戏哪个更好做?游戏行业什么职业最吃香?

    通常情况下,同样档次2D游戏,开发成本和难度低于3D游戏. 对比两组共六个游戏,分别说明目前业界在2D游戏和3D游戏不同做法. 2D游戏(征途) 2D游戏(龙之皇冠) 2D游戏(奥利和迷雾森林) 3D ...

  8. 学习3D游戏建模可以做什么?主要有几个就业方向,最挣钱的是哪个?

    当像素无法满足人们的需求的时候,人们开始发展2D游戏,当2D无法满足的时候,开始了3D游戏,而现在游戏已经开始慢慢开始往vr的方向发展,而不管是3d游戏还是vr游戏,都需要大量的3D模型来进行虚拟世界 ...

  9. [置顶] 游戏开发技术总结(经典之作)第八集 脚踏实地-----游戏角色自动寻路、路径搜索算法...

    8-1 任务 让游戏的角色能够自动寻路: 并让所有的动物都动起来.另外我们在这一章将介 绍图形光标技术. 8-2 设置障碍 8-2-1 场景中的障碍点 游戏中加入了山石.树木场景后,就应该有对游戏角色 ...

最新文章

  1. java system.runfinalization()_Android中缓存理解(一)
  2. 如何画好一张架构图?(内含知识图谱)
  3. HDU 4267 A Simple Problem with Integers [树状数组]
  4. Scrum之 评审会议
  5. php5.4环境升级,CentOS环境中编译升级PHP至5.4版本记录
  6. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性
  7. 力扣242.有效的字母异位词(JavaScript)
  8. Linux下source ./bashrc出现的command not found: shopt问题
  9. Fiddler 介绍二
  10. 内置googletts并且内置中文语音包
  11. 关闭绿联硬盘盒子自动休眠的方法!
  12. 微信聊天记录删除了怎么恢复
  13. Python turtle制作书法作品——《鸟鸣涧》
  14. arm模拟器手机版_ARM模拟器——SkyEye的使用
  15. landsat8与sentinel2波段对比
  16. 小程序「Github开源社区」
  17. 红警ol服务器维护,红警OL基地升级条件汇总 腾讯红警OL手游基地升级表
  18. 指甲之怎样以指甲测健康
  19. AutoCAD2012从入门到精通中文视频教程 第6课 极坐标(个人收藏)
  20. RT-Thread源码-4-线程函数剖析

热门文章

  1. js html游戏仿写,天猫首页天猫超市下的选项卡(加自动轮播效果)仿写(js加jquery实现动态效果)...
  2. 慕课《如何写好科研论文》Quiz汇总
  3. 双系统linux哪种好,双系统安装实战,这个Linux系统超级简单
  4. 不敢相信,技术栈,居然被P站秒了
  5. 【Python学习笔记】猜颜色小游戏
  6. 数模国赛计算机要学什么,数学建模国赛经验分享
  7. TypeScript ... 解释三个点的含义
  8. 业务层Service的作用
  9. spring boot(四):thymeleaf使用详解
  10. 《Android深度探究HAL与驱动开发》学习笔记----第五章