《Virtools引擎3D游戏程序设计》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:覃伯明编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302313274
  • 页数:493 页
图书介绍:本书分三部分:VSL编程、shader编程、SDK编程。VSL部分是详细讲解了每个类每个函数的使用;shader部分是讲如何给游戏增加效果,使得游戏画面更加绚丽;SDK部分是讲如何扩充Virtools引擎的功能,开发引擎插件等。

第一部分 VSL脚本语言程序设计 3

第1章 认识VSL 3

1.1 VSL简介 3

1.1.1 BB与VSL的关系 3

1.1.2 VSL的优势 3

1.1.3 VSL脚本语言与C语言的对比 5

1.1.4 VSL与其他脚本语言的差异 5

1.2 VSL脚本管理器 5

1.2.1 VSL脚本管理器的使用 5

1.2.2创造VSL脚本程序 6

1.2.3带输入输出的VSL脚本程序 7

1.2.4 VSL脚本程序的重命名、定位和删除 10

1.2.5 VSL快捷键使用 10

1.3 VSL语法描述 11

1.3.1 VSL的变量和常量 11

1.3.2 VSL的运算符 12

1.3.3 VSL的表达式与语句 13

1.3.4 VSL的赋值语句、声明语句和注释 15

1.3.5 VSL的条件判断语句 15

1.3.6 VSL的循环和控制语句 20

1.3.7数组和多维数组 25

第2章 VSL的函数 28

2.1函数的定义与调用 28

2.1.1函数的概念 28

2.1.2定义函数 29

2.1.3函数的调用 29

2.1.4函数的重载 30

2.2函数的参数及其返回值 31

2.2.1形参和实参 31

2.2.2函数值的返回 32

2.3变量的作用域和存储类型 33

2.3.1局部变量、全局变量和作用域 33

2.3.2 VSL全局共享变量和全局静态变量 35

2.3.3结构体和枚举类型 36

2.4字符串类的使用 39

2.4.1字符变量、字符串类型变量、字符数组和字符串类的区别 39

2.4.2字符串类的定义与赋值 39

2.4.3字符串的处理函数 40

2.4.4字符串的应用 41

第3章 VSL中的3D数学与变换以及简单几何体 43

3.1向量 43

3.1.1向量的概念 43

3.1.2向量长度和归一化 44

3.1.3向量的加减 44

3.1.4向量和标量的乘法 45

3.1.5向量的点积 45

3.1.6向量的叉积 45

3.1.7位置和位移向量 46

3.2 VSL中的2D向量Vector2D 46

3.2.1 Vector2D的方法 46

3.2.2 Vector2D的应用 48

3.3 VSL中的3D向量Vector 50

3.3.1 Vector的方法 50

3.3.2 Vector的应用 50

3.4矩阵和Matrix 51

3.4.1矩阵的概念 51

3.4.2 Matrix的方法和应用 52

3.5简单几何体 53

3.5.1点、线、面 53

3.5.2正方体 54

3.5.3圆锥体和圆球 55

3.5.4矩形 55

第4章 Virtools中的2D实体 60

4.1 2D帧Entity2D 60

4.1.1 Entity2D与Rect 60

4.1.2 Entity2D的应用 60

4.2 2D精灵Sprite 64

4.2.1 Sprite与Entity2D 64

4.2.2 Sprite的应用 65

第5章 灯光、材质和纹理 68

5.1光 68

5.1.1光的类型 68

5.1.2用VSL设置光照 69

5.1.3光的衰减属性 69

5.1.4高光 70

5.1.5色彩 71

5.2材质的特性 72

5.2.1物体表面材质属性 72

5.2.2 3D物体填充模式 73

5.2.3 Flat渲染和Gouraud渲染 74

5.2.4 Alpha混合 74

5.2.5 Alpha测试 76

5.2.6纹理采样过滤 77

5.2.7纹理寻址 78

5.2.8多重纹理混合 79

5.2.9纹理过滤和纹理寻址的显示例程 80

5.3纹理的特性 81

5.3.1纹理的插槽属性 81

5.3.2天空盒纹理 83

第6章 3D物体 85

6.1 3D Entity 85

6.1.1坐标系和3D物体 85

6.1.2 3D Entity的位置、方向与缩放 86

6.1.3物体的父子关系 89

6.1.4物体的网格 91

6.1.5 3D物体的屏幕坐标位置 92

6.2 Mesh 93

6.2.1 Mesh的应用 93

6.2.2 Mesh与材质、纹理贴图 95

6.2.3纹理坐标:(u,v)坐标 95

6.2.4 Mesh的通道材质特性 96

6.3 3D精灵Sprite 3D 97

6.3.1 3D精灵和公告板 97

6.3.2 3D精灵的应用 97

第7章 角色动画 99

7.1角色 99

7.1.1角色的概念 99

7.1.2播放角色动画 99

7.1.3角色的次级动画播放 102

7.1.4角色的身体 104

7.2角色动画 105

7.2.1如何确定角色动画是否有问题 105

7.2.2角色的动画帧 105

7.2.3角色动画的一些设置 108

7.2.4用VSL设置角色动画 110

7.3角色动画的应用 111

第8章 摄像机 116

8.1相机的基本属性 116

8.1.1相机的投影 116

8.1.2相机的视锥 118

8.1.3目标相机 119

8.2相机的应用 119

8.2.1第一人称相机 119

8.2.2第三人称相机 122

第9章 曲线与网格 126

9.1 3D曲线 126

9.1.1 3D曲线和3D曲线节点的概念 126

9.1.2 3D曲线的应用 128

9.1.3 3D曲线节点的详细设置 129

9.2 2D路径 131

9.3网格 133

9.3.1网格和层 133

9.3.2网格的VSL应用 133

第10章 表、组和场景 137

10.1表 137

10.1.1表的数据存储类型 137

10.1.2使用VSL创建表和存储数据 138

10.1.3通过VSL提取表中数据和删除行列 140

10.1.4通过VSL对表中数据的操作 142

10.2组 143

102.1组的意义 143

102.2组的应用 143

10.3场景 144

10.3.1场景的概念 144

10.3.2场景技术的简单应用 146

10.4数据容器 147

10.4.1数据容器的使用 147

10.4.2 String、StringTokenizer和ArrayString 150

第11章 声音与视频 152

11.1声音的基本运用 152

11.1.1声音的特性 152

11.1.2播放声音的方法 153

11.1.3 2D声音和3D声音 154

11.2声音的高级应用 155

11.2.1锥形的听觉范围 155

11.2.2声音的多重播放 157

11.3视频的播放 158

11.3.1视频的属性 158

11.3.2视频的播放 159

第12章 VSL中的bc 161

12.1工厂的概念 161

12.1.1工厂的作用 161

12.1.2工厂的产品 161

12.1.3工厂如何复制产品 162

12.1.4工厂如何删除产品 164

12.2属性控制 165

12.2.1属性的概念 165

12.2.2属性的操作 165

12.3 be的其他功能 168

12.3.1取得场景物件 168

12.3.2 be的其他一些小功能 172

12.4输入管理器 174

12.4.1鼠标的使用 174

12.4.2键盘的使用 176

12.5渲染设备 179

12.5.1渲染设备的概念 179

12.5.2如何设置雾 179

12.5.3鼠标拾取物件 181

12.5.4 2D屏幕与3D位置 185

12.6 ac 188

12.6.1 ac的概念 188

12.6.2如何创建和使用ac 188

第二部分 高级渲染语言 193

第13章 Virtools中的Shader 193

13.1认识Shader 193

13.1.1 Shader的诞生 193

13.1.2 Virtools中的Shader 193

13.1.3 Virtools中Shader的执行过程 194

13.1.4 Shader编辑器 195

13.2 Shader语言 196

13.2.1创建第一个Shader程序 196

13.2.2顶点着色器和像素着色器 198

第14章 光照 200

14.1参数 200

14.1.1设置自发光参数的Virtools写法 200

14.1.2设置自发光参数的HLSL写法 201

14.2光照 203

14.2.1光照的原理 203

14.2.2光照Shader 204

14.2.3光照的HLSL写法 206

14.3镜面反射 210

14.3.1一盏灯的镜面反射光照 210

14.3.2两盏灯的镜面反射光照 212

第15章 纹理贴图光照 214

15.1简单的纹理渲染 214

15.1.1 Virtools纹理渲染的Shader代码 214

15.1.2 HLSL纹理渲染 215

15.1.3带光照的纹理渲染 216

15.1.4逐像素地纹理渲染 217

15.1.5两层纹理渲染 220

15.2凹凸纹理映射 221

15.2.1凹凸纹理映射的由来 221

15.2.2凹凸纹理映射的原理 222

15.2.3凹凸纹理映射的实现 222

15.2.4改良的凹凸纹理映射 226

15.3环境映射 230

15.3.1环境映射的原理和立方贴图纹理 230

15.3.2 Virtools中如何生成立方体贴图 231

15.3.3反射环境映射 231

15.3.4折射环境映射 234

15.3.5菲涅尔效果和颜色色散 237

15.3.6环境映射和凹凸纹理映射的结合 241

15.4 2D Frame的Shader 244

15.4.1 2D帧的多次渲染 244

15.4.2 2D帧的旋转 246

第16章 Shader的效果 250

16.1 Shader实现动画效果 250

16.1.1脉动的茶壶——顶点动画 250

16.1.2舞动的花朵——纹理UV动画 252

16.1.3波光粼粼的浅水区——序列帧动画 256

16.2简单的修饰效果 258

16.2.1广告墙变换效果 258

16.2.2海底焦散 261

16.2.3画面模糊效果 265

16.2.4景深效果 268

16.2.5地球大气效果 271

16.3简单的几个其他效果 276

16.3.1灼烧 276

16.3.2发光 277

16.3.3绽放 280

16.3.4毛发 284

16.3.5灰度 288

第17章 Shader的应用 290

17.1地形渲染 290

17.1.1 Texture Splatting原理简介 290

17.1.2 Texture Splatting对地形建模的一点要求 291

17.1.3 Shader代码剖析 291

17.2运动模糊 296

17.2.1运动模糊原理简介 296

17.2.2设置需要配合的资源 296

17.2.3运动模糊的Shader代码 297

17.3带倒影的水面渲染 300

17.3.1渲染水面的步骤 300

17.3.2水面的设置 302

17.3.3水的Shader代码 303

第18章 Shader的其他应用 307

18.1渲染车 307

18.1.1渲染车灯 307

18.1.2渲染车轮 311

18.1.3渲染车窗 314

18.2渲染场景 317

18.2.1带法线的地形渲染 317

18.2.2树的渲染 322

18.2.3树叶与草的渲染 323

第三部分 Virtools SDK 329

第19章 认识Virtools SDK 329

19.1 Virtools的体系结构 329

19.1.1 SDK的介绍 329

19.1.2帧循环的介绍 331

19.1.3主要对象之间的关系 332

19.2使用SDK创建BB 333

19.2.1行动前的准备 333

19.2.2通过向导创建BB 335

19.2.3 BB源文件的解释 338

19.2.4编译生成BB 344

第20章 用SDK开发BB 346

20.1 BB的参数 346

20.1.1 BB的3种参数 346

20.1.2 BB参数值的获取和赋值 347

20.1.3改变BB参数的数量和类型 349

20.2 BB的输入输出端口 354

20.3自定义类型的参数 358

20.3.1自定义类型的参数说明 358

20.3.2创建简单的自定义参数 359

20.3.3结构体类型参数的处理函数 361

20.4使用SDK的BB 367

20.4.1修改PushBotton和DragAndDrop 367

20.4.2转向功能 368

20.4.3有层级关系的中文显示 370

第21章 用SDK扩展功能 379

21.1多线程的应用 379

21.1.1进程和线程 379

21.1.2 VxThread、VxMutexl、VxMutexlLock 380

21.1.3多线程的应用 381

21.2管理器的开发使用 391

21.2.1管理器 391

21.2.2 Manager代码解释 394

21.2.3 Virtools与ADO的整合 395

21.2.4创建ADOACCESSManager 397

21.2.5在BB中调用管理器的方法 404

21.2.6管理器功能的整合 406

21.3为VSL绑定新类型 408

21.3.1绑定新类型的规则 408

21.3.2绑定的细则 409

21.3.3绑定的简单范例 414

21.4第三方声音引擎与Virtools的整合 415

21.4.1整合第三方声音引擎的原因 415

21.4.2第三方声音引擎使用介绍 416

21.4.3不同喇叭播放不同声音 417

21.5网络引擎与Virtools的整合 425

21.5.1整合网络引擎的原因 425

21.5.2使用网络引擎创建服务器 425

21.5.3网络模块管理器 430

21.5.4连接到服务器的BB 436

21.5.5发送消息到服务器的BB 438

21.5.6处理服务器消息的BB 439

第22章 用SDK开发新功能 442

22.1读写注册表 442

22.1.1注册表的简单介绍 442

22.1.2读写注册表功能描述 443

22.1.3访问注册表的BB 444

22.2文件目录的操作 446

22.2.1列举所有指定类型文件 446

22.2.2记录日志文件 449

22.2.3设置打印 451

22.2.4复制移动文件 455

22.3 Virtools与串口通信 457

22.3.1串口通信类 457

22.3.2定义串口通信协议 458

22.3.3串口通信管理器 461

22.3.4启用串口BB 462

22.3.5从串口中得到数据 463

22.3.6向串口写数据 464

22.4 Virtools与Flash整合 466

22.4.1和Flash整合的原因 466

22.4.2 Flash的封装 466

22.4.3封装一个播放swf文件的BB 467

第23章 发布应用程序 473

23.1编译生成独立的执行程序 473

23.1.1关于执行程序的介绍 473

23.1.2编译生成Virtools自带的播放器 474

23.1.3 CustomPlayer类分析 474

23.1.4 CustomPlayerApp类分析 475

附录A VSL全局函数 478

附录B Virtools参数类型GUID 481

附录C 枚举CK BEHAVIOR FLAGS的标识 484

附录D CKBehavior::SetCallbackFunction回调标准 486

附录E Virtools消息使用须知 487

E.1消息的接收 487

E.2消息的参数 488

附录F 常用类的标识符类CK_CLASSID 491

参考文献 493