什么时候我们必须在 opengl 编程中使用 invert a projection matrix
What time should we must be use invert a projection matrix in opengl programing
## 最近看到有人用webgl编程反转projectionMatrix来绘制他们的3D场景,我不知道反转projectionMatrix来投影场景的功能。我不知道当你反转 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 时到底发生了什么,
一个典型的投影矩阵从一个截锥体相机 space 转换成剪辑 space(好吧,一旦你除以 w)所以逆投影将从剪辑 space 转换回来进入相机 space.
典型用途是从屏幕 space -> 剪辑 space -> 相机 space 进行转换,因此您可以进行挑选。不过,这通常不会在着色器中使用。
另一个常见的用途是如果你想显示一个平截头体来表示 3D 建模包中的相机场景。换句话说,您有一个包含 2 个或更多相机的建模包。建模包用于查看 3D 场景的相机以及场景中稍后将用于渲染场景的相机。要可视化这些相机指向的方向,您可以通过逆投影渲染一个 2 单位 (-1 + 1) 的线框立方体。这会将立方体投影成与相机所见相匹配的平截头体形状
## 最近看到有人用webgl编程反转projectionMatrix来绘制他们的3D场景,我不知道反转projectionMatrix来投影场景的功能。我不知道当你反转 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 时到底发生了什么,
一个典型的投影矩阵从一个截锥体相机 space 转换成剪辑 space(好吧,一旦你除以 w)所以逆投影将从剪辑 space 转换回来进入相机 space.
典型用途是从屏幕 space -> 剪辑 space -> 相机 space 进行转换,因此您可以进行挑选。不过,这通常不会在着色器中使用。
另一个常见的用途是如果你想显示一个平截头体来表示 3D 建模包中的相机场景。换句话说,您有一个包含 2 个或更多相机的建模包。建模包用于查看 3D 场景的相机以及场景中稍后将用于渲染场景的相机。要可视化这些相机指向的方向,您可以通过逆投影渲染一个 2 单位 (-1 + 1) 的线框立方体。这会将立方体投影成与相机所见相匹配的平截头体形状