2010-12-13 57 views

Répondre

1

Pensez d'une ligne horizontale de la longueur de l'unité à distance d de l'appareil, dont le champ de vue (c.-à-d. l'angle d'ouverture) est réglé de sorte que la ligne longue de l'unité à la distance d couvre exactement la largeur de l'image (ou la hauteur, selon ce que vous mesurez). Et vous pouvez bien sûr aussi prendre le calcul inverse.

tan (0,5 FOV) = 0,5 d

2

"longueur de l'objectif" n'a pas de sens. La "lentille" dans OpenGL et DirectX est une caméra à sténopé et n'a donc pas de taille (c'est-à-dire qu'elle est infinitésimale petite). Si vous parlez de distance focale, cela n'a aucune relation car une distance focale implique une lentille ainsi qu'une profondeur de champ.

Vous pouvez toutefois calculer la position de la caméra par rapport à l'écran dans toutes les unités que vous aimez (cela m'a été enseigné comme le "point de référence en perspective"). Disons que l'écran mesure 1 mètre de large et que le champ de vision est de 90 degrés (PI/2 radians). L'utilisation trigonométrie vous savez que

tan(fov/2) = opposite/adjacent. 

Vous savez en face (comme il est un demi-mètre, soit la moitié de l'écran)

Donc, pour calculer adjacente (la distance de l'écran à la position de la caméra) vous Il suffit de faire:

adjacent = opposite/tan(fov/2) 

Avec les simples chiffres ci-dessus cela va à:

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

, c'est-à-dire dans ce cas la caméra serait à un demi-mètre de l'écran (tout à fait logique quand on pense à un champ de vision de 90 degrés).

Les unités impliquées sont, bien sûr, un peu arbitraire ...

Si vous regardez alors en elle. Plus la position de la caméra est proche de l'écran, plus le champ de vision est large et plus la position de la caméra est étroite, plus le champ de vision est étroit. Si vous les dessinez, vous verrez exactement pourquoi.

De cette base, vous pouvez calculer le FOV parfait pour une personne assis « n » mètres de l'écran ...

6

Je me rends compte que ça fait longtemps que cette question a été posée (pour le moins) , mais j'avais un bon diagramme qui traînait et il m'a semblé dommage de ne pas le poster car je pense que c'est utile ici. Comme le montre le diagramme, la relation entre le champ de vision (theta) et la distance au plan d'image (d) est:

tan(theta/2) = ymax/d 

FOV and distance to image plane