關於斜視椎體的矩陣上解釋

今天在查找斜視椎體是怎麼回事的時候,看了一下unity聖典的官方介紹,鏈接是:http://game.ceeger.com/Manual/ObliqueFrustum.html

我發現這裏解釋的不是很清楚,核心代碼爲

function SetObliqueness(horizObl: float, vertObl: float;) {
	var mat: Matrix4x4 = camera.projectionMatrix;
	mat[0, 2] = horizObl;
	mat[1, 2] = vertObl;
	camera.projectionMatrix = mat;
}
上面的第三第四行解釋的糊里糊塗,其實這是修改了投影矩陣,投影矩陣並不是只是簡簡單單的投影變換而已,它的完整形態是這樣的


可以看到mat[0, 2]就是(r + l/)(r - l),mat[1, 2]就是(t + b/)(t - b),其中的座標(l,t)代表了視椎體的近平面的左上角,座標(r,b)代表了視椎體近平面的右下角,而一般情況下l是等於-r的,因爲視椎體左右對稱,同理t = -b;但是我們如果是需要斜視椎體的話,那麼左右或者上下九不對稱了,所以修改這個矩陣的這兩個值

發佈了39 篇原創文章 · 獲贊 17 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章