欢迎光临
我们一直在努力

闫令琪Game101Lecture 04 Transformation Cont,game101闫令琪

如果对矩阵进行顺时针旋转 θ \theta θ角度,那应该怎么样表示。还是使用特殊值带入可以得到。我们发现更好是逆时针旋转 θ \theta θ角度的逆矩阵。在数学上,一个矩阵的逆矩阵恰好是该矩阵的话,我们称之为正交矩阵。

概述

3D 变换观测变换 视图/相机 变换投影变换 正交投影透视投影

3D 变换

如果绕着坐标轴旋转,变换如图所示。注意绕 y y y轴旋转的话,有点不一样。原因是之前说叉乘确定方向是右手定则, x x x 与 z z z 叉乘得到的向量与 y y y轴方向相反,使用 y y y轴的变换矩阵比较特殊( y y y是由 z ? \vec{z} z 叉乘 x ? \vec{x} x 得到)。

绕着一个坐标轴旋转,其所属坐标保存不变,其他坐标转换为2D旋转模型。

一般旋转

我们能否使用绕轴旋转的组合得到一般旋转?

一般旋转通用公式:

公式证明过程:

和2D变换相似,我们的旋转是默认原点旋转。首先我们讲其平移到原点,然后进行旋转,然后再平移到目标位置。拓展:老师建议学有余力的同学可以考虑了解四元数知识

View/ Camera Transfomation

如何完成视图变换

首先定义相机

位置朝向旋转方向

关键观察

通过 M v i e w M_{view} Mview?矩阵改变相机[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09YUAyn2-1634820015446)(高级计算机图形学二.assets/image-20211021105725142.png)]

首先通过平移移动到原点坐标,变换为 T v i e w T_{view} Tview?;把 t t t轴放置到 y y y轴,把 g g g轴放置到 ? z -z ?z轴,但是直接映射不太好写,如果放过来,把 x 、 y 、 z x、y、z x、y、z轴发过来的话,比较方便,然后进行逆变换:

旋转变换矩阵是正交矩阵,其逆矩阵为它的转置矩阵。

Projection transformation

有两种投影,一一种是正交投影,一种是透视投影

正交投影

把 Z Z Z扔掉,这所有的平面都在 x x x y y y 平面上,然后把结果变成[-1,1]范围。

问题: 如何判断前后面?

如何把物体映射到正交平面

转换为矩阵变换的表示,先平移再调整规格:

因为选定的坐标轴使用右手定则,所以远近的方面恰好相反。

OpenGL使用的 Z Z Z轴和我们这里假定的相反,所以出现相反的结果是合理现象

视图投影——使用最广泛的投影

在同一平面内,两个平行线不会相交。但是在透视投影中,平行线是会相交的。

如何做视图投影

挤压Frustum挤压成Cuboid

给定 y y y变化可以得知变换,最后推广到 x 、 z x、z x、z

根据 x 、 y 、 z x、y、z x、y、z如何变换,可以得到矩阵 M p e r s p ? > o r t h o M_{persp->ortho} Mpersp?>ortho? ,只剩下第三行不知道。

近的平面上任何点不会变换,远的平面 z z z轴的点不会变换

上图中,在近端 x , y x,y x,y保持不变。所以 ( 0 ?? 0 ?? A ? B ) (0\space \space 0 \space \space A \space B) (0??0??A?B)

列方程解出 A ? B A\space B A?B。这一步完成了解压操作,把平面挤压成了正交投影;之后进行正交变换。这样的结果可以得到最终变换。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。