## 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时究竟发生了什么,
答案 0 :(得分:2)
典型的投影矩阵从相机空间的平截头体转换为剪辑空间(一旦除以w),因此反投影将从剪辑空间转换回相机空间。
典型用途是从屏幕空间转换 - >剪辑空间 - >相机空间,所以你可以做采摘。但是,这通常不会在着色器中使用。
另一个常见用途是,如果您想显示平截头体来表示3D建模包中的相机场景。换句话说,你有一个拥有2个或更多相机的建模包。建模包用于查看场景中的3D场景以及稍后将用于渲染场景的摄像机。为了可视化这些相机指向的方向,您可以通过反投影渲染2个单位(-1 + 1)线框立方体。这会将立方体投影成与相机看到的平截头体相匹配的形状