2010-12-13 65 views

回答

1

思考在距離d,其中場的的視角(即開口角度)被設置爲使距離d處的單位長線正好覆蓋圖像寬度(或高度,取決於您測量的視野),則d是鏡頭長度。你當然也可以進行逆向計算。

tan(0.5 fov)= 0.5 d

2

「鏡頭長度」沒有意義。 OpenGL和DirectX中的「鏡頭」是針孔攝像頭,因此沒有大小(即無限小)。

如果您在談論焦距,那麼這與焦距無關,這意味着鏡頭以及景深。

然而,你可以根據你喜歡的任何單位計算相對於屏幕的相機位置(這被稱爲「透視參考點」)。

可以說屏幕寬1米,視場角90度(PI/2弧度)。使用基本的三角您知道

tan(fov/2) = opposite/adjacent. 

你知道對面的(因爲它是半米,即半個屏幕)

所以計算相鄰(即從屏幕到攝像頭位置的距離)你簡單地做:

adjacent = opposite/tan(fov/2) 

通過上面這個簡單的數字變爲:

adjacent = 0.5/tan(PI/4) 
=> 0.5/1.0 
=> 0.5 

即在這種情況下,相機將離屏幕半米(當您考慮90度視野時,相當合理)。

所涉及的單位,當然,有些武斷......

如果你再看看它。相機位置越靠近屏幕,FOV越寬,相機位置越遠,FOV越窄。如果你畫出這些,你會明白爲什麼。

從這個基礎上,你可以計算出完美的FOV一個人坐在「N」米遠離屏幕...

6

我意識到這是一個很長的時間,因爲這個問題被要求(至少可以這樣說) ,但是我有一個很好的圖表,我覺得它在這裏很有幫助,所以不要發佈它。如由圖中,現場的視圖(theta)和圖像平面(d)的距離之間的關係是:

tan(theta/2) = ymax/d 

FOV and distance to image plane

相關問題