《OpenGL 3D动画开发 商业游戏开发系列》

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

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

目录

3D动画代码在线演示

 

1、VS2008的Win32工程的创建(公共部分)

2、回调函数与完整的windows应用程序框架的分析(公共部分)

3、OpenGL开发环境的配置

4、初始化OpenGL(1)

      获取窗口设备环境句柄

      设置像素格式

      创建喧染环境

      设定当前线程的设备环境与喧染环境

5、变换的原理

      世界变换(模型变换)

      投影变换

      观察变换

6、变换的实现

      重置变换

      投影变换

      观察变换

7、初始化OpenGL(2)

      设置清除颜色缓冲区与深度缓冲的值

      图像与速度之间的选择

      清除颜色与深度缓冲区

8、绘画点与线

      设置点的位置与颜色

      设置点的大小

      设置点的抗锯齿

      设置线的位置与大小

      设置线的颜色

      设置线的抗锯齿

      虚线的设定

      世界变换(模型位移变换)的实现

      矩阵堆栈的设置与使用

9、绘制三角形与隐面剪切

      设置三角形顶点

      设置三角形顶点颜色

      设置世界变换(模型旋转变换)

      设置多边形点画模式

      隐藏多边形的边

      隐面剪切与迎风面的作用

      设置隐面剪切

      设置迎风面

10、纹理的读取与应用

      纹理坐标映射原理

      读取纹理

      产生纹理ID

      绑定纹理

      指定纹理

      纹理过滤

      绘制纹理

11、层级贴图

      层级贴图的作用

      层级贴图的设置

12、描述MD2模型文件内容

      描述文件头信息

      描述帧信息

      描述三角形信息

      描述纹理信息

      定义MD2类

13、定义读取MD2纹理的方法

14、读取MD2文件内容

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

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

      读取顶点信息

      读取三角形信息

      读取并计算纹理坐标信息

      读取MD2用到的纹理

15、绘制MD2静态模型

      绑定纹理

      设定纹理坐标

      设定模型顶点

16、渐变动画

      渐变动画的作用

      渐变动画的条件

      渐变的原理

17、播放MD2动画

      判断动画帧是否正确

      计算插值的时间

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

      对模型顶点进行动画插值

      绘制"插值"后的模型顶点

18、向量

      向量的概念

      向量的大小

      向量的方向

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

      零向量

      向量与点

           向量与点各自描述了什么

           向量与点的联系与区别

      向量大小的计算

           2D向量的大小

           3D向量的大小

      单位向量

            单位向量的概念

           单位向量的作用

           单位向量的计算

      向量的加减法

           向量加法的计算

           向量加法的几何意义

           向量减法计算

           向量减法的几何意义

      向量点乘

           向量点乘的计算

           向量点乘的几何意义

      向量叉乘

           向量的叉乘

           向量叉乘的几何意义

19、矩阵

      矩阵的概念

      方阵

      单位矩阵

      零矩阵

      转置矩阵

      矩阵的加法

      矩阵的乘法

      矩阵的程序表示方法

      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矩阵的优点与作用

20、四元素

      四元素的作用

      四元素的概念

      负四元素

      单位四元素

      四元素的模

      四元素转矩阵

           四元素转为矩阵的条件

           四元素转为矩阵的选择

      矩阵转四元素

           矩阵转四元素的原因

           矩阵转四元的方式

      球面线性插值

           球面线性插值的作用

           球面线性插值的方式

21、描述MD3文件内容

      认识MD3文件结构

      描述MD3文件头

      描述TAG信息

      描述网格头信息

      描述三角形信息

      描述纹理坐标信息

      描述纹理信息

      描述关键帧信息

      描述网格信息

      定义MD3类

22、定义向量类

      保存向量

      设定向量

      获取向量

23、矩阵类

      保存矩阵

      设定矩阵

      获取矩阵

      重置矩阵

      设置4X4位移矩阵

      从四元素转化为4X4矩阵

24、四元类

      保存四元数

      设置四元数

      获取四元数

      计算四元数的模

      标准化四元数

      将3X3矩阵转换为四元素

25、读取MD3文件与纹理

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

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

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

      读取MD3文件头信息

      读取TAG信息

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

      读取网格信息

      读取纹理信息

      读取纹理

      读取关键帧中的顶点

      读取三角形信息

      读取纹理坐标信息

26、绘制MD3静态模型

      绑定纹理

      设定纹理坐标

      设定模型顶点

27、MD3动画控制

      判断动画帧是否正确

      计算插值时间

      TAG线性插值

      TAG球面线性插值

      模型顶点插值

28、球面线性插值

      计算插值四元素的大小

      取出最短的弧进行插值

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

      计算球面线性插值的结果

29、绘制MD3动画

      实现TAG连接信息

      绑定纹理

      设定纹理坐标

      设定经过插值的模型顶点

      将插值后的TAG四元素转换为4X4矩阵

      把TAG位移信息设置到4X4矩阵中

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

30、描述MS3D文件内容

      认识MS3D文件结构

      骨骼动画的原理

      描述顶点信息

      描述三角形信息

      描述网格信息

      描述材质信息

      描述骨骼信息

      定义MS3D类

31、读取MS3D文件内容

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

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

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

      读取顶点信息

      读取三角形信息

      读取网格信息

      读取才质信息

      读取纹理

      读取骨骼信息

      查找各骨骼的你节点

32、欧拉角

      认识欧拉角

      欧拉角转换到矩阵

      欧拉角转换到四元数

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、绘制MD5模型动画

      通过骨骼帧动画信息匹配网格

      绘制动画帧所产生出来的动画模型

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

      动画帧平滑过渡的原理

      确定"源"和"目标"帧

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

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

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

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

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

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

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

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

48、TGA文件结构

      TGA文件的结构

      TGA文件头的结构

      TGA压缩数据块

      TGA没压缩数据块

49、读取TGA文件

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

      判断TGA文件的数据是否有压缩

      获取没压缩数据的数量并读取

      获取有压缩数据的数量并读取

      根据读取的TGA数据产生纹理

      绑定并过滤纹理