La définition de la caméra décrit la position, le type de projection et les propriétés de la caméra. La syntaxe est :
CAMERA: camera { [CAMERA_ITEMS...] } CAMERA_ITEM: CAMERA_TYPE | CAMERA_VECTOR | CAMERA_MODIFIER | CAMERA_IDENTIFIER CAMERA_TYPE: perspective | orthographic | fisheye | ultra_wide_angle | omnimax | panoramic | cylinder CylinderType | spherical CAMERA_VECTOR: location <Location> | right <Right> | up <Up> | direction <Direction> | sky <Sky> CAMERA_MODIFIER: angle HORIZONTAL [VERTICAL] | look_at <Look_At> | blur_samples Num_of_Samples | aperture Size | focal_point <Point> | confidence Blur_Confidence | variance Blur_Variance | NORMAL | TRANSFORMATION
DEFAULT CAMERA: camera { perspective location <0, 0, 0> direction <0, 0, 1> right 1.33*x up y sky <0, 1, 0> } CAMERA TYPE : perspective angle : ~67.380 (direction_length = 0.5* right_length/tan(angle/2)) confidence : 0.9 (90%) direction : <0, 0, 1> focal_point : <0, 0, 0> location : <0, 0, 0> look_at : z right : 1.33*x sky : <0, 1, 0> up : y variance : 1/128
Selon le type de projection, de zéro à plusieurs paramètres sont requis :
perspective sera utilisé (caméra à trou d'épingle).up et right doivent être spécifiés. Pour une caméra orthographique, avec le même champ visuel qu'une caméra perspective sur le plan qui coupe le point de visée, le mot clé angle doit être utilisé. Une valeur d'angle est optionnelle.La caméra de POV-Ray a dix modèles différents. Chacun d'eux utilise une méthode différente de projection pour projeter la scène sur l'écran. Sans tenir compte du type de projection, toutes les caméras utilisent location, right, up, direction et des mots clés pour déterminer la position et l'orientation. Le mot clé type et ces quatre vecteurs définissent complètement la caméra. Tous les autres modificateurs de la caméra ajustent sa façon de travailler. Les objectifs de ces vecteurs et des autres modificateurs diffèrent selon le type de projection utilisé. Une plus grande explication sur les types de caméra suit. Dans les sous-sections qui suivent, nous expliquons comment placer et orienter la caméra, avec l'utilisation de ces quatre vecteurs et des modificateurs sky et look_at. Vous pouvez vous référer à l'illustration de la caméra perspective qui suit, pendant la lecture concernant les vecteurs.

Dans la plupart des cas, deux vecteurs, dans la déclaration de la caméra, vous suffiront pour la placer : location et look_at. Par exemple :
camera { location <3, 5,-10> look_at <0, 2, 1> }
La position est simplement les coordonnées x, y, z de la caméra. Elle peut être placée n'importe où dans l'univers de la scène. La position par défaut est <0, 0, 0>. Le vecteur look_at dit à POV-Ray de faire tourner et de pencher la caméra jusqu'à ce qu'elle regarde les coordonnées spécifiées x, y, z. Par défaut, elle regarde un point à une unité de sa position, dans la direction z.
Le modificateur look_at doit toujours être le dernier élément de la déclaration de la caméra. Si d'autres éléments sont placés après, elle peut ne plus regarder le point spécifié.
Normalement, POV-Ray se dirige vers la droite ou la gauche en tournant autour de l'axe y, jusqu'à ce qu'il soit en ligne avec le point look_at, puis il se dresse ou se rabaisse jusqu'à ce que le point soit exactement visé. Toutefois, vous pouvez vouloir incliner la caméra sur le côté, comme un avion entamant un virage. Vous pouvez changer l'inclinaison de la caméra en utilisant le vecteur sky. Par exemple :
camera { location <3, 5,-10> sky <1, 1, 0> look_at <0, 2, 1> }
Cela dit à POV-Ray d'incliner la caméra jusqu'à ce que son axe vertical soit en ligne avec le vecteur sky. Imaginez que le vecteur sky est une antenne pointant toute droite sur le sommet de la caméra. Alors, il utilise le vecteur sky comme axe de rotation droite ou gauche, puis s'incline en ligne avec le vecteur sky jusqu'à pointer sur le point look_at. Dans les faits, vous dites à POV-Ray que le ciel n'est pas exactement au-dessus.
Le vecteur sky ne fait rien par lui-même. Il ne modifie que la façon dont le vecteur look_at tourne la caméra. La valeur par défaut est sky <0, 1, 0>.
Le mot clé angle, suivi d'une expression numérique, spécifie l'angle de vue horizontal, en degrés, de la caméra. Même s'il est possible d'utiliser le vecteur direction pour déterminer cet angle de vue, c'est plus simple avec le mot clé angle.
Quand vous spécifiez l'angle, POV-Ray ajuste la longueur du vecteur direction. La formule utilisée est direction_length = 0.5 * right_length / tan(angle / 2), où right_length est la longueur du vecteur right. Vous pouvez également spécifier les vecteurs direction et right avant le mot clé angle. Le vecteur right est expliqué dans la section suivante.
Il n'y a pas de limitation pour l'angle de vue, sauf pour la projection en perspective. Si vous choisissez des angles de vue supérieurs à 360 degrés, vous verrez une répétition d'images de la scène. Cela peut être utile pour certains effets.
La caméra spherical permet aussi de spécifier l'angle vertical. S'il n'est pas donné, c'est l'angle horizontal divisé par 2
Par exemple, si vous rendez une image avec un ratio d'aspect de 2:1 et l'appliquez sur une sphère en utilisant la projection sphérique, cela recréera la scène. Une autre utilisation est de l'appliquer sur un objet et si vous spécifiez des transformations sur l'objet, avant la texture, disons dans une animation, cela ressemblera à la réflexion de l'environnement (appelé parfois projection d'environnement).
Vous n'aurez probablement pas besoin de spécifier ou de changer le vecteur direction de la caméra, mais il est décrit ici, au cas où. Il donne à POV-Ray la direction initiale où pointer la caméra avant de la déplacer avec les vecteurs look_at ou rotate (le défaut est direction <0, 0, 1>). Il peut également être utilisé pour contrôler le champ de vue horizontal de certains types de projection. La longueur de ce vecteur détermine la distance entre le plan de vue et la caméra. Un vecteur court donne un large champ, tandis qu'un long vecteur cadre sur une zone plus réduite. Dans les versions précédentes, c'était le seul moyen pour ajuster le champ de la vue. Dorénavant, le zoom sera fait en utilisant avec facilité le mot clé angle.
Si vous utilisez une projection ultra_wide_angle, panoramic ou cylindrical, vous devrez avoir un vecteur direction d'une unité de longueur, pour éviter certains étranges résultats. La longueur du vecteur direction n'a pas d'importance pour les types de projection orthographic, fisheye ou omnimax.
Le premier objectif des vecteurs up et right est de dire à POV-Ray les hauteurs et largeurs relatives de la vue. Les valeurs par défaut sont :
right 4/3*x up y
Pour la caméra perspective, le défaut, ces deux vecteurs définissent aussi le plan initial de la vue, avant les modifications des vecteurs look_at ou rotate. La longueur du vecteur right (avec le vecteur direction) peut aussi être utilisée pour contrôler le champ horizontal de la vue avec certains types de projection. Le modificateur look_at change à la fois up et right. Le calcul de angle dépend du vecteur right.
La plupart des types de caméra traitent les vecteurs up et right de la même manière que le type perspective. Toutefois, certains en font un usage spécial. Pour la projection orthographic : les longueurs des vecteurs up et right donnent la taille de la fenêtre de visualisation, sans tenir compte du vecteur direction, qui n'est pas utilisé par ce type de caméra.
Avec la projection cylindrical : pour les types 1 et 3, l'axe des cylindres se couche le long du vecteur up, et la largeur est déterminée par la longueur du vecteur right, ou il peut être écrasé par le vecteur angle. Pour le type 3, le vecteur up détermine le nombre d'unités en hauteur de l'image. Par exemple, si vous avez up 4*y sur une caméra à l'origine, seuls les points de y = 2 à y = -2 seront visibles. Tous les rayons de vue sont perpendiculaires à l'axe y. Pour les types 2 et 4, le cylindre se couche selon le vecteur right. Les rayons de vue du type 4 sont perpendiculaires au vecteur right.
Note : les vecteurs up, right et direction doivent toujours rester perpendiculaires les uns aux autres, ou l'image sera distordue. Si ce n'est pas le cas, un message d'alerte sera affiché. Les tampons 'vista' ne fonctionneront pas avec les vecteurs non perpendiculaires.
Les vecteurs up et right définissent le ratio d'aspect (rapport hauteur sur largeur) de l'image. Les valeurs par défaut up <0, 1, 0> et right <1.33, 0, 0> donnent un ratio d'aspect de 4 sur 3. Cela est typique pour les écrans d'ordinateur. Si vous voulez une image effilée, ou élargie, ou parfaitement carrée, vous devez ajuster les vecteurs up et right.
La plupart des écrans d'ordinateurs, et des imprimantes graphiques, utilisent des pixels carrés. Par exemple, l'affichage du Macintosh, et les modes IBM SVGA 640x480, 800x600 et 1024x768, utilisent tous des pixels carrés. Quand votre méthode d'affichage utilise des pixels carrés, alors la largeur et la hauteur que vous donnez avec les options Width et Height ou les commutateurs +W et +H, doivent aussi avoir le ratio des vecteurs up et right.
Note : 640/480 = 4/3, aussi le rapport est correct pour ce mode de pixel carré.
Toutefois, tous les modes d'affichage n'utilisent pas les pixels carrés. Par exemple, les modes IBM VGA 320x200, et Amiga 320x400. Ils produisent quand même une image avec un rapport de 4/3. Par conséquent, les images devant être vues sur ces matériels doivent encore utiliser le rapport 4/3 pour leurs vecteurs up et right, mais les paramétrages des pixels ne seront pas en 4/3.
Par exemple:
camera { location <3, 5,-10> up <0, 1, 0> right <1, 0, 0> look_at <0, 2, 1> }
Cela spécifie une image parfaitement carrée. Pour des affichages comme SVGA, vous devrez utiliser des paramétrages comme +W480 +H480 ou +W600 +H600. Toutefois, sur un mode Amiga 320x400, vous voudrez utiliser les valeurs +W240 +H400 pour rendre une image carrée.
La conclusion est : les vecteurs up et right doivent spécifier le ratio d'aspect voulu par l'artiste, et le paramétrage des pixels doit être ajusté au même ratio pour des pixels carrés, et à la résolution pour les pixels non carrés. Les vecteurs up et right ne doivent pas être ajustés sur la base de pixels non carrés.
Le vecteur right décrit également la direction à la droite de la caméra. Il dit à POV-Ray où se trouve le côté droit de votre scène. Le signe du vecteur right peut être utilisé pour déterminer le type de main du système de coordonnées. Le défaut est : right <1.33, 0, 0>. Cela signifie que la direction +x est vers la droite. C'est un système main gauche, car vous pouvez utiliser votre main gauche pour retrouver le sens des axes. Tenez votre main gauche avec la paume vers la droite. Pointez le pouce vers le haut. Pointez votre index droit devant. Pointez les autres doigts vers la droite. Ils pointent dans la direction +x. Votre pouce suit la direction +y. Tandis que l'index désigne la direction +z.
Pour utiliser un système de coordonnées main droite, si populaire chez certains programmes de CAD, et autres raytraceurs, faites la même chose avec votre main droite. Le pouce pointera toujours dans l'axe des +y, et l'index dans celui des +z, mais les autres doigts indiquent la gauche comme sens des +x. Cela signifie que la droite de votre écran est dans la direction des -x. Pour dire à POV-Ray d'agir dans ce sens, vous pouvez utiliser une valeur négative pour x dans le vecteur right, comme ceci : right <-1.33, 0, 0>. Comme l'accroissement de x vers la gauche ne donne pas grand-chose sur un écran 2D, vous tournez l'ensemble de 180 degrés en utilisant une valeur de z positive dans la position de votre caméra. Vous terminez avec quelque chose comme cela :
camera { location <0, 0, 10> up <0, 1, 0> right <-1.33, 0, 0> look_at <0, 0, 0> }
Maintenant, quand vous faites votre gymnastique de raytraceur, comme expliqué dans la section "Comprendre le système de coordonnées de POV-Ray", vous utilisez votre main droite pour déterminer les directions des rotations.
Dans une grille à deux dimensions, x est toujours vers la droite, et y vers le haut. Les deux versions de type de main se retrouvent sur la question de l'axe des z qui pointent vers l'écran, ou vers l'extérieur, et quel est l'axe qui représente le haut.
Les systèmes architecturaux CAD comme AutoCAD, tendent à utiliser l'orientation Œil de Dieu, dans lequel l'axe z est la hauteur, et la direction vers le haut du modèle. Cette approche a un sens si vous êtes architecte, regardant l'image d'un immeuble sur un écran. z signifie le haut, et il augmente vers vous, avec x et y toujours sur le plan de l'écran. Ceci est la base du système main droite.
Les systèmes de rendu, comme POV-Ray, vous considèrent comme le participant. Vous regardez l'écran comme un photographe dans la scène. Le haut est y, comme dans le monde réel, x est vers la droite, donc z est la profondeur, qui augmente en s'enfonçant dans l'écran. Ceci est la base du système main gauche.
Les commandes de déplacement et de rotation peuvent replacer la caméra, une fois qu'elle est définie. Par exemple :
camera { location <0, 0, 0> direction <0, 0, 1> up <0, 1, 0> right <1, 0, 0> rotate <30, 60, 30> translate <5, 3, 4> }
Dans cet exemple, la caméra est créée, puis tournée de 30 degrés autour de l'axe x, de 60 degrés autour de y et de 30 degrés autour de z, puis déplacée vers un autre point.
La liste suivante explique les différents types de projection qui peuvent être utilisés avec la caméra. Les plus communs sont la perspective et l'orthographique. En général CAMERA_TYPE doit être le premier élément de la déclaration de la caméra. Si rien n'est spécifié, la caméra perspective est le défaut.
Vous devez noter que le tampon 'vista' peut seulement être utilisé avec la caméra perspective ou orthographique.
Le mot clé perspective spécifie la caméra perspective par défaut qui simule la classique caméra à trou d'épingle. L'angle de vue (horizontal) est déterminé par le ratio entre les longueurs du vecteur direction et right, ou par le mot clé optionnel angle, qui est la solution préférable. L'angle de vue doit être entre 0 et 180 degrés. Voir la figure de 'Position de la caméra' pour la géométrie de la caméra perspective.
La caméra orthographique offre deux modes d'opération :
La projection orthographic pure. Elle utilise des rayons parallèles pour créer une image de la scène. L'aire de la vue est déterminée par les longueurs des vecteurs right et up. L'un d'eux doit être spécifié, il ne sont pas pris dans la caméra par défaut. Si omis, la seconde méthode de la caméra est utilisée.
Si dans une caméra perspective, vous remplcez le mot clé perspective par orthographic et laissez tous les autres paramètres inchangés, vous obtiendrez une vue orthographique sur la même aire, c'est-à-dire que la taille de l'image est la même. La même chose peut être faite en ajoutant le mot clé angle à une caméra orthographique. Une valeur pour cet angle est optionnelle. Aussi ce second mode est actif si aucun right et up se trouve dans la déclaration de la caméra, ou quand le mot clé angle s'y trouve.
Vous devez savoir que certaines parties de la scène changeront, lors du passage de la perspective à l'orthographique. Tant que les objets d'intérêt resteront près du point de mire de la caméra, ils seront toujours visibles. Par contre, les objets plus éloignés pourront sortir de la vue.
Si des objets sont trop près de la position de la caméra, ils peuvent disparaître. Trop près signifie ici, derrière le plan de projection de la caméra (le plan qui passe par le point look_at).
C'est une projection sphérique. L'angle de vue est spécifié par le mot clé angle. Un angle de 180 degrés crée l'oeil de poisson 'standard', tandis qu'un angle de 360 degrés crée un super oeil de poisson (tout est visible). Si vous utilisez ce type de projection, vous obtiendrez une image circulaire. Si ce n'est pas le cas, c'est-à-dire que vous obtenez une image elliptique, vous devez lire 'Le ratio d'aspect'.
Cette projection est similaire à l'oeil de poisson, mais elle projette l'image sur un rectangle au lieu d'un cercle. L'angle de vue peut être spécifié en utilisant le mot clé angle.
la projection omnimax est un oeil de poisson de 180 degrés qui a un angle de vue réduit dans le sens vertical. En réalité, cette projection est utilisée pour faire des films qui peuvent être vus dans des salles en forme de dôme. L'image sera quelque peu elliptique. Le mot clé angle n'est pas utilisé avec cette projection.
Cette projection est appelée "projection equirectangulaire cylindrique". Elle résout le problème de dégénération de la projection en perspective, lorsque l'angle de vue approche les 180 degrés. Elle utilise un type de projection cylindrique pour être capable d'utiliser des angles de vue de plus de 180 degrés, avec une distorsion latérale tolérable. Le mot clé angle est utilisé pour déterminer l'angle de vue.
En utilisant cette projection, la scène est projetée sur un cylindre. Il y a quatre types de projection cylindrique, dépendant de l'orientation du cylindre, et de la position du point de vue. Une valeur entre 1 et 4 doit suivre le mot clé cylinder. L'angle de vue et la longueur des vecteurs up ou right, déterminent les dimensions de la caméra, et de l'image visible. La caméra à utiliser est spécifiée par un nombre. Les types sont :
En utilisant cette projection la scène est projetée sur une sphère.
Syntaxe :
camera { spherical [angle HORIZONTAL [VERTICAL]] [CAMERA_ITEMS...] }
La première valeur de angle fixe l'angle de vue horizontal de la caméra. Avec la seconde valeur optionnelle, l'angle de vue vertical est également donné en degrés. Si l'angle vertical n'est pas spécifié, son défaut est la moitié de l'angle horizontal.
La projection sphérique est identique à la projection oeil de poisson, dans le fait que la scène est projetée sur une sphère. Mais à la différence de la caméra oeil de poisson, elle utilise des coordonnées rectangulaires au lieu de coordonnées polaires; ainsi elle fonctionne comme la projection sphérique (map_type 1).
Il y a de nombreuses utilisations. Premièrement, elle autorise l'application d'une image générée par une caméra sphérique sur une sphère sans distorsion (avec la caméra oeil de poisson, vous devez d'abord convertir l'image de coordonnées polaires en rectangulaires dans quelque éditeur d'image). Aussi, elle autorise les effets comme "la projection d'environnement", souvent utilisée pour simuler les réflexions dans certains générateurs.
POV-Ray peut simuler la profondeur de champ en lançant un nombre de rayons échantillons pour les points brouillés, à chaque pixel, et en moyennant les résultats.
Pour l'activer, vous devez spécifier le mot clé aperture suivi d'une valeur numérique qui détermine la profondeur de la zone d'acuité. De grandes ouvertures donnent beaucoup de brouillage, tandis que de petites ouvertures donnent une vaste zone d'acuité.
Note : tandis que cela se comporte comme un appareil photographique réel, la valeur de l'ouverture est purement arbitraire, et n'est pas liée à la focale.
Vous devez également spécifier le mot clé blur_samples suivi d'un entier qui contrôle le nombre maximum de rayons à utiliser pour chaque pixel. Plus de rayons adoucit l'apparence, mais augmente le temps de rendu. Par défaut, la tache focale n'est pas utilisée, c'est-à-dire que l'ouverture est à 0, ainsi que le nombre d'échantillons.
Le centre de la zone d'acuité est le vecteur focal_point. Les objets près de ce point sont dans le focus, les autres sont plus brouillés. La valeur par défaut est focal_point <0, 0, 0>.
Bien que blur_samples spécifie le nombre maximum d'échantillons, il y a un mécanisme adaptatif qui stoppe l'envoi de rayons quand un certain degré de confiance est atteint. A ce moment, l'envoi de rayons supplémentaires n'améliorera pas le résultat.
Les mots clés confidence et variance, suivis de valeurs numériques, contrôlent la fonction adaptative. La valeur de confidence est utilisée pour déterminer quand les échantillons semblent être suffisamment proches de la couleur correcte. La valeur de variance spécifie une tolérance acceptable sur la variation des échantillons. En d'autres mots, le processus de lancer de rayons d'échantillons est terminé quand la valeur estimée de la couleur semble très proche (comme contrôlée par la probabilité de confiance) de la valeur de la couleur réelle.
Puisque confidence est une probabilité, sa valeur peut être entre 0 et < 1 (le défaut est 0.9, c'est-à-dire 90%). La valeur pour variance doit être dans la fourchette de la plus petite différence de couleur affichable (le défaut est 1/128). Si 1 est utilisé, POV-Ray donnera une alarme et utilisera plutôt le défaut.
Le rendu avec les paramètres par défaut peut donner des images granuleuses. Cela peut être amélioré en utilisant une plus petite variance. Une valeur de 1/10000 donne d'assez bons résultats (avec la confiance par défaut et blur_sample fixé à quelque chose comme 100) sans être inacceptablement lent.
Les valeurs confidence plus grandes aboutiront à plus d'échantillons, des rendus plus longs, et de meilleures images. Même chose pour de petits seuils de variance.
Le mot clé optionnel normal peut être utilisé pour assigner un modèle de normale à la caméra. Par exemple :
camera { location Here look_at There normal {bumps 0.5} }
Tous les rayons de la caméra seront perturbés par ce modèle. L'image sera déformée comme si vous la regardiez à travers un verre bosselé, ou si vous voyiez la réflexion d'une surface bosselée. Cela vous permet de créer des effets spéciaux. Voir la scène animée camera2.pov pour un exemple. Voir 'La normale' pour des informations sur les modèles de normale.
Des identificateurs de caméra peuvent être déclarés pour rendre les scènes plus lisibles et paramétrables. Vous pouvez déclarer plusieurs identificateurs de caméra, si vous le désirez. Cela rend le changement de caméra plus facile. Un identificateur est déclaré comme ceci :
CAMERA_DECLARATION: #declare IDENTIFIER = CAMERA | #local IDENTIFIER = CAMERA
Où IDENTIFIER est le nom de l'identificateur, jusqu'à 40 caractères de long, et CAMERA est toute caméra valide. Voir "#declare vs. #local" pour des informations sur la portée des identificateurs. Voici un exemple...
#declare Long_Lens = camera { location -z*100 angle 3 } #declare Short_Lens = camera { location -z*50 angle 15 } camera { Long_Lens // éditer cette ligne pour changer la lentille look_at Here }
Note : seules des transformations de caméra peuvent être ajoutées à une caméra préalablement déclarée. Des mots clés de modification de l'environnement de la caméra ne sont pas autorisés, comme ils sont nécessaires à une phase antérieure pour résoudre l'ordre de dépendance des mots clés.
| 3.2.3 Les effets atmosphériques |