百人計劃圖形1.2.3——MVP矩陣運算
學(xué)習(xí)變換矩陣的目的在于:
·將3D物體轉(zhuǎn)化到2D平面(3D游戲中顯示在2D屏幕上,對模型的頂點坐標(biāo)進(jìn)行一系列的矩陣變換)
·為各個空間的運用做準(zhǔn)備
????MVP矩陣代表著什么?
MVP矩陣分別是模型(Model)、觀察(View)、投影(Projection)三個矩陣。我們的頂點坐標(biāo)起始于局部空間(Local Space),在這里它稱為局部坐標(biāo)(Local Coordinate),它在之后會變?yōu)槭澜缱鴺?biāo)(World Coordinate),觀察坐標(biāo)(View Coordinate),裁剪坐標(biāo)(Clip Coordinate),并最后以屏幕坐標(biāo)(Screen Coordinate)的形式結(jié)束。


3Dmax中x軸代表物體的左右,y軸代表物體的前后,z軸代表物體的上下(右手坐標(biāo)系)——左圖
unity中z軸朝向的是物體的正方向,x軸代表物體的左右,y軸代表的是正方向(左手坐標(biāo)系)——右圖


視覺空間——以攝像機為中心的空間坐標(biāo)系

理解后的流程如下?

注:需先取反然后變換矩陣才能得到想要的矩陣

p矩陣:將視覺空間下的頂點坐標(biāo)轉(zhuǎn)換為裁剪空間下(判斷坐標(biāo)是否在“屏幕中”,不在的點剔除)的頂點坐標(biāo)

兩種投影分別對應(yīng)不同的p矩陣


Near代表攝像機的近裁平面、Far代表攝像機的遠(yuǎn)裁平面、FOV為攝像機的可視范圍
Near·ClipPlaneHeight?=?2?*?Near?*?tan(FOV/2)——計算近裁平面高度
計算遠(yuǎn)裁平面高度同理
size為可視范圍的距離
width為Aspect *?ClipPlaneHeight

近裁平面高度為2*size,遠(yuǎn)裁一致


世界uv,熟悉的shader代碼

