2012-12-30 77 views
4

我期待捕捉360度球面全景 - 我場景的照片。我怎樣才能做到最好?如果我是不是正確的,我不能做這設置角度360OpenGL 360度視角

如果我需要一個頂點着色器的普通的方式,有一個可用的?

回答

6

這實際上是一件不平凡的事情。

在幼稚的方法頂點着色器,通過矩陣乘法變換頂點位置,而是通過三角函數餵養它們看起來可能勝任。問題是,這不會使直線「彎曲」。您可以使用鑲嵌着色器添加足夠的幾何圖形來彌補這一點。

最直接的方法是雙重的。首先,將場景渲染爲立方體貼圖,即將90°×90°FOV渲染到構成立方體的6個方向。這允許您使用渲染場景的常規仿射投影。

在使用所生成的立方體貼圖來紋理屏幕填充網格,其中每個頂點的紋理座標是方位角和仰角的第二步驟。

另一種方法是瓷磚具有非常小的FOV渲染和轉動「照相機」,有點像做出全景圖像,而無需使用廣角鏡頭使用。事實上,基於立方體貼圖的方法是平鋪渲染,但比直接使用更改的攝像機方向和視口布局直接執行此操作更容易。

+0

鑑於球形投影邊緣有奇點,我不確定任何數量的tesselation是否會起作用。我肯定會渲染到立方體貼圖並將其映射回到球體貼圖。 – JasonD

+0

@JasonD:事實上,在簽名方面,tesselation方法是行不通的。當提到這一點時,我正在考慮更多的方向爲圓柱形或桶形(帶帽球形)投影。 – datenwolf

+0

感謝datenwolf,這是一個使用立方體貼圖的好方法。你能否詳細說明第二步? – RobotRock