将相机深度投影到3D平面上

时间:2013-06-19 08:45:29

标签: opengl directx glsl shader cg

是否可以将相机深度投影到平面上? 让我解释一下,如果我只是在平面上传输深度缓冲区,它将始终从摄像机的角度显示深度。但是我怎样才能从平面的角度展示深度 我想在着色器上应用效果。对我来说,这可能是一个矩阵问题,但我不明白。

1 个答案:

答案 0 :(得分:2)

深度缓冲区相对于表示,可以使用(例如)着色器将其投影到任何平面。但..

深度缓冲区不是对象的完整几何表示,而只是“#34;正在看到"来自camara POV的表面。 如果投影深度缓冲区,则可能不会投影对象的一部分(参见图像)。

在图片中,卡马拉(红眼)正在寻找一个物体(黑色)。深度缓冲区表示卡马拉与红色表面之间的距离。 对于平面(蓝线),您可能想要获得整个物体投影(蓝色表面),但是在平面上投射红色表面,您将只获得整个蓝色表面的一小部分。

Projection depth buffer

如果你想要整个蓝色表面,

  1. 将卡马拉的POV改为飞机后面。
  2. 渲染场景。
  3. 获取深度缓冲区并将其保存到纹理/图像/缓冲区(P)。
  4. 重置您的camara POV
  5. 使用着色器为图像(P)
  6. 渲染场景