3D游戏程序设计基础
图书信息
出版社: 兵器工业出版社,北京希望电子出版社; 第1版 (2006年10月1日)
平装: 388页
开本: 16开
ISBN: 7801727118
条形码: 9787801727114
尺寸: 25.8 x 18.6 x 2 cm
重量: 662 g
内容简介
与2D图形图像画面相比,3D画面带给玩家的是更具现实立体感的世界。于是乎,3D游戏成为主流,而人气最旺的在线游戏,亦逐渐转向3D化。由于3D程序概念之艰涩难懂,故而本书舍弃传统程序设计书籍的论述方式,改为具有启发性的对话过程。此对话方式,一来可以拉近作者与读者之间的距离,让读者在阅读上无心理负担,再者更可籍由启发式的对话来加深读者对3D程序设计的领悟。相信即便是相关领域的读者,亦可籍由此书轻松踏入3D程序设计之门,进而成为3D领域的佼佼者!
目录
第1章 第一个3D程序
3D空间初体验
视窗
3D世界的坐标
右手坐标系
左手坐标系
Direct3D和OpenGL
采用右手坐标系的优点
如何设定视窗的视野范围
默认值
系统变量
单位的意义
决定视窗与Camera的距离
决定视窗的大小
决定观察的最远距离
创建第一个D3D程序
本书使用的软件工具
安装软件注意事项
开始安装DirectX
以EmptyProiect建立D3D程序
D3D基本Framework解说
InitApp()
IsDeviceAcceptable()
ModifyDeviceSettings()
OnCreateDevice()
OnResetDevice()
OnFrameMove()
OnFrameRender()
OnLostDevice()
OnDestroyDevice()
在视窗中加入一个三角形
介绍3D中的数据项
准备顶点信息
设定Material
着色状态值的设定
将World Matrix初始化
View Matrix的设定
Pro{ection Matrix的设定
建立光源
设定CullMode
转动三角形
画出三角形
释放资源
3D名词解释
什么是Device
CPU、3D显卡与效能的关系
Buffer是一种内存吗
VertexBuffer和Buffer
有什么不同
3D中的颜色值——Color Value
RGBA
Normal Vector与Li#t Vector
Color Buffer是什么样的内存
DepthBuffel与ZBuffer
Full Screen是全屏幕吗
第2章 加上贴图效果
由三角形到正方形
正方形的组成
介绍Index Buffer
使用IndexBuffer建立正方形
关于材质与贴图
什么是贴图
认识贴图坐标
其他贴图方法
Fexture技巧演练
建立Texture相关程序代码
介绍SefrexntreStageState()函数
D3D中Color值的运算
Filter与贴图的关系
第3章 从平面到立体
制作每个面都有贴图的立方体
立方体共点时的贴图问题
解决问题
打造一个六面不同贴图的立方体
准备Vertex Buffer
填入Vertex Data
准备贴图
第4章 贴图效果的进一步介绍
建立一片漂亮的地板
建立地板的准备工作
着手建立地板的程序代码
试试各种贴图方法
Wrap(Repeat)贴图法
Clamp贴图法
Mirror‘贴图法
改进贴图品质
分辨率不足的问题
介绍MipMap贴图取样
MipMap与Filter贴图
取样的比较
第5章 移形换位——坐标变换
空间坐标变换
3D空间中旋转的基本概念
投影的坐标变换(Proiection)
位移的坐标变换(Translation)
旋转的坐标变换(Rotation)
矩阵具有结合律
World Matrix
View Matrix
Proiection Matrix
位移效果的矩阵函数
旋转效果的矩阵函数
World Space与Object Space
矩阵相乘不具备交换律
给地板施定身法
找出画地板前的World Matrix
声明一个单位矩阵指定给地板
关闭PUREDEVICE
让Camera自由走动
增加Camera移动的按键控制
声明变量来储存Camera的位置
使用矩阵函数
使用MatrixStack for Rotating Cube
使用MatrixStack for Camera
并加上旋转功能
如何让Camera绕着自己的坐标
旋转和移动
第6章 模型加载介绍
用VertexBuffer建立模型
建立墙面的Vertex Buffer
正式在OnFrameRender()里
画出墙面
在OnDestroyDevice()里
释放资源
修改Camera的位置及步伐
使用3ds max制作含Material的模型
在ds max中加入转文件程序
如何简单制作模型
设定模型的Material
将模型Export出去
在场景中加载3ds max模型
把程序与3sd modellib做连结
在程序中加载含Material的模型
激活Specular效果
激活Specular的步骤
动手开启Specular的光源设定
使用3dsmax的Texture模型
如何在Max中设定模型Texture
将含Texture的模型加入场景
第7章 激活光源效果
物体的受光原理
红花为什么那样红
黑色头发会反射黑光吗
为3D世界建立光源
光源的种类
光源的位置与方向
如何激活光源效果
在场景中加入Point Light
在场景中标记光源的位置
在场景中加入Spot Light
在场景中标记光源的方向
制作迷人的舞台灯光效果
让灯光动起来
制作明暗不定的多彩灯光
让Cube也动起来吧
顶点数与光源的关系
计算顶点的颜色
增加顶点数量来强化光源效果
动态调整地板顶点数量的
小程序
动态地调整墙壁的顶点数量
增加光源开关的机制
第8章 若隐若现的透明效果
为透明作准备
更新模型
使用Material填入Square的颜色
关于Color Operation的疑惑
使用Texture Factor 填入Square的颜色
让Cube动起来
再复制一个Cube
正式进入透明的殿堂
透明的定义
设定透明的步骤
为Material Square透明化
为Texture Factor Square透明化
把Cube也一起透明化吧
Cull Face的设定
第9章 绚丽的镜面反射效果
为反射效果做准备
更换模型
整理OnFrameRender()
反射技巧第一步——地板透明化
复习透明的步骤
动态控制地板的透明度
反射技巧第二步——画出反射对象
认识Scale矩阵
利用Scale矩阵做出反射效果
改变反射对象的旋转方向
画出反射的Cube
探讨画出反射Cube失败的原因
修正反射部分的光线
画出其他反射对象
反射技巧第三步——Stencil Buffer
请StencilBuffer登场
设定Stencil Buffer内存
Clear Stencil Buffer
在Stencil Buffer里做记号
Stencil Test
将所有地板下的反射对象
都藏起来吧
第10章 阴影效果
为阴影做准备
更换模型
阴影的形成过程
为Cube画出阴影
设定投影的变换矩阵
设定阴影的颜色及透明度
画出Cube的阴影
阴影重叠的问题
画出其他对象的阴影
发现阴影破碎的问题
解决阴影重叠问题
向硬件寻找可以使用
StencilBuffer功能组合
使用Stencil Buffer解决阴影
破碎问题