Games101图形学学习总结01
变换(Transformation)
Transformation
将一个实体(point,vector,color等),按照规定的方式转换自身的一个过程。其中包括一些常见的平移(ranslation)、旋转(rotation)、缩放(scale)、反射(reflection)和错切变换(shear)等基本变换操作。
反射:
简单理解就好比求一个笛卡尔坐标系上的点沿着某个轴的反射点,类似光的入射光反射光。
错切变换:
沿某一方向,按照一定比例对图形的每个点到某条平行于该方向的直线的有向距离做放缩得到的平行图形
一、模型变换(Modeling)
定义:变换被照物体的位置,大小,角度包含:
- translation(平移)
- rotation(旋转)
- scaling(缩放)
其中缩放和旋转变换又称线性变换,将线性变换和平移变换结合起来,就得到仿射变换:
Affine map = translation + linear map;
二、观测(Viewing)变换
1.view/camer(视图/相机)变换
视图变换:类似一个将相机放置三角架和调整被拍物体位置及角度的过程。
要做到"放置"好一个相机首先我们需要对相机的以下几个向量进行定义。
- position : 即我的相机摆在什么位置;
- look-at / gaze direction : 即相机的朝向;
- up direction : 表示相机镜头摆放方向,比如我们可以把相机横着拍,也可以正着拍;
然后相机平移到原点,然后再做线性变化定义世界坐标系。
2.投影(projection)变化
投影变换有两种实现方法,分别是正交投影和透视投影
- 正交(Orthographic )投影
对于正交投影而言,结合下图来理解,相机位置放在原点,朝着-Z方向拍摄,相机正向摆放,即沿着Y方向,那么投影之后得到的东西在X-Y平面上,换句话说就是把Z轴丢掉了。不过有一点需要注意的是,投影之后一般还会把投影图像缩放成一个边长为2的正方形,即[-1,1]^2,这种做法是约定俗成的,另外也是方便后面的操作。
在阵脚投影中实体Z值的大小,表示物体里相机的远近程度。
- 透视(Perspective )投影
透视投影是稍复杂的投影方法,经过透视投影的物体附带了一些"深度信息"即一种距离感,投影出的物体更接近我们显示生活中说看到的。
为了方便理解,我们可以把这个投影拆成两步:
1. 我们先将远平面以及中间的那些平面做挤压(squish)(可以想象成把平面的四个顶点往平面的中心点靠拢,使得边长和*面长度相等);注意挤压是对所有平面所做的操作。
完成这一步我们需要的挤压需要满足一些条件:
- *面上任何一个点永远不变。
- 远平面挤压前后的Z值都保持为f不变
- 远平面的中心点X,Y,Z坐标保持不变
2. 之后我们再对挤压后的平面再做正交投影即可。
文本内容摘自:原文
总结
以上是个人和网络上的一些有关图形学的模型变换和视图变换的一点小小总结,如有错解还请各位大佬多多指点。