《计算机图形学:基于3D图形开发技术》详细阐述了与计算机游戏设计相关的基本解决方案及相应的数据结构和法,主要包括游戏模型、顶点处理机制、光栅化操作、片元处理和输出合并、光照着色、参数曲线和表面、着色器模型、图像纹理、凹凸贴图、高级纹理操作、角色动画以及物理模拟等内容。此外,《计算机图形学:基于3D图形开发技术》还提供了相应代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。
《计算机图形学:基于3D图形开发技术》适合作为高等院校计算机及相关专业的教材,也可作为相关开发人员的自学教材和参考手册。
大学的计算机图形学课程主要集中于动画和实时渲染,然而很少有教材可完美地体现交互式图形学特征,并在理论与实践方面做到较好的平衡且篇幅适中。本书涵盖了计算机图形学中的基础知识,可在一定程度上满足上述要求。本书适用于计算机图形学或游戏程序设计专业高年级本科课程以及初级研究生课程。
除此之外,本书还适用于游戏开发人员。此类人员具备图形 API以及着色器编程经验,但缺乏一定的 3D图形学背景知识。目前,市场上充斥着大量手册式的程序设计书籍。对于游戏开发人员而言,这一类书籍并未提供应有的数学知识。本书假设读者了解诸如向量和矩阵等较为基础的数学内容,进而将计算机图形学的基础理论和实践经验相结合。
作为交互式图形学的核心内容, GPU始终在不断地发展。为此,本书将围绕 GPU程序设计进行组织。 GPU可划分为可编程阶段和硬件阶段。针对可编程阶段,本书将阐述各种算法;对于硬件阶段,本书也将对必要知识加以分析。
本书的组织方式和讲述内容均经过精心设计,以使读者深入理解交互式图形学的核心内容。相关章节提供了大量的 3D知识,以帮助读者快速地掌握相对复杂的知识点。同时,本书还在提示部分讲述了理论或技术细节,并涵盖了相应的可选章节(采用星号标记)以供读者阅读。当然,读者也可忽略这一部分内容,且不会对后续章节的内容产生任何影响。
Direct3D和OpenGL是两种较为知名的图形 API,本书将会弱化 API的归属特征,并在多处提供对应的示例代码,进而使读者深入理解交互式图形算法的实现方式。
本书辅助网站地址为 http://media.korea.ac.kr/book,其中包含 PowerPoint文件格式的教学备案以及视频剪辑在内的其他辅助资源。特别地,教学备案中包含了本书的全部图像。
致谢
本书源自 Nexon Corporation和Korea Creative Content Agency所开发的项目,来自 Nexon Corporation的众多人员均对本书的出版有所贡献。 Jubok Kim在本书的筹备阶段即提出了许多中肯建议,并分别对本书的 Alpha和Beta版本作了校对。 Seungwon Han提供了本书所需的 3D模型以及其他艺术设计工作。另外, Hyunwoo Ki、Joongwon Gouk、Minsun Song也提供了颇具价值的图像。
同时,来自 Korea University的相关人员也对本书的编写工作给予了大力的支持。例如,本书的视觉内容均来自 Seungjik Lee,他在艺术设计和程序设计方面颇具天分。感谢 Nguyen Trung Kien博士,在他的帮助之下,与纹理相关的 3章内容得以顺利完成。 Hanyoung Jang博士对着色模型以及物理模拟等相关章节也提出了宝贵的意见。在 Kiwon Um的帮助下,笔者对全书章节进行了重新整理。同时,还要感谢来自 3D Interactive Media Lab的学生们,他们是 Dong-young Kim、Hyun Ju Shin、YoungBeom Kim、EunSeok Han、 GwangHyun Park、Seungho Baek和Junhoo Park。本书内容源自 Korea University和Carnegie Mellon University的授课内容,在此也要对学生们的反馈信息表示感谢。
Ewha Womans University的Young J. Kim教授、 Soongsil University的Kyoung-Su教授、 Kwangwoon University的Kang Hoon Lee教授、 University of Florida的Jorg Peters教授以及 Crytek的Dongwook Ha教授阅读了本书的手稿并提出了诸多宝贵的建议和意见,在此深表谢意。此外,还要感谢本书编辑 ——来自 CRC Press的Li-Ming Leong,在他的大力支持下,本书方得以顺利出版。
最后,还要感谢 Kyung-Ok、Jeehee和Jihoon,感谢你们的陪伴,我爱你们。
第1章 游戏模型
1.1 游戏制作流程
1.2 多边形网格
1.2.1 创建多边形网格
1.2.2 多边形网格的表达方式
1.2.3 表面法线
1.3 模型导出和导入
1.4 坐标系统
本章练习
第2章 顶点处理机制
2.1 世界转换
2.1.1 仿射转换以及齐次坐标
2.1.2 世界矩阵
2.1.3 欧拉转换
2.1.4 表面法线的转换
2.2 视见转换
2.2.1 相机空间
2.2.2 空间转换和视见矩阵
2.3 逐顶点光照
2.4 投影转换
2.4.1 视见体
2.4.2 投影矩阵
2.4.3 投影矩阵的推导过程
本章练习
第3章 光栅化操作
3.1 剪裁操作
3.2 透视除法
3.3 背面剔除操作
3.4 再访坐标系统+
3.4.1 3dsMax至OpenGL-翻转坐标轴
3.4.2 0penGL至Direct3D-反射
3.4.3 0penGL至Direct3D-顶点重排列
3.5 视口转换
3.6 扫描转换
3.7 应用:对象拾取操作
3.7.1 计算世界空间中的光线
3.7.2 光线对象相交测试
本章练习
第4章 片元处理和输出合并
4.1 纹理操作
4.1.1 纹理坐标
4.1.2 表面参数化操作
4.1.3 纹理坐标与纹素地址
4.2 输出合并
4.2.1 z缓冲区机制
4.2.2 Alpha混合
4.3 z剔除操作
4.3.1 单元(tile)剔除
4.3.2 预写Z值
本章练习
第5章 光照和着色
5.1 Phong光照模型
5.1.1 漫反射
5.1.2 镜面反射
……
第6章 参数曲线和表面
第7章 着色器模型
第8章 图像纹理
第9章 凹凸贴图
第10章 高级纹理操作
第11章 角色动画
第12章 物理模拟