第1部分:核心概念 3
第1章 游戏概述 3
实时应用程序 3
游戏系统 3
游戏的循环更新结构 4
输入 6
对象的思考步骤 6
对象的移动 7
消息机制 7
相机 8
相机后处理 8
渲染器 8
常见的性能问题 9
相机系统 9
控制操作 10
脚本设计 11
本章小结 12
第2章 相机基础知识 13
真实的相机系统 13
用途和属性 14
电影投影 15
游戏相机 15
基本技术 16
相机系统 17
游戏相机 17
表现风格 17
相机行为 17
第一人称相机和第三人称相机 17
电影相机和交互式相机 18
观察位置 18
期望位置 18
方向 18
偏航角 19
仰角 19
旋转角 19
期望方向 19
旋转操作 19
视见体 19
视口 19
视域 20
宽高比 20
刷新率和帧速率 21
安全区和安全帧 21
刷新率和运动模糊 22
显示撕裂 23
玩家角色人物 23
目标对象 23
插值计算 23
投影 24
视差 24
相机转换 24
相机约束条件 24
移动约束条件 25
方向约束条件 25
相机的表现风格 26
正交表现方式(2D) 26
透视表现方式(3D) 27
混合表现方式(2.5D) 28
相机行为 29
视频相机 29
第一人称/视点 30
第三人称/分离视角 31
后定位 33
肩部定位 33
脚部可见 33
远距离定位 34
角色相关 34
静态相机 34
路径定位 34
混合FP/TP相机 35
预视相机和反馈相机 36
预测人物的移动方式 37
预测相机的路径 37
路径搜索方案 38
数据驱动与规划方案 38
方向预测 38
视见生成 38
视锥体 40
视见转换 40
投影转换 41
玩家控制操作 41
本章小结 42
第3章 电影技术 43
术语 43
标准电影术语 44
移动拍摄 44
摇动镜头 44
镜头倾斜 45
跟踪拍摄 45
景深 45
淡入/淡出效果 46
镜头眩光效果 46
旁跳镜头 46
插入镜头 46
跳接镜头 47
180°规则/动作作用线 47
镜头视点 47
升降镜头 47
特写镜头 48
反转镜头 48
30°规则 48
强迫透视 48
实时电影技术 48
电影 48
交互式电影技术 49
电影摄像机 50
摄像机的移动 50
摄像机的方向 51
动态生成画面/回放摄像机 51
再现型摄像机/关键帧摄像机 52
脚本型摄像机 52
动态生成画面 53
结束画面 53
开始画面 54
回放相机的效果 54
重定向 54
摄像机抖动效果 54
相机的摇动效果 55
视域/景深 55
脚本机制 55
剪辑操作 56
镜头选取 57
取景/合成操作 57
场景转换 57
跳转镜头 58
淡入/淡出转换 58
圈入/圈出转换 58
划接 58
视口转换 59
工具 59
本章小结 60
第2部分:设计原理 63
第4章 相机设计 63
交互式2D相机系统 63
期望特征 64
确定视见内容 65
2D电影相机系统 66
交互式3D相机系统 67
透视投影 68
平行投影 68
3D电影视频相机系统 70
2.5D相机系统 71
游戏设备 71
宽高比 72
调整尺寸 72
镜头的摇动和扫描 72
拉伸效果 72
相机设计 72
游戏以及技术需求 73
设计概览 73
考察高层设计目标 73
评估玩家角色行为 74
确定场景环境范围 74
定义基本的相机行为 74
特定区域范围内的场景需求 74
相机系统的技术评估 75
游戏设计原则 78
本章小结 80
第5章 相机设计方案 81
基于游戏类型的相机设计方案 81
第一人称射击/冒险类游戏 81
相机的定位方案 81
角色类/动作类冒险游戏 84
3D平台 86
角色饰演类游戏/在线多人游戏 88
滚屏机制 88
竞技类游戏 89
单玩家竞技类游戏 90
双人或4人竞技类游戏 90
团队竞技类游戏 90
室内场地类游戏 91
室外竞技类游戏 91
抽象功能 92
赛车类游戏 92
地面(或表面)机动设备 93
即时战略游戏 93
飞行模拟 94
具有真实效果的飞行模型 94
非真实相机模型 95
人工水平仪 95
运动感 95
冒险类游戏 95
拼图类/Party类/棋盘类游戏 96
格斗类游戏/近战游戏 97
多玩家相机处理方案 98
单屏技术 99
分屏技术 100
全屏与分屏之间的转换 101
分屏与全屏之间的转换 101
本章小结 102
第6章 相机脚本 103
相机脚本概述 103
脚本类型 103
脚本语言 104
基于文本的脚本语言 104
通用编程语言 104
自定义脚本语言 105
有限状态机 106
可视化脚本语言 107
脚本语言中的问题 108
事件消息机制 108
混合脚本方案 110
脚本对象 110
对象关系 111
相机脚本机制 115
相机脚本方法 115
相机控制 116
第三人称脚本机制 116
第一人称脚本机制 116
非交互式电影脚本 118
经验方法 118
本章小结 121
第3部分:相机工程 125
第7章 位置和方向 125
坐标方案 125
世界空间 125
相机(视见)空间 125
屏幕空间 126
局部(角色)空间 126
对象相关 126
期望位置 126
第一人称相机定位方式 127
第三人称相机定位方式 127
期望位置的确定方法 128
静态相机 129
伺服/跟踪操作 130
基于世界坐标系统的偏移量 130
基于世界坐标系统的角偏移量 131
基于世界对象 131
局部偏移量 132
局部角偏移量 132
相对于角色的偏移量 132
相对于角色的角偏移量 133
相对于对象的偏移量 133
路径 134
路径类型 135
线性类型 135
圆形/椭圆形/螺旋形路径 135
样条 136
方向 144
方向表现方法 145
欧拉角 146
转换矩阵 146
轴角 146
四元数 147
期望方向的确定方案 147
固定方向 147
跟踪目标对象或位置 148
视见偏移相对于角色的偏移量 148
锁定视点位置 149
目标对象位置预测 149
对象取景 150
视见位置的确定方案 150
美学条件与游戏体验需求 150
回放相机 151
视域 151
角色的空闲状态 151
自动方向操控 152
第一人称相机与第三人称相机之间的转换 153
第三人称相机与第一人称相机之间的转换 153
重定向方案 153
旋转操作的应用 154
均匀角速度 154
加速和减速 154
角速度阻尼效果 154
全视角阻尼效果 154
降低突然转向的发生几率 155
第三人称自由视角 158
玩家移动 158
自由视角定向方案 158
常见方向问题 159
万向节死锁 159
垂直转向 159
倾斜操作 160
方向噪声 160
快速方向变化 160
玩家角色的视锥体剪裁 161
本章小结 161
第8章 漫游和遮挡技术 163
将相机视为AI游戏对象 163
漫游技术 164
动态漫游技术 164
预定义漫游技术 168
流场 171
影响力地图 171
势场 171
环境遮挡 172
如何看待环境遮挡问题 172
场景遮挡确定方案 173
光线投射技术 173
空间体投射 174
渲染技术 174
遮挡预测方案 175
预测视点位置 175
视线 175
处理视线问题 176
预测方案 176
图形变化 176
获取期望位置 177
瞬移/跳转操作 177
保持控制方向 177
生成路径 177
跟随角色移动 178
凸起地形 178
回避纵向柱状体 179
预计算方案 179
防止丢失LOS 179
瞬间移动 180
淡化遮挡几何体或对象 180
无须渲染遮挡几何体或对象 180
渲染图形元素且忽略遮挡现象 180
可见性预计算方案 180
安全检测 181
安全检测方案 182
本章小结 182
第9章 移动和碰撞 183
相机移动序列 183
人物移动 184
第一人称相机 184
第三人称相机 184
移动方案 186
瞬间移动 186
锁定相机 186
比例控制器 187
物理模拟 188
弹性机制(弹簧) 189
PID控制器 189
圆周运动 190
插值计算 191
平滑效果和阻尼技术 192
阻尼技术 192
移动过滤器 193
移动约束条件 194
纵向移动约束条件 194
渲染几何体的接近程度 195
距离约束条件 195
平面约束条件 196
表面约束条件 196
空间约束条件 196
玩家操控方式 197
相机位置的控制方案 197
观察相机 198
相机移动确认方案 198
位置控制约束条件 199
相机位置控制方案 200
相机方向控制 201
第一人称相机 201
第三人称相机 201
相机的自动定位和定向方案 202
基于玩家控制器的反馈 202
基于游戏体验需求的反馈 203
调试相机的操控方式 203
相机碰撞 204
相机碰撞的重要性 204
碰撞检测的必要性 205
碰撞确定方案 206
对象碰撞 206
环境碰撞 206
碰撞图元 207
碰撞几何体设计 207
避免紧凑型封闭空间 208
向相机提供足够的空间 208
陡峭的阶梯 208
突兀地形 208
低矮的天花板 208
入口 208
采用简单的碰撞网格 209
针对相机的独立碰撞网格 209
圆角对象 209
碰撞决定方案 209
保持静止 209
部分移动 210
移动变换 210
镜头跳转 210
禁用碰撞检测 210
避免相机碰撞 211
玩家的未来位置 212
预测潜在碰撞 212
碰撞预测 213
对象排斥 213
朝向相机移动 214
第10章 相机数学知识 215
基础相机数学 215
相机位置 215
相机方向 215
相机移动 216
渲染操作 216
通用相机数学 216
相机问题以及修正方案 216
常见数值技术 216
相机的视见位置 217
避免倾斜旋转 217
降低突然转向的发生几率 218
世界空间与屏幕空间之间的转换 218
四元数 221
指数曲线 222
比例曲线 222
球体线性插值计算 222
超越函数 223
分段样条曲线 223
弹性机制(弹簧) 223
数字滤波器 224
低通滤波器 224
高通滤波器 225
带通滤波器 225
有限脉冲反应滤波器 225
无限脉冲反应滤波器 226
样条曲线 227
相机样条应用 227
三次多项式 228
样条类型 228
线性类型 229
分段式Hermite曲线 229
Catmull-Rom样条曲线 230
圆角Catmull-Rom样条曲线 231
Kochanek-Bartels样条曲线 232
Bezier曲线 232
均匀三次B样条 234
非均匀有理B样条 234
连续性 235
样条定义 235
样条计算 235
控制点生成方式 236
参数化弧长 236
全部样条长度 236
最近位置 236
样条编辑 237
插值计算 237
插值的含义 238
相机属性插值计算 238
位置插值计算 239
方向插值计算 239
方向插值特征 241
侧旋插值计算 242
FOV插值计算 242
视口插值计算 243
玩家控制插值计算 243
第一人称相机 244
第三人称相机 244
插值选择方案 245
线性插值 245
源值 245
目标值 246
插值算法 246
分段式插值 246
插值方案 247
线性时间插值 247
参数函数 248
球体线性插值计算 248
潜在插值问题 248
美学问题 248
数值问题 250
插值中断 251
切换过程 251
切换过程中的位置数据 251
切换过程中的方向数据 252
相机数学问题 252
浮点精确度 252
使用Epsilon值 252
编译器偏差 253
硬件FPU偏差 253
向量标准化操作 253
矩阵累积浮点误差 253
定期修复数值 253
第11章 相机实现方案 255
游戏引擎体系结构 255
游戏更新循环结构 255
游戏系统管理器 256
时间间隔 257
输入处理机制 257
相机系统体系结构 257
视口管理器 258
视口 259
视口切换 259
渲染管理器 260
相机管理器 260
相机更新循环结构 261
提示管理器 261
震动管理器 262
相机震动操作 262
隆声/力反馈效果控制器 262
游戏相机 263
继承的相机行为 263
基于组件的相机行为 264
电影视频相机 264
调试型相机 265
脚本机制实现方案 265
相机脚本对象 265
相机提示对象 265
触发体 266
渲染/光照效果 266
消息延迟 266
序列事件计时器 266
通用路径 267
脚本逻辑排序 267
消息机制 267
优先权 267
插值计算 268
性能问题 268
分摊机制 268
预处理机制 269
开发工具 269
场景编辑器 269
相机碰撞网格 270
相机调试技术 270
交互式调试技术 271
独立型调试相机 271
控制游戏刷新率 272
通用相机状态 272
相机属性的视觉表现 272
属性滞后现象 273
移动约束条件 273
视线 273
基于行为的渲染操作 274
脚本调试 274
数据日志 274
游戏回放机制 275
本章小结 275
参考文献 277
AI和漫游技术 277
电影技术 277
相机设计 278
游戏设计 278
图形学和渲染技术 279
数学 279
其他资源 280
在线资源源 280
附录A术语表 281
附录B 辅助材料 291
视觉感知 291
移动敏感度 291
刷新敏感度 291
色彩敏感度 292
深度感 292