3D数学基础 坐标空间及转换

1.概念

        在游戏开发中,我们经常需要明确几个坐标空间:

              (1)切线空间:通过法线贴图中两个像素之间的变化值求出的斜率得出的方向向量,即切线、副切线为x、y轴,法线为z                  轴的坐标空间。

              (2)模型空间:以模型中心点为原点,模型右边的方向向量为x轴,模型前面的方向向量为z轴,模型上面的方向向量为y                  轴的坐标空间。

              (3)世界空间:最大的父坐标空间,通常将所有其他坐标系转化成同一个世界空间或将世界空间坐标作为中间空间进行                 转换,从而方便进行运算

              (4)观察空间:即以相机自身出发的一个空间坐标系,这决定了我们所使用的的视角

              (5)裁剪空间:方便对渲染图元进行裁剪,完全位于这块空间内部的图元将会被保留,完全位于这块空间外部的图元将                  会被剔除,而与这块空间边界相交的图元将会被裁剪。

              (6)屏幕空间:进行裁剪完之后,将视椎体投影到的空间,即屏幕空间

 

2.空间变换矩阵原理

        当给定一个坐标空间以及其中一点(a,b,c)时,我们需要通过将坐标原点沿x轴移动a个单位,往y轴移动b个单位,往z轴移动c个单位。

        同理,我们已知子坐标空间C的三个坐标轴在父空间下表示为x_{c}y_{c}z_{c},以及其原点坐标O_{c},当给定一个子坐标空间中一点A_{c}=(a,b,c),则A_{c}在世界空间中的坐标A_{p}为:

        A_{p}=O_{c}+ax_{c}+by_{c}+cz_{c}

        即:=(x_{O_{c}},y_{O_{c}},z_{O_{c}})+a(x_{x_{c}},y_{x_{c}},z_{x_{c}})+c(x_{y_{c}},y_{y_{c}},z_{y_{c}})+c(x_{z_{c}},y_{z_{c}},z_{z_{c}})

              =(x_{O_{c}},y_{O_{c}},z_{O_{c}})+\begin{bmatrix} x_{x_{c}} &x_{y_c} &x_{z_{c}} \\ y_{x_c}& y_{y_c} &y_{z_{c}} \\ z_{x_c}& z_{y_c}& z_{z_{c}} \end{bmatrix}\begin{bmatrix} a\\ b\\ c \end{bmatrix}

        上式其实可以看做一个位移矩阵乘于后面的矩阵

        即:=\begin{bmatrix} 1 &0 & 0 & x_O_c\\ 0& 1 & 0 & y_O_c\\ 0& 0 & 1 & z_O_c\\ 0& 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x_{x_{c}} &x_{y_c} &x_{z_{c}} &0\\ y_{x_c}& y_{y_c} &y_{z_{c}} &0\\ z_{x_c}& z_{y_c}& z_{z_{c}} &0\\0&0&0&1\end{bmatrix}\begin{bmatrix} a\\ b\\ c\\1 \end{bmatrix}

              =\begin{bmatrix} x_{x_{c}} &x_{y_c} &x_{z_{c}} &x_O_c\\ y_{x_c}& y_{y_c} &y_{z_{c}} &y_O_c\\ z_{x_c}& z_{y_c}& z_{z_{c}} &z_O_c\\0&0&0&1\end{bmatrix}\begin{bmatrix} a\\ b\\ c\\1 \end{bmatrix}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值