当前课程知识点:游戏程序设计 >  第九章 《游戏动画》 >  9.4 骨骼蒙皮动画 >  9.4 骨骼蒙皮动画

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

9.4 骨骼蒙皮动画在线视频

下一节:9.5 动画流水线

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

9.4 骨骼蒙皮动画课程教案、知识点、字幕

接下来我们来介绍本科的重点章节

骨骼蒙皮动画

骨骼蒙皮

顾名思义就是指在骨骼上蒙上皮

通过骨骼驱动蒙皮进行运动

这里的蒙皮

指的就是3D模型的网格顶点

那接下来我们来分析一下

骨骼蒙皮动画

跟刚性阶层动画的主要的区别

这张图左边是刚性阶层动画

右边是骨骼蒙皮动画

然后这个白色部分是骨架结构

骨骼蒙皮动画

跟刚性阶层动画第一点区别是

他们组成阶层结构的对象是不一样的

刚性阶层动画是通过身体部位

本身组成刚性阶层结构

而骨骼蒙皮动画

它是通过一个虚拟的骨骼

来组成阶层关系

然后第二点区别是

骨骼蒙皮动画的模型

网格是一个整体

它并没有按照身体的部位单独拆开

第三点区别是

骨骼蒙皮动画

是通过骨骼

组成的骨架来驱动模型顶点运动的

最后一点区别是

骨骼蒙皮动画

关节点处的顶点

可能会受到多根骨骼的影响

这也是他解决关节裂缝问题的关键

这样我们可以通过编辑器调节关节处顶点

它受不同骨骼影响的权重

然后使得关节处的顶点运动时

表现出比较平滑自然的效果

接下来我们来介绍一下

骨骼这个概念

在蒙皮骨骼动画中

骨骼其实他是一个虚拟概念

在游戏中

骨骼一般

一般是不渲染的

他只是用来存储阶层

存储阶层关系以及保存SQT变化数据

一般在编辑器中为了调试方便

会通过设置显示骨架结构

根据前面的图形学知识

我们知道

SQT三个变化

他可以合并为一个矩阵

我们把它记为M

接下来我们来解释一下

骨骼和关节之间的关系

这个是初学者很容易混淆的地方

而现实生活中

骨骼是有长度的

它是连接关节之间的桥梁

但是

骨骼蒙皮动画中所指的骨骼

它并没有长度的概念

实际上

这里的骨骼指的就是关节的意思

我们一定不能混淆了

西西动画编辑工具

经常会把骨骼的长度给绘制出来

其实是为了方便展示

骨架的阶层关系

然后接下来我们来介绍一下

骨骼蒙皮动画的制作流程

我们先来介绍T-POSE这个概念

首先建模人员

他创建一个初始模型

一般会把人物模型做成T字形

因为这个姿势是一种放松的姿势

能够比较方便

后面骨架的设置

以及蒙皮的操作

这个姿势我们把它称之为T-POSE

然后把初始的T-POSE模型作为一个模板

在这个基础上设置骨架结构

这个过程叫骨架设置

设置好后的骨架姿势

也是一个T-POSE的姿势

然后接下来在T-POSE模型跟骨架上

进行蒙皮操作

蒙皮指的就是模型的顶点

蒙皮操作就是把

模型的顶点与关联的骨骼绑定在一起

蒙皮操作是一个体力活

尤其是关节点位置的顶点

需要做大量的骨骼权重的调整

才能达到较为平滑的顶点动画的效果

动画设计人员

一般通过在时间轴上调整骨架的不同的姿势

来设置关键帧

达到让骨架运动的目的

然后输出编辑好的动画片段

供程序游戏程序使用

这就是蒙皮骨骼动画

制作和导出的过程

然后接下来我们来讲

蒙皮算法的原理

在介绍原理之前

我们先要搞清楚

骨骼蒙皮动画

相关的几个坐标空间

第一个世界空间

它指的是游戏世界的坐标系

第二个模型空间

它指的是模型制作时的局部坐标系

第三个骨骼空间

它指的是以骨骼为原点的坐标系

蒙皮动画的目的就是通过骨骼动画的驱动之后

求得顶点

在目标支持下的模型空间的位置

接下来

我们来看一下骨骼驱动

蒙皮顶点的过程

我们假设手臂上有一个顶点位

他跟骨骼B关联

然后当骨骼B转动的时候

顶点位也跟着转动

然后当骨骼B的副骨骼转动的时候

骨骼B也跟着转

进而带动了顶点V的转动

所以

骨骼对蒙皮顶点的影响

具有阶层式的驱动作用

然后现在我们来介绍一下蒙皮顶点的计算

我们先来假设一些条件

为了简化问题

我们采用手臂骨骼链

来分析计算的过程

至于身体其他部位的骨骼

骨骼蒙皮计算都可以以此类推

首先第一张图它是手臂模型的初始姿势

而这个手臂有三根骨骼

我们假设跟骨骼为B0

他的指骨骼也就是肘关节的骨骼

为B1

最上面的骨骼因为没有关联顶点

我们直接忽略

假设手臂模型上有个顶点V

他只关联骨骼B1

至于顶点V

关联多根骨骼的情况

我们后面会来讲解

那左下角

是模型空间下的原点

第二张图

为了方便分析我们把网格模型去除

只留下顶点V

第三张图

是目标之事项

顶点V和手臂骨架的姿势

这里有几个已知的条件

第一个已知条件是

顶点V初始姿势下的模型空间位置

是知道的

第二个条件

是不同的姿势下

每根骨骼的SQT数据都是已知的

在建模工具导出动画片段数据的时候

会带有SQT数据

骨骼的SQT数据是相对于

副骨骼的空间而言

我们把它记为Mb

这里大写的M指的是矩阵

小写的b

指的是骨骼空间

蒙皮顶点计算的目的

就是要求出顶点V

在这个目标支姿势下

他的模型空间的位置

接下来我们来分析一下

骨骼空间跟模型空间之间的联系

这里B1是B0的子骨骼

然后B1的曲线变化

是相对于B0而言的

因为B0是根骨骼

所以我们可以得到B零的模型空间下的矩阵变化

就是B0在骨骼空间下的矩阵变化

我们把它记为Mm0=Mb0

所以我们进而能够推导出

第一 在模型空间下的矩阵变换

Mm1

等于Mb1*Mb0

同理以此类推

假设这个骨骼链上有n根骨骼

第n根骨骼

我们假设为bn

同理

可以得出bn在模型空间下的矩阵变化

Mmn=Mbn*Mb(n-1)...Mb0

所以后面我们为了推导方便

我们假设

骨骼在模型空间下的矩阵变化都是已知的

另外

我们再来看另外一个隐含的条件

我们首先假设初始姿势下

顶点V相对于骨骼b1的位置为

Pb0

这里小写的b指的是骨骼空间

在角色目标姿势下

V点相对于骨骼b1的位置为Pb1

我们可以发现

顶点V是跟着骨骼b1运动的

他相对于b1的位置

无论在什么姿势下永远都是不变的

所以我们可以得出

Pb0=Pb1

我们统一记为Pb

接下来我们来求

顶点V在目标姿势下的位置PMt

然后首先我们假设初始姿势下b1

在模型空间下的矩阵变换为M1i

这里数字1代表骨骼的序号

小写的字母i代表初始姿势

我们前面分析过

M1i可以认为是已知的

所以根据图形学的知识可以得到

PMi等于Pb乘以M1i

也就是说

顶点V在初始模型空间下的位置

PMi等于

顶点在骨骼B1下的骨骼空间位置

Pb乘以b1在

初始模型空间下的矩阵变换

M1i

从而我们能够得出Pb

等于PMi乘以

M1i的逆

然后我们再假设

目标空间下

骨骼b1的相对模型空间的

矩阵变换为M1t

于是同样可以得出

PMt=Pb*M1t

我们根据前面的结论得出PMt

等于PMi*M1i的逆

再乘以M1t

等式后面这些变量

我们前面分析过

都可以认为是已知的

所以PMt目标姿势的

模型空间位置就求出来了

然后这里我们把Mni逆

乘以Mnt称为蒙皮矩阵

记为Mns

这里S指的是蒙皮

所以最终

顶点的在目标支持下的模型空间位置等于

顶点V初始之下的模型空间位置

乘以它对应的蒙皮矩阵

Mns

接下来

我们来看顶点关联多根骨骼的情况

假设顶点V关联n根骨骼

顶点相对于每一根骨骼都有一个权重值Sn

在西西动画工具里

可以保证

S0+S1

一直加到Sn结果一定是1

并且每一个权重值

他们的范围一定在零到一之间

所以通过累加

我们可以得出

顶点在目标姿势下的模型空间位置

PMt

等于顶点在初始姿势下的模型空间位置

PMi

乘以括号S0

乘以骨骼0的蒙皮矩阵

然后一直垒乘到

Sn乘以骨骼n的蒙皮矩阵

这就是顶点关联多根骨骼的计算的结果

游戏程序设计课程列表:

第一章 《游戏开发导论》

-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.4 骨骼蒙皮动画笔记与讨论

也许你还感兴趣的课程:

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