2010-07-17 91 views
5

我正在尋找一種投影矩陣,我可以在3D中使用它,它會給我一個魚眼效果。我不是在尋找一個像素處理器或類似的東西,它可以處理像素,而是從3D空間投影到2D上時使用的實際投影矩陣。Xna/OpenGL中的魚眼投影矩陣 - 3D

謝謝。

+0

這可能會得心應手: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/fisheye/ – 2010-07-17 21:00:46

+0

謝謝。這在我看到的其他場景中會派上用場。 – 2010-07-22 16:47:54

回答

2

卡洛斯並沒有錯,但您可能想嘗試使用投影矩陣生成器中的「視場(FOV)」參數。

+0

謝謝。 我想我需要看看我的矩陣計算 - 我的第一個猜測也是試驗FOV,但沒有得到預期的效果。 我正在看更多的近似值,而不是pixelperfect。 – 2010-07-22 16:46:36

+0

@Einar,因爲Goz說卡洛斯在錢上 - FOV爲端點工作,將他們轉換到他們應該在的地方,但它仍然在他們之間畫出了直線。嘗試創建幾個代表三角形的網格 - 使用單個多邊形或使用10個多邊形並使用1000個多邊形。然後嘗試玩FOV,也許事情會變得更加清晰。 – Unreason 2010-11-29 14:41:08

11

這不是真的可能。在齊次座標中,矩陣將線條變換爲線條。因此,任何基於矩陣的解決方案都不一定會像您想要的那樣彎曲線條。

0

卡洛斯是對的。有一種方法可以僞裝它,但是您將不得不多次重新渲染場景。

基本上,你首先弄清楚如何做兩點透視。我將通過使用投影矩陣對場景進行兩次渲染來實現,投影矩陣在交替兩側具有消失點。然後你將這兩部分結合起來,我想用一張模版貼圖。

你可以做點像四點透視結合四個消失點的圖像。您多次重複該過程。

當時你在做什麼是投射到近似球體的多邊形上。

我可以解釋更多,但我的猜測聽起來太複雜了。

最簡單的方法是渲染紋理並扭曲圖像,並將其渲染爲全屏四元組。

+0

感謝您的輸入 - 好主意。 我的問題與我看到它時讓我臉紅的事有關。投影到屏幕時我出現了一個錯誤,這導致我在改變FOV以獲得我想要的效果時毫無用處。 – 2010-08-12 11:28:10