MVP矩阵

MVP矩阵:

MVP矩阵分别是模型(Model)、观察(View)、投影(Projection) 三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。

MVP矩阵_第1张图片

M:模型空间(以自身为中心)—>世界空间(以世界为中心)

对应依次进行矩阵变换:

(1)缩放

(2)旋转

(3)平移MVP矩阵_第2张图片

V:世界空间—>视觉空间(以摄像机为中心)

从世界空间变换到摄像机空间—>平移整个观察空间,摄像机原点和世界坐标原点重合,坐标轴重合—>摄像机是在世界空间中是先旋转,再平移—>为了让摄像机与世界坐标重合,逆变换

对应的矩阵变换:

(1)平移

(2)旋转

(3)z分量取反(摄像机默认朝向是-z)

MVP矩阵_第3张图片

P:视觉空间—>裁剪空间

1.不是真正的投影,为投影做准备。

2.目的:判断顶点是否在可见范围内。

3.P矩阵:对x,y,z分 量进行缩放,用w分量做范围值。如果x,y,z都在w范围内,那么该点在裁剪空间内。

透视投影:

MVP矩阵_第4张图片MVP矩阵_第5张图片MVP矩阵_第6张图片MVP矩阵_第7张图片

正交投影:

MVP矩阵_第8张图片

nearClipPlaneHeight=2:Size

farClipPlaneHeight =nearClipPlaneHeight

nearClipPlaneWidth =Aspect nearClipPlaneHeight

farClipPlaneWidth = nearClipPlane Width

MVP矩阵_第9张图片

OS = 模型原点为坐标系原点的空间坐标系 = 模型空间
WS = 世界空间为坐标原点的空间坐标系 = 世界空间
VS = 摄像机为坐标系原点的空间坐标系 = 视觉空间
CS = 裁剪空间 确定像素是否位于可见范围内
SS = 屏幕空间 显示平面 根据平台不同 坐标原点不同 分别位于左下或者左上 OPENGL屏幕坐标系原点在左下角向上向右增加,D3D屏幕坐标系原点在左上角向下向右增加。
WS = OS * M矩阵
VS = WS * V矩阵
CS = VS * P矩阵
CS得到的坐标经过齐次除法(透视除法)和映射输出 得到SS的二维坐标 (一般unity自动在底层进行 所以我们只要得到裁剪空间内的坐标即可)

【五个空间中 只有观察空间(VS)是右手坐标系 剩余 都是左手坐标系】

你可能感兴趣的:(TA,线性代数)