我们必须在什么时候使用在opengl编程中反转投影矩阵

时间:2016-05-26 04:07:29

标签: javascript webgl

## Rencently我看到有人要使用webgl编程来反转投影矩阵来绘制他们的3D场景,我不知道反转投影矩阵投影场景的功能。我不知道当你反转projectionMatrix时会发生什么,

 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时究竟发生了什么,

1 个答案:

答案 0 :(得分:2)

典型的投影矩阵从相机空间的平截头体转换为剪辑空间(一旦除以w),因此反投影将从剪辑空间转换回相机空间。

典型用途是从屏幕空间转换 - >剪辑空间 - >相机空间,所以你可以做采摘。但是,这通常不会在着色器中使用。

另一个常见用途是,如果您想显示平截头体来表示3D建模包中的相机场景。换句话说,你有一个拥有2个或更多相机的建模包。建模包用于查看场景中的3D场景以及稍后将用于渲染场景的摄像机。为了可视化这些相机指向的方向,您可以通过反投影渲染2个单位(-1 + 1)线框立方体。这会将立方体投影成与相机看到的平截头体相匹配的形状

The live frustum diagram near the bottom of this page使用该技术

相关问题