当前课程知识点:游戏程序设计 >  第九章 《游戏动画》 >  9.2 游戏动画介绍 >  9.2 游戏动画介绍

返回《游戏程序设计》慕课在线视频课程列表

9.2 游戏动画介绍在线视频

下一节:9.3 动画技术类型

返回《游戏程序设计》慕课在线视频列表

9.2 游戏动画介绍课程教案、知识点、字幕

接下来我就来正式介绍游戏动画

我们先来看一下游戏动画跟影视动画

它们产生有什么区别

前面提到过游戏是需要交互的

影视作品是不需要交互的

所以

影视动画一般都是预先拍摄好的画面

然后播放的时候直接切换一个画面就行

把游戏动画为了实时响应交互

它需要一边播放一边生成游戏的画面

接下来我们来看一段简化的游戏

循环的代码

它包含了游戏一帧之内要处理的主要逻辑

首先

接收输入

然后更新游戏逻辑

然后再根据游戏逻辑更新动画的数据

然后再渲染画面

最后做一个帧率的锁定

这里执行一个循环就是游戏的一帧

如果循环内没做任何的逻辑

就是CPU空跑一秒就会执行上亿次

但是当加入复杂的游戏逻辑之后

帧率就会变慢

其实我们说过

为了降低CPU的利用率

我们需要做锁帧的处理

一般来说

对画面变动不大的游戏

比如说棋牌游戏

大概只需要大概三十帧就够了

动作类游戏一般需要稳定在六十帧左右

比如说吃鸡或者是王者荣耀这种游戏

这里有个比较重要的变量

叫做Delta Time

它是游戏每周消耗的时间是游戏逻辑

以及游戏动画更新的基本依据

比如移动一个物体

我们通过速度

speed

来更新位置

这样才能得到平滑的移动效果

否则如果我们更新物体的时候

如果不乘以这个Delta Time

这个因子就会使得人物的运动速度不稳定

使得速度会因为帧率的变化而变化

这显然是不正确的

接下来我们来看另外个很重要的概念

叫动画属性

首先我们知道游戏世界是一个虚拟的世界

它是通过计算机内存中的数据进行描述的

然后通过渲染模块

把描述数据绘制出来

在描述数据变化的时候

比如说角色的位置数据改变

对应的画面上就会产生

角色的动画会移动了

我们这里把能够驱动

驱动游戏画面产生动画的数据

叫做动画属性

对于影视动画来说

它的动画属性只有一种

就是画面的序号

通过不断地切换播放画面的序号

来达到画面的变动的效果

而对于实时生成的游戏来说

游戏动画来说

它可以用很多种游戏动画

动画属性

在这个例子中

角色的位置就是一个动画属性

接下来我们来看一个超级玛丽的游戏场景

然后这个游戏场景里面有哪些动画属性

我来总结一下吧

首先我们来分成四个部分

第一个是主角

它本身的位置缩放以及背景图片都在变化

所以位置缩放图片索引都是它的动画属性

但对于蘑菇来说

它只有位置在变动

所以动画属性是位置

砖块在不断的闪烁

所以它的动画属性是图片的索引

然后游戏上方的数字属于游戏UI

游戏的时间以及分数值都在改变

所以它们都属于动画属性

然后接下来我们来了解一下

动画属性的数据来源

首先

动画属性是根据前面我们提到的

Delta Time来更新的

所以它和时间T存在某种函数关系

我们把它记为FT

总的来说

动画属性的数据来源有两种

第一种是程序生成的

一般是通过物理函数进行模拟

这种动画一般是比如说

匀速运动或者是抛物线运动

这种动画一般是用来模拟玩家对物体的位移

旋转

缩放等操作实时的操作

这类动画属性数据是程序无法预知的

第二种是动画资产形式的动画属性

这种动画属性一般是由美术人员

通过西基动画工具编辑好的动画数据

然后在游戏运行的时候

通过某种插值函数FT

从动画数据重采样动画属性

这种动画一般是程序无法模拟生成的

需要人工进行编辑

在运行过程中

动画的资产数据是不会改变的

一般游戏中这两种动画属性是结合使用的

比如下面这张图角色的行走

包含了物理函数的模拟

比如说位移动画

和美术预先制作好的图片资产动画

它的背景图片在变

这是图片资产

然后对资产动画来说

对它进行了采样

有两种方式

第一种是逐帧方式的采样

这种动画存储了动画属性

在每一帧中的信息

每次播放的时候会根据计算出帧的索引

获取对应那一帧的动画属性的数据

这种动画只存储动画过程中

某些关键位置的动画属性

我们把它称为关键帧动画

在播放动画的时候

根据当前的时间

在两个关键帧之间取得差值的数据

然后对于关键帧动画

我们接下来介绍一下插值曲线

最常用的插值曲线是线性插值

它的表现比较平稳

很适合用来做常规的位移或者旋转动画

但是线性插值的线性曲线表现比较僵硬

以及机械化

如果使用非线性的方式插值

往往会让动画变得比较生动有趣

比如这张图的曲线是非线性曲线

它可以模拟橡皮一样的放大

缩小的效果

这张图的曲线可以用来模拟

物体来回反弹的效果

接下来我们来介绍插值曲线来来源

插值曲线的一种来源是常见的数学函数

比如说一元一次或者一元多次函数

或者三角函数

或者是幂次函数

或者是由它们组合而成的分段函数

这种插值函数也叫缓动函数

常见的缓动函数有二十多种

大家可以通过这个网站去查询

具体的算法

是潜能的一种经验的总结

然后右边图是部分缓动函数的动态效果图

这些缓动函数的数学形式

我们可以不用去记忆

平时根据需求

参照曲线的图来使用就行了

然后插值曲线它特点是

它的输出值是归一化的值

也就是说

在零和一之间就是在零和一之间时

差值的结果会处于起点跟终点的范围之间

当输出值在零和一之外的时候

差值的结果就会超出

起点跟终点的范围

插值公式比较简单

插值的结果V等于起始值V0

加上deita乘以以插值函数FT

其中deita指的是

终点的V1减去起始值V0

而对于线性插值函数来说

FT直接等于T

我们来看一个跳一跳的场景的画面

在砖块从天上掉下来的时候

它用的是什么样的曲线

首先我们看它是什么动画属性是位移是吧

然后它的起点跟终点是什么的

起点是从上面开始

然后落到下面

然后中间的动画属性

有没有超出起点跟终点的范围没有吧

然后我们再看一个就是结束的时候

位置是不是有来回的波动

对那我们基本上前面两还是可以排除

因为前面两行没有波动

然后我们再根据反弹的次数大概判断出来

应该是倒数第五个吧

跟最后一个这两个区别不大

所以选这两个都可以

好接下来我们来看一下曲线编辑器

缓动函数能够满足

大部分的简单动画效果的需求

尤其是UI的动向

但有一些特定的情况

场景下缓动函数也满足不了需求

这个时候需要可以使用曲线编辑工具来

提供插值曲线

曲线编辑工具

主要是在线线曲线的基础上

添加多个自定义的控制点

来达到曲线编辑的目的

控制点之间可以设置各种连接方式

比如贝塞尔插值

或者线性插值等等

一般的游戏引擎以及西基动画工具

都会提供功能相似的曲线编辑器

这是Unity自带的曲线编辑器

Unity曲线编辑器

有个比较方便的地方

就可以全局存储自定义的曲线

在不同的游戏项目中都可以共用

然后我们来介绍一下CG动画工具

CG动画工具一般是由横向的时间轴

以及纵向的动画属性列表组成的

在时间轴上

每一个单位刻度就是动画的一帧

帧的时常是可以自定义设置的

但对时间轴上某一帧

编辑的动画属性值之后

这一帧就变为了关键帧

动画运行的时候就会在关键帧之间

对动画属性进行采样和播放

关键帧之间默认是线性差值的

可以通过曲线编辑器

编辑关键帧之间的插值曲线

CG工具每次导出的动画数据

叫做一个动画片段

这个动画片段导出之后

一般是供游戏直接播放使用

然后常见的CG工具有3D Max、Maya、cinema4D、blender、houdini等

然后这个是UE4场景动画编辑工具

叫做Matinee

然后游戏逻辑中和动画相关的属性

都可以暴露到Matinee

比如相机的视角和位置

场景中的灯光的明暗的程度

粒子特效的属性

人物当前的动画片段等等

Matinee结合UE4强大的渲染特效

可以做出很就是电影级别的CG动画效果

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

9.2 游戏动画介绍笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。