Objectif

On veut régler les paramètres d'une caméra pour simuler la géométrie d'un véritable appareil photo ou d'une caméra de cinéma.

Rappel sur le modèle suivi par la directive camera

Dans Povray, la directive camera définit une pyramide à base rectangulaire. Le sommet est l'origine des rayons qui sont lancés, et le pixel résultant pour le lancé d'un rayon est projeté sur la base.

Mise en oeuvre

Pour simuler un appareil photo ou une caméra, on va dimensionner la pyramide pour correspondre à la surface de la pellicule (pour la base de la pyramide). La hauteur de la pyramide correspondra à la distance focale.

A noter

Pour une largeur de 36mm, une distance focale d'environ 60mm reproduit la vision humaine. J'ai obtenu cette valeur en regardant dans le viseur d'un appareil photo Reflex et en laissant le deuxième oeil ouvert, jusqu'à ce l'image dans le viseur aie le même aspect que pour l'oeil libre.

Paramètres

focale
Distance en mm entre le centre optique et la "pellicule".
film
Largeur en mm de la "pellicule"
format
Rapport largeur/hauteur de la pellicule (p.ex. 16/9, 4/3, 3/2, etc...)

Exemple d'utilisation

#include "realcamera.inc"

//etc...

camera
{
    location  <.6 , 1.7 ,.1>
    setupRealCamera(60, 22, image_width/image_height)
    look_at   <2 , 1.0 , 2.5>
}

Code Source

//utiliser dans une camera, avant look_at
//focale : distance en mm du centre optique à la pellicule
//film : largeur en mm de la pellicule
//format : rapport largeur/hauteur de l'image (ex : 16/9, 4/3, 3/2)
#macro setupRealCamera(focale, film, format)
    #local myFocale = focale / 1000 ;
    #local myRight = film / 1000 ;
    #local myUp = myRight / format ;

    direction     myFocale        * z
    up            myUp            * y
    right         myRight         * x  
#end