《DirectX Shaders——3D动画制作》

  DirectX 商业游戏开发全面详解系列  
《DirectX Shaders——3D动画制作》是可奇教育最新推出的一套适合广大学生朋友和初中级水平职场人士快速学习的视频教程。该教程继承可奇一贯轻松学习的理念,帮助您更加轻松和快速地掌握业内必备核心技术,在最短的时间内理解核心概念、原理、框架,并通过真实的动手实践,将最核心的知识点牢固掌握。

《DirectX Shaders——3D动画制作》使用真实的商业游戏"DOOM3"、"QUAKE3"、"QUAKE2"中的模型动画作为教程中的例子,教学的每个环节都有可以执行代码、资源等文件提供,所有的代码在教程中都配有深入详细的讲解。使用《DirectX 可编程渲染管线——3D动画制作》,您可以亲自动手修改或重写每个环节的源代码,能够帮助您以最快速度从原理学习转入实践操作阶段,最终制作出真实的3D模型动画。

《DirectX Shaders——3D动画制作》

1、渲染管线的概念与组成部分

      可编程渲染管线的优点

       渲染管线的概念

      渲染管线的各个阶段

2、初始化Direct3D

      设备类型

      特征级别

      创建后台渲染目标与视口

      清除与显示

3、HLSL

      什么是HLSL

      HLSL语法

         数据类型

         流程控制

         语意

         函数

4、编写顶点与像素着色器并绘制三角形

      编写顶点与像素着色器

      编译与创建顶点与像素着色器

      输入布局与输入汇编阶段的实现

      创建顶点缓冲区

      绘制三角形

5、设置三角形的颜色

      着色器中结构体的使用

      着色器中对颜色的处理

      设置颜色输入布局

6、变换的分析

      世界的变换

      观察变换

      投影变换

7、旋转的三角形

      常量缓冲区的作用

      常量缓冲区的创建

      常量缓冲区的更新

      设置光栅化状态

8、创建深度缓冲区与绘制多个三角形

      深度缓冲区的描述

      创建深度缓冲区

      设定深度缓冲区到输出合并阶段

      绘制多个三角形

9、创建索引缓冲区并绘制三角形

      索引的原理

      创建索引的缓冲区

      使用索引绘制三角形

10、纹理

      纹理的映射原理

      读取纹理并创建采样状态

      设置纹理输入布局

      着色器接收并绘制纹理

11、MD2文件的结构与信息的描述

      描述文件头信息

      描述帧信息

       描述三角形信息

       描述纹理信息

       描述顶点与顶点缓冲区信息

       定义MD2类

12、读取MD2文件

      计算MD2文件的大小并分配存储空间

      查找各部分内容的起始位置

      读取顶点信息

      读取三角形信息

      建立索引存储空间并保存索引信息

      描述并创建索引缓冲区

      读取并计算纹理坐标信息

      建立顶点与纹理坐标的存储空间

      根据索引来组织并存放顶点与纹理坐标

      描述并创建顶点缓冲区

13、绘制MD2模型

      设置输入布局

      设定顶点缓冲区

      设定索引缓冲区

      根据索引值绘制模型

14、渐变动画

      渐变动画的作用

      渐变动画的条件

      渐变的原理

15、播放MD2动画

      动画的控制

      设定多个输入槽接收顶点信息

      通过常量缓冲区传递线性插值的信息

      顶点着色器接收多个顶点的信息

      通过顶点着色器完成顶点的线性插值

16、向量

      向量的概念

      向量的大小

      向量的方向

      2D与3D向量的表达方式

      零向量

      向量与点

           向量与点各自描述了什么

           向量与点的联系与区别

      向量大小的计算

           2D向量的大小

           3D向量的大小

      单位向量

            单位向量的概念

           单位向量的作用

           单位向量的计算

      向量的加减法

           向量加法的计算

           向量加法的几何意义

           向量减法计算

           向量减法的几何意义

      向量点乘

           向量点乘的计算

           向量点乘的几何意义

      向量叉乘

           向量的叉乘

           向量叉乘的几何意义

17、矩阵

      矩阵的概念

      方阵

      单位矩阵

      零矩阵

      转置矩阵

      矩阵的加法

      矩阵的乘法

      矩阵的程序表示方法

      2D旋转矩阵

           认识2D旋转矩阵

           2D旋转的分析

      3D旋转矩阵

           认识3D旋转矩阵

           以X轴作为轴心的3D旋转矩阵

           以Y轴作为轴心的3D旋转矩阵

           以Z轴作为轴心的3D旋转矩阵

      4X4平移矩阵

           认识4X4平移矩阵

           4X4平移矩阵的平移分析

      4X4缩放矩阵

           认识4X4缩放矩阵

           4X4缩放矩阵的缩放分析

      4X4旋转矩阵

           认识4X4旋转矩阵

           以X轴作为轴心的4X4旋转矩阵

           以Y轴作为轴心的4X4旋转矩阵

           以Z轴作为轴心的4X4旋转矩阵

      4X4矩阵的优点与作用

18、四元素

      四元素的作用

      四元素的概念

      负四元素

      单位四元素

      四元素的模

      四元素转矩阵

           四元素转为矩阵的条件

           四元素转为矩阵的选择

      矩阵转四元素

           矩阵转四元素的原因

           矩阵转四元的方式

      球面线性插值

           球面线性插值的作用

           球面线性插值的方式

19、MD3文件结构与信息描述

      认识MD3文件结构

      描述MD3文件头

      描述TAG信息

      描述网格头信息

      描述三角形信息

      描述纹理坐标信息

      描述纹理信息

      描述关键帧信息

      描述网格信息

      定义MD3类

20、读取MD3文件与纹理

      计算MD3文件的大小并分配存储空间

      计算各部分内容的起始位置

      分配各部分内容的存储空间

      读取MD3文件头信息

      读取TAG信息

      将TAG旋转信息转换为四元素

      读取网格信息

      读取材质信息

      读取关键帧中的顶点

      读取三角形信息

      读取纹理坐标信息

      组织顶点与纹理坐标

      创建顶点缓冲区

21、绘画MD3模型

      设置顶点缓冲区

       绘画MD3模型各个部分

22、MD3模型各个部分的连接

      找到对应的TAG信息

      将TAG中旋转的四元素转化为矩阵

      将TAG中的位移的信息转化为矩阵

      把TAG转化后的矩阵传递给着色器

23、创建动画帧的顶点缓冲区

      获取每帧的顶点与纹理坐标的信息

      描述并创建每帧的顶点缓冲区

24、MD3动画控制与绘制TAG连接的模型

      确定源和目标的TAG信息

      对源和目标的TAG旋转信息进行线性插值

      对源和目标的TAG位移信息进行线性插值

      设定Tag与模型连接的关系

      设定源和目标的顶点缓冲区

      递归调用TAG连接信息将MD3各个部分绘制出来

25、定义向量类

      保存向量

      设定向量

      获取向量

26、矩阵类

      保存矩阵

      设定矩阵

      获取矩阵

      重置矩阵

      设置4X4位移矩阵

      从四元素转化为4X4矩阵

27、四元类

      保存四元数

      设置四元数

      获取四元数

      计算四元数的模

      标准化四元数

      将3X3矩阵转换为四元素

28、球面线性插值

      计算插值四元素的大小

      取出最短的弧进行插值

      判断是否需要进行球面线性插值

      计算球面线性插值的结果

29、描述MS3D中的信息

      认识MS3D文件结构

      骨骼动画的原理

      描述顶点信息

      描述三角形信息

      描述网格信息

      描述材质信息

      描述骨骼信息

      定义MS3D类

30、读取MS3D文件内容

      计算MS3D文件的大小并分配存储空间

      计算各部分内容的起始位置

      分配各部分内容的存储空间

      读取顶点信息

      读取三角形信息

      读取网格信息

      读取材质信息

      读取骨骼信息

      查找各骨骼的父节点

31、欧拉角

      认识欧拉角

      欧拉角转换到矩阵

      欧拉角转换到四元数

32、初始化MS3D的骨骼矩阵与顶点

      建立骨骼"相对矩阵"

      建立骨骼"绝对矩阵"

      判断顶点是否受到骨骼的影响

      建立"位移逆反矩阵"

      建立"旋转逆反矩阵"

33、创建MS3D的顶点与索引缓冲区

      获取顶点与纹理坐标

      获取顶点对应的骨骼

      通过骨骼来变换顶点

      描述并创建动态顶点缓冲区

34、动态更新顶点缓冲区并绘画MS3D模型

      影射顶点缓冲区

      通过骨骼更新顶点并写入顶点缓冲区

      读取纹理

      设定纹理资源

      设定顶点与索引缓冲区

      绘制模型

35、MS3D的动画控制

      控制动画播放的时间

      取出模型的骨骼并判断骨骼是否带有动画信息

      判断与控制动画的当前帧

      判断动画是否需要进行插值

      计算插值的时间

      对动画信息进行插值

      计算动画的"绝对矩阵"

36、MD5文件结构

      分析MD5模型文件的内部结构

           骨骼信息结构

           网格信息结构

           顶点信息结构

           权重信息的作用

           三角形信息结构

           权重信息结构

      分析MD5模型文件中各信息的连系与作用

           顶点与权重的连系

           权重与骨骼的连系

           顶点受多少个权重的影响

           计算最终的顶点信息

      总结MD5模型文件中各部分的连系与计算的过程

37、描述MD5模型文件中各部分的内容

      描述骨骼信息

      描述顶点信息

      描述网格信息

      描述MD5模型信息

38、读取MD5模型文件

      查找各数据块的起始位置

      分配各数据的存储空间

      读取骨骼信息

      转换骨骼旋转信息为"四元素"

      读取网格信息

      读取纹理路径

      读取顶点信息

      读取三角形信息

      读取权重信息

39、四元数运算法则与公式

40、匹配网格(MD5)

      创建存储顶点的存储空间

      查找顶点对应的"骨骼"和"权重"

      通过"骨骼"和"权重"计算出最终的顶点

      保存"最终顶点"到顶点数组

41、创建MD5顶点缓冲区

      描述顶点缓冲区

      创建顶点缓冲区

42、绘制MD5静态模型

      设定顶点缓冲区

      绘制模型

43、描述与读取MD5动画文件

      描述"包围盒"信息

      描述MD5动画信息

      描述"骨骼动画层次结构"信息

      描述"基础帧"信息

      描述"动画帧"信息

      查找各数据块的起始位置

      分配各数据的存储空间

      读取"骨骼层次结构"信息

      读取"包围盒"信息

      读取"基础帧"信息

      读取"动画帧"信息

44、创建骨骼帧

      提取"基础帧信息"

      提取骨骼层次结构信息

      判断动画帧信息的作用(旋转还是平移)

      产生骨骼帧动画信息

45、更新顶点缓冲区

      通过骨骼帧重新匹配网络

      把匹配后的网格顶点写入到顶点缓冲区中

46、MD5动画帧之间的平滑过渡

      动画帧平滑过渡的原理

      初始化动画信息

      确定"源"和"目标"帧

      对"源"和"目标"帧的动画信息进行插值

      通过"插值"的动画信息匹配网格

47、多动画集之间的平滑过渡(MD5)

      多动画集之间平滑过渡的原理

      确定"源"和"目标"动画集

      确定"源"和"目标"的动画帧

      通过多动画集之间"插值"的信息匹配网格

      "多动画集过渡"结束后的处理