Github TinyRenderer渲染器课程实践记录: 移动摄像机 / 相机变换
Abstract
上一节:从正交到透视
用相机变换来移动视角;另外本文将应用 Gouraud Shading高洛德着色(回忆之前的代码,
光照是基于Flat Shading,而纹理插值是Gouraud Shading)。
另外,通常也把相机变换(Camera Transfomation)叫做(View Transfomation)。
Reference :
我在浅谈线性变换此文中的“三维坐标系坐标空间转换”小节详细讨论了三维空间坐标空间互相转换的技术。当应用到相机变换时,只需构造属于相机的 \(\bf{uvw}\) 坐标系就可以了。
现在规定相机注释的方向向量为 \(\bf{g}\),相机朝天的向量为 \(\bf{t}\)。由于相机的 \(\bf{uvw}\) 系同为右手系,则 \(\bf{w}\) 应为注视方向的反方向。
则有:
-
\(\bf{w} = -\bf{g}\)
-
\(\bf{u} = \bf{t}.\tt{cross}(\bf{w})\)
-
\(\bf{v} = \bf{w}.\tt{cross}(\bf{u})\)
再将算好的 \(\bf{uvw}\) 放入文中算出的矩阵即可得到相应相机变换矩阵。
渲染
现在可以自由切换视角了