读《3D 游戏与计算机图形学中的数学方法》第3版

 借的书,没有读完就要还了。

第1章,渲染管线

以 openGL 图形库为基础,概要介绍了图形渲染管线。没有对涉及的理论进行详细的数学论述,写在其他章里了。
顶点变换:顶点坐标变换,空间中的物体需要使用三维坐标来描述,而显示器是一个二维的表面,所以在屏幕上渲染一个三维场景时,首先需要将描述空间物体的三维坐标变换为二维坐标(世界坐标到屏幕坐标),这在Direct3D中称为顶点坐标变换。 顶点坐标变换通常通过矩阵来完成。
在图形学渲染管线中,一个顶点坐标,大概要经历局部坐标系、世界坐标系、相机坐标系、裁剪坐标系,最后到窗口坐标系,显示在屏幕上。
1,局部空间->世界空间
这一变换过程,主要是将模型放置在世界空间中,进行一定的缩放、旋转或平移。这一步比较简单,只要将相应的矩阵作用到模型的局部空间坐标即可。
比如,对模型缩放 [公式] ,然后绕Z轴旋转 [公式] 度,再进行 [公式] 的平移。注意,这里的变换顺序是不能变的,即要先进行缩放,再进行旋转,最后进行平移。据此,我们可以构建模型变换矩阵。
读《3D 游戏与计算机图形学中的数学方法》第3版
2,世界空间->相机空间
首先定义一下相机:
  • 坐标为 
  • 观察方向 
  • 向上方向 
示意图:
读《3D 游戏与计算机图形学中的数学方法》第3版
有一个性质注意一下:当相机和相机“看“到的物体一起变换时,相机”看“到的内容是不变的。这样,可以将相机的坐标移动到世界坐标的原点,向上方向对齐世界坐标的Y轴,观察方向对齐世界坐标的-Z轴。然后,对物体进行相同的变换即可。
在数学上,这个过程大概这样:
  • 将相机移动到坐标原点
  • 旋转观察方向  到-Z轴
  • 旋转向上方向  到Y轴
  • 旋转(  )到X轴
大体分为两步:先位移,后旋转。即 
读《3D 游戏与计算机图形学中的数学方法》第3版
 。
 
3,相机空间->裁剪空间
在一个顶点着色器运行的最后,期望所有的坐标都能落在一个特定的范围内,且任何在这个范围之外的点都应该被裁剪掉(Clipped)。被裁剪掉的坐标就会被忽略,所以剩下的坐标就将变为屏幕上可见的片段。这也就是裁剪空间(Clip Space)名字的由来。
因为将所有可见的坐标都指定在-1.0到1.0的范围内不是很直观,所以我们会指定自己的坐标集(Coordinate Set)并将它变换回标准化设备坐标系。
由投影矩阵创建的观察箱(Viewing Box)被称为平截头体(Frustum),每个出现在平截头体范围内的坐标都会最终出现在用户的屏幕上。将特定范围内的坐标转化到标准化设备坐标系的过程(而且它很容易被映射到2D观察空间坐标)被称之为投影(Projection),因为使用投影矩阵能将3D坐标投影(Project)到很容易映射到2D的标准化设备坐标系中。
这里要注意一下,OpenGL是右手坐标系的,但是在NDC中,是左手坐标系的,这里要特别注意!!!
相机空间转换到裁剪空间,有需要用到投影变换。有两种投影变换:正交投影和透视投影。下面分别介绍一下。
4,正交投影
5,透视投影
基本图元光栅化:
OpenGL 库定义的 10 种基本图形元素:
线段
线串
线环
三角形
三角形带
三角形扇
四边形
四边形带
多边形

第2章,向量

通过对向量及其性质的全面回顾开始本书中数学知识的介绍。
向量是 3D 计算机图形学的重要基础,全书大量应用了向量内积和外积一类的向量运算。
第3章,矩阵
讨论线性方程组的矩阵,对矩阵的特征向量和对角化等高级论题也进行了分析。
第4章,坐标变换
矩阵在变换中的应用方法,包括平移,旋转和缩放。
介绍四维齐次坐标概念,应用于 3D 图形系统坐标空间之间的变换。
第5章,3D 引擎中的几何学
3D 空间中的直线和平面。介绍视锥的概念及其与虚拟相机之间的关系。
透视校正插值投影矩阵
第6章,光线跟踪
第7章,光照与着色
第8章,可见性判断
第9章,多边形技术
第10章,阴影
第11章,曲线与曲面
第12章,碰撞检测
第13章,线性物理运动
第14章,旋转物理运动
第15章,流体与织物仿真
第16章,数值方法
附录A,复数
附录B,三角函数的引用
附录C,坐标系
附录D,泰勒级数
 
参考:
《渲染管线中的顶点变换》bzyzhang