
目的经常遇到View矩阵的构造,现在记下来彻底弄明白吧
参考: https://gameinstitute.qq.com/community/detail/117006
左右手坐标系:https://www.3dgep.com/3d-math-primer-for-game-programmers/
模型和视图变换阶段分为模型变换和视图变换。模型变换的目的是将模型变换到适合渲染的空间当中,而视图变换的目的是将摄像机放置于坐标原点,方便后续步骤的操作。 (浅墨 Real-Time Renderding提纲)
所谓空间坐标其实就是以什么为笛卡尔坐标系,为参考系
相机的话是以相机朝向为-Z,上方为Y,右方为X
众所周知,世界空间才是我们所熟知的空间,所以图形学其实是希望所有空间都转到world空间来理解,我的理解是这样的,P代表位置,TRS代表 transform rotation scale
P w o r l d = T R S ∗ P l o c a l P_{world} = TRS*P_{local} Pworld=TRS∗Plocal
world到view同理可得,任何一个坐标空间都可以转到world里,那么
(我们反过来推,Pview现在是未知的,如果假设Pview是已知的话)
P
w
o
r
l
d
=
T
R
S
∗
P
v
i
e
w
P_{world}= TRS * P_{view}
Pworld=TRS∗Pview
两边同时左乘TRS的逆
P
v
i
e
w
=
(
T
R
S
)
−
1
∗
P
w
o
r
l
d
P_{view}= (TRS )^{-1} * P_{world}
Pview=(TRS)−1∗Pworld
下面暂时不考虑T和S
其实就是求旋转矩阵R的逆
而这个旋转矩阵在Unity里恰好就是相机点的transform的三个方向(right, up forawrd) 合成的
注意:别的物体的方向,和相机的方向不是一回事,别混淆
补充理解
I
=
V
M
I = VM
I=VM
显然
V
=
M
−
1
V = M^{-1}
V=M−1
所以相机的矩阵的三行的耆那三个分量就对应着,摄像机的三个方向。其中Unity摄像机是在右手坐标系,为了X和Y对齐,所以Z轴是反过来的