2016-05-26 50 views
-1

##後來我看到有人倒置投影矩陣來使用webgl編程繪製他們的3D場景,我不知道將投影矩陣倒轉到投影現場。我不知道你什麼時候反轉一個projectionMatrix發生什麼,什麼時候應該使用在opengl編程中反轉投影矩陣

mat4.perspective(perspectiveMatrix, Math.PI/2, ratio, 0.1, 10); 
mat4.invert(projectionInverse, projectionMatrix); 
..... 
mat4.multiply(modelViewProjectMatrix, modelViewMatrix, projectionInverse); 
webGL.gl.uniformMatrix4fv(shader.uniforms['proj_inv'], false, modelViewProjectMatrix); 

有沒有人能告訴我,當你翻轉一projectionMatrix究竟發生,

回答

2

一個典型的投影矩陣從相機空間視錐成轉換剪輯空間(好吧,一旦你除以w),所以反投影將從剪輯空間轉換回相機空間。

典型用途是從屏幕空間轉換 - >剪輯空間 - >相機空間,以便您可以進行拾取。這通常不用於着色器。

另一個常見用途是如果你想顯示一個視錐體來表示3D建模包中的相機場景。換句話說,你有一個包含2個或更多相機的建模軟件包。建模軟件包正在使用的相機查看3D場景以及場景中將用於渲染場景的攝像機。爲了可視化這些攝像機指向哪個方向,您可以在反向投影中渲染一個2單位(-1 + 1)線框立方體。這將投影立方成截頭圓錐體相匹配的攝像頭看到的

The live frustum diagram near the bottom of this page使用該技術

+0

OK,這個偉大的你,我很清楚,爲什麼要恢復在同一個WebGL的投影矩陣的形狀編程,**謝謝!!!!! ** – cughudson