2013-06-19 524 views
1

是否可以將相機深度投影到平面上?
讓我來解釋一下,如果我只是在平面上傳輸深度緩衝區,它總是會顯示從相機角度來看的深度。但是我怎麼能從平面的角度來展示深度。
我想在着色器上應用該效果。對我來說,這可能是一個有問題的矩陣,但我不明白。
將相機深度投影到3D平面上

回答

2

深度緩衝區與表示有關,可以使用(例如)着色器將其投影到任何平面。但是..

深度緩衝區不是對象的完整幾何表示,而只是從camara POV「正在看到」表面。 如果您投影深度緩衝區,則可能不會投影部分對象(請參閱圖像)。

在圖片中,卡馬拉(紅眼)正在尋找一個物體(黑色)。深度緩衝區表示camara和紅色表面之間的距離。 對於飛機(藍線),您可能想要獲得整個物體投影(藍色表面),但投影平面上的紅色表面,則只會獲得整個藍色表面的一小部分。

Projection depth buffer

如果你想整個藍色表面,

  1. 更改卡馬拉到僅次於飛機的POV。
  2. 渲染場景。
  3. 獲取深度緩衝區並將其保存到紋理/圖像/緩衝區(P)中。
  4. 重置丹POV
  5. 渲染場景使用的着色器的圖像(P)
+0

謝謝您的回答,當然深度緩衝是不是對象的幾何表示。在我的例子中,[這裏](http://stackoverflow.com/questions/17123558/volumetric-fog-shader-camera-issue/17163017#17163017),我有相機的觀點,我不知道如何擁有飛機的POV。你明白這個問題嗎?我不知道如何進行正確的深度。 – MaT

+0

假設您的飛機是四邊形(A,B,C,D), 1)使用A-B和A-C的叉積,得到飛機的法線。這可以用作卡馬拉方向。 2)您可以使用quad的中心點作爲camara位置:(A + C)/ 2。 3)根據你想要的,將卡馬拉設置爲正交和其他參數。這可能是什麼「困難」。例如,卡馬拉的「遠」平面的尺寸可能是您的QUAD的尺寸 –

+0

好吧,非常感謝您的回答,我想知道是否有必要使用新相機,但似乎是這樣......我認爲如果我在着色器中使用了一些矩陣來改變它將工作的位置的角度。 – MaT