La déclaration global_settings est une déclaration fourre-tout qui regroupe un certain nombre de paramètres globaux. La déclaration peut apparaître n'importe où dans la scène tant que ce n'est pas à l'intérieur d'une autre déclaration. Vous pouvez avoir de multiples déclarations global_settings dans une scène. Toute valeur spécifiée dans la dernière déclaration global_settings remplace les paramètres précédents.
Note : quelques éléments qui étaient des directives de langage dans les versions précédentes de POV-Ray ont été déplacés dans la déclaration global_settings pour qu'il soit plus évident que leurs effets sont globaux. L'ancienne syntaxe est autorisée mais elle génère une alarme.
La nouvelle syntaxe est :
GLOBAL_SETTINGS: global_settings { [GLOBAL_SETTINGS_ITEMS...] } GLOBAL_SETTINGS_ITEM: adc_bailout Value | ambient_light COLOR | assumed_gamma Value | hf_gray_16 [Bool] | irid_wavelength COLOR | charset GLOBAL_CHARSET | max_intersections Number | max_trace_level Number | number_of_waves Number | noise_generator Number | radiosity { RADIOSITY_ITEMS... } | photon { PHOTON_ITEMS... } GLOBAL_CHARSET: ascii | utf8 | sys
Les valeurs par défaut sont :
CHARSET : ascii adc_bailout : 1/255 ambient_light : <1, 1, 1> assumed_gamma : pas de correction gamma hf_gray_16 : off irid_wavelength : <0.25, 0.18, 0.14> max_trace_level : 5 max_intersections : 64 number_of_waves : 10 noise_generator : 2 Radiosity: adc_bailout : 0.01 always_sample : on brightness : 1.0 count : 35 (max = 1600) error_bound : 1.8 gray_threshold : 0.0 low_error_factor : 0.5 max_sample : valeur négative minimum_reuse : 0.015 nearest_count : 5 (max = 20) normal : off pretrace_start : 0.08 pretrace_end : 0.04 recursion_limit : 3
Chaque élément est optionnel et peut apparaître dans n'importe quel ordre. Si un élément est spécifié plus d'une fois, le dernier paramétrage remplace les valeurs précédentes. Des détails sur chaque élément sont donnés dans les sections suivantes.
Dans les scènes avec plusieurs surfaces réflectives et transparentes, POV-Ray peut s'enliser en traçant de multiples réflexions et réfractions qui ne contribuent que peu à la couleur d'un pixel particulier. Le programme utilise un système appelé Adaptive Depth Control (ADC), pour cesser de calculer des rayons réfléchis ou réfractés supplémentaires, quand leur contribution est insignifiante.
Vous pouvez utiliser le paramètre global adc_bailout suivi par une valeur numérique, pour spécifier le point à partir duquel la contribution d'un rayon est considérée comme insignifiante. Par exemple :
global_settings {adc_bailout 0.01}
La valeur par défaut est 1/255, ou approximativement 0.0039, puisque un changement plus petit ne pourrait pas être visible dans une image en 24 bit. Généralement, ce paramétrage est adéquat, et doit être laissé. Mettre adc_bailout à 0 désactivera ADC, comptant complètement sur max_trace_level pour donner une limite au nombre de rayons engendrés.
Voir la section "max_trace_level" pour des détails sur l'interaction entre ADC et max_trace_level.
La lumière ambiante est utilisée pour simuler la réflexion inter diffuse, responsable de l'illumination d'aires partiellement ou complètement ombrées. POV-Ray fournit le mot clé ambient_light pour vous laisser facilement changer l'intensité de l'illumination ambiante, sans changer chaque valeur des finitions. Il vous laisse également créer des effets intéressants en changeant la couleur de la source de lumière ambiante. La syntaxe est :
global_settings {ambient_light COLOR}
Le défaut est une source de lumière ambiante blanche à rgb <1, 1, 1>. Seuls les composants rgb sont utilisés. L'actuelle ambiance utilisée est : Ambient = Finish_Ambient * Global_Ambient.
Voir la section "Ambient" pour plus d'information.
La plupart des gens ont noté, à un moment où à un autre, que certaines images paraissent trop claires ou trop sombres, à l'affichage sur leur système. Ainsi, les utilisateurs de Macintosh trouvent que les images créées sur PC sont trop claires, et inversement.
Le paramètre global assumed_gamma travaille en conjonction avec la paramétrage INI Display_Gamma (voir la section "Paramétrage du matériel d'affichage"), pour s'assurer que les fichiers de scènes sont rendus de la même manière sur toutes les plates-formes. Il est utilisé dans les scènes en ajoutant :
global_settings {assumed_gamma Value}
où la valeur est le facteur de correction à appliquer avant d'afficher et/ou de sauvegarder les pixels. Pour les scènes créées dans d'anciennes versions, la valeur de assumed_gamma sera la même que celle de display_gamma. Pour les systèmes PC, le display_gamma le plus commun est 2.2, tandis que les scènes créées sur Macintosh utilisent un gamma de 1.8. Une autre valeur qui apparaît quelquefois dans les scènes est 1.0.
Les scènes qui n'ont pas de paramètre global assumed_gamma, n'auront pas de correction gamma, pour des raisons de compatibilité. Si vous créez de nouvelles scènes, ou que vous en rendez d'anciennes, il est fortement recommandé d'y placer un assumed_gamma approprié. Pour les nouvelles scènes, vous devriez utiliser une valeur de 1.0, car ceci modèle de façon plus réaliste la lumière du monde réel.
Avant d'aller dans les sections suivantes, qui expliquent de manière approfondie, ce qu'est le gamma et pourquoi c'est important, voici un court survol du fonctionnement du gamma dans POV-Ray :
assumed_gamma dans la scène :assumed_gamma 1 :Display_Gamma est appliqué au fichier en sortie.Display_Gamma n'est pas spécifié, 2.2 est utilisé.assumed_gamma G :Display_Gamma/G est appliqué au fichier en sortie.Display_Gamma n'est pas spécifié, 2.2/G est utilisé.assumed_gamma est 1.Les différences sur les affichages des images sont le résultat de la façon dont l'ordinateur prend une image et l'affiche sur le moniteur. Dans le processus de rendu et d'affichage d'une image, plusieurs valeurs de gamma sont importantes, incluant le gamma du fichier scène de POV, et du moniteur.
La plupart des images générées par POV-Ray, stockent des nombres entre 0 et 255, pour chaque composant rouge, vert et bleu de chaque pixel. Ces nombres représentent l'intensité de chaque composant couleur, avec 0 noir et 255 la couleur la plus saturée (soit 100% rouge, 100% vert ou 100% bleu). Quand une image est affichée, la carte graphique converti chaque composant couleur en un voltage, envoyé au moniteur pour illuminer le phosphore rouge, vert et bleu de l'écran. Le voltage est habituellement proportionnel à la valeur de chaque composant couleur.
Le gamma devient important pour l'affichage d'intensités qui ne sont pas le maximum ou le minimum des valeurs possibles. Par exemple, 127 devrait représenter 50% de l'intensité maximale, pour des pixels entre 0 et 255. Sur les systèmes qui ne font pas la correction gamma, 127 sera converti en 50% du voltage maximal. Mais à cause du fonctionnement du phosphore et des électrons, cela peut devenir 22% de l'intensité maximale de la couleur, sur un moniteur avec un gamma de 2.2. Pour afficher un pixel avec 50% de l'intensité maximale, nous aurons besoin d'un voltage à 73% du maximum, Ce qui se traduit par un stockage de 186 dans la valeur du pixel.
La relation entre la valeur d'entrée du pixel et l'intensité affichée, peut être estimée par une fonction exponentielle : obright = ibright ^ display_gamma où obright est l'intensité en sortie, et ibright l'intensité en entrée du pixel. Ces valeurs sont entre 0 et 1 (0% à 100%). La plupart des moniteurs ont une valeur gamma fixée entre 1.8 et 2.6. L'utilisation de la formule précédente avec la valeur de display_gamma supérieure à 1, signifie que la luminosité en sortie sera moins importante que celle en entrée. Pour avoir la même clarté en entrée et en sortie, un gamma global de 1 est nécessaire. Pour faire cela, nous devons corriger le gamma de la clarté en entrée de la même manière que au-dessus, mais avec une valeur gamma de 1/display_gamma, avant de l'envoyer au moniteur. Pour corriger un gamma d'affichage de 2.2, cette correction de gamma avant moniteur utilise une valeur gamma de 1.0/2.2, ou 0.45 approximativement.
La façon dont la correction gamma est faite dépend du matériel et du logiciel utilisés. Sur les systèmes Macintosh, Le système d'exploitation prend sur lui d'isoler les applications d'une différence d'affichage. A travers un panneau de contrôle, l'utilisateur peut paramétrer le gamma du moniteur, et MacOS convertira alors toutes les intensités de pixel pour que le moniteur ait la valeur gamma spécifiée. Sur les machines de Silicon Graphics, l'adaptateur vidéo a une correction gamma intégrée, calibrée pour le moniteur, qui donne un gamma global correct (le défaut est 1.7). Malheureusement, sur les systèmes des PC et d'UNIX, c'est à l'application de faire toutes les corrections nécessaires.
Puisque la plupart des applications et des formats d'image des PC et d'UNIX ne comprennent pas le gamma d'affichage, ils ne font rien pour le corriger. Le résultat est que les créateurs sur ces systèmes ajustent l'image pour qu'elle ait la bonne clarté à l'affichage. Cela signifie que les valeurs des données stockées dans les fichiers sont éclaircies pour compenser l'assombrissement de l'affichage. En fait, la correction gamma de 0.45 est incluse dans les fichiers image créés et stockés sur ces systèmes. Quand ces fichiers sont affichés sur un système Macintosh, la correction gamma interne au fichier, ajoutée à celle du MacOS, donne des images qui seront trop claires. De même, les fichiers corrects sur Macintosh ou SGI, à cause de la correction gamma interne, seront trop sombres sur un PC.
Le format PNG généré par POV-Ray évite le problème de la correction gamma en stockant le gamma du fichier image (qui est 1.0/display_gamma) dans le fichier PNG. Quand il est affiché, plus tard, par un programme correctement paramétré, il utilise cette valeur gamma aussi bien que le gamma d'affichage pour corriger les différences potentielles de gamma utilisées à la création.
Malheureusement, de tous les formats d'image supportés par POV-Ray, PNG est le seul qui a la caractéristique de correction gamma, et est par conséquent préféré pour les images destinées à de multiples plates-formes.
Le problème du gamma du fichier image est que c'est seulement le résultat de la manière dont les scènes sont générées dans POV-Ray. Quand vous commencez une scène, et que vous placez les sources de lumière, et ajustez les textures de surface et les couleurs, vous faites plusieurs essais avant de trouver la bonne combinaison de lumière. Le choix de ce paramétrage dépend des images prévisualisées, ou des images stockées sur le disque, ce qui est dépendant du gamma global du matériel d'affichage utilisé.
Cela signifie que vous faites la correction gamma pour votre matériel particulier. Ce fichier scène génèrera un fichier image qui est corrigé pour votre matériel, et qui s'affichera correctement sur les systèmes identiques au vôtre. Toutefois, quand cette scène est rendue sur une autre plate-forme, elle peut être trop claire ou trop sombre, selon le format de fichier de sortie utilisé. Plutôt que de changer tous les fichiers scène pour avoir une valeur gamma unique (paradis inaccessible !), POV-Ray vous permet de spécifier le gamma d'affichage dans le fichier scène.
Le paramètre global assumed_gamma, en conjonction avec le paramètre INI Display_Gamma, fait connaître à POV-Ray la façon de faire la correction gamma, pour que la prévisualisation et l'image en sortie aient la même clarté sur tous les systèmes. Puisque la correction gamma est interne à POV-Ray, cela produira des fichiers image avec la bonne clarté sur le système actuel, sans prendre en compte le format de sortie utilisé. Et aussi, puisque la correction est faite dans le format de grande précision interne à POV-Ray, cela produit de meilleurs résultats qu'une correction gamma après écriture sur disque.
Bien que vous ne pourrez pas noter de différences sur la sortie de votre système, assumed_gamma est important si la scène est rendue sur une autre plate-forme.
Le paramètre hf_gray_16 est utile lors de l'utilisation de POV-Ray pour générer des champs de niveaux à utiliser dans d'autres scènes. La syntaxe est :
global_settings { hf_gray_16 [Bool] }
La valeur booléenne active ou désactive l'option. Si le mot clé est spécifié sans la valeur booléenne, l'option est activée. Si hf_gray_16 n'est spécifié dans aucune des déclarations global_settings, le défaut est la désactivation.
Quand hf_gray_16 est actif, le fichier de sortie sera de la forme d'un champ de niveaux, avec la hauteur de tout point dépendante de la clarté du pixel. Cette clarté est calculée de la même façon que la conversion des images colorées en niveaux de gris : height = 0.3 * red + 0.59 * green + 0.11 * blue.
Placer l'option hf_gray_16 rendra la prévisualisation, si utilisée, en niveaux de gris plutôt qu'en couleurs. Cela pour vous permettre de voir à quoi ressemblera le champ de niveaux, car certains formats de fichier stockent les champs de niveaux selon un mode difficile à comprendre par la suite. Voir la section "Les champs de niveaux" pour une description sur le mode de stockage de champs de niveaux de POV-Ray, pour chaque type de fichier.
Les calculs d'irisation dépendent de la longueur d'onde dominante des couleurs des lumières primaires rouges, vertes et bleues. Vous pouvez ajuster les valeurs en utilisant le paramétrage global irid_wavelength comme ceci :
global_settings { irid_wavelength COLOR }
La valeur par défaut est rgb <0.25, 0.18, 0.14>, et toute valeur de filtre ou de transmission est ignorée. Ces valeurs sont proportionnelles à la longueur d'onde de la lumière, mais elles ne représentent aucune unité du monde réel.
En général, les valeurs par défaut sont adéquates, mais nous fournissons cette option pour expérimenter les autres valeurs.
Cela vous permet de spécifier la table de caractères de toutes les chaînes de texte. Si vous spécifiez ascii alors seul les codes caractères ASCII dans la fourchette de 0 à 127 seront valides. Vous pouvez facilement trouver une table de caractères ASCII sur Internet. L'option utf8 est un codage de texte spécial Unicode et il vous permet de spécifier les caractères d'à peu près tous les langages actuels. Nous vous suggérons d'utiliser un éditeur de texte avec la capacité d'exporter le texte en UTF8 pour générer les fichiers en entrée. Vous pouvez trouver plus d'information, incluant les tables avec les codes des caractères valides, à http://www.unicode.org/. La dernière option possible est d'utiliser la table de caractère spécifique au système. Pour les détails sur l'option de table de caractères sys se référer à la documentation spécifique à la plate-forme.
Dans les scènes avec de nombreuses surfaces réflectives et transparentes, POV-Ray peut s'enliser à tracer de multiples réflexions et réfractions, qui ne contribuent que peu à la couleur d'un pixel. Le paramètre global max_trace_level définit le nombre maximum de niveaux récursifs où POV-Ray tracera un rayon.
global_settings { max_trace_level Level }
Cela est utilisé quand un rayon est réfléchi, ou passe dans un objet translucide, et quand des ombres sont portées. Quand un rayon touche une surface réflective, il engendre un autre rayon pour voir ce que ce point reflète. C'est le traçage de niveau un. S'il touche une autre surface réflective, un autre rayon est généré, et il passe en traçage de niveau deux. Le maximum par défaut est cinq.
Une amélioration de la vitesse ajoutée à POV-Ray version 3.0 est l'Adaptive Depth Control (ADC). Chaque fois qu'un rayon est généré suite à la réflexion ou à la réfraction, sa contribution à la couleur globale du pixel est réduite par la quantité de réflexion, ou la valeur de filtre de la surface réfractive. A un certain point, cette contribution peut être considérée comme insignifiante, et il n'y a plus de raison de tracer d'autres rayons. Le contrôle de profondeur adaptatif est ce qui cherche cette contribution, et prend la décision de l'abandon. Dans les scènes avec beaucoup de surfaces partiellement réflectives ou réfractives, cela peut amener une réduction considérable du nombre de rayons lancés, et rend plus praticable l'utilisation d'une valeur plus grande de max_trace_level.
Cette réduction de la contribution aux couleurs est due à la quantité de réflexion et/ou des valeurs de filtre de chaque surface, ainsi, un miroir parfait, ou une surface parfaitement plane, ne sera pas optimisé par ADC. Vous pouvez voir les résultats de ADC en regardant l'affichage de Rays Saved et Highest Trace Level sur l'écran des statistiques.
Le point à partir duquel la contribution d'un rayon est considérée comme insignifiante est contrôlé par la valeur de adc_bailout. Le défaut est 1/255 ou 0.0039, approximativement, car un changement plus petit ne sera pas visible sur une image en 24 bit. Généralement, ce paramètre est parfaitement adéquat, et doit être laissé. La mise à 0 de adc_bailout désactivera ADC, comptant complètement sur max_trace_level pour placer une limite au nombre de rayons générés.
Si le max_trace_level est atteint avant qu'une surface non réflective soit trouvée, et si ADC n'a pas autorisé une sortie plus précoce du rayon, la couleur est rendue noire. Augmenter max_trace_level si vous voyez des aires noires dans une surface réflective où il devrait y avoir une couleur.
L'autre symptôme perceptible est avec les objets transparents. Pour l'exemple, faites une union de sphères concentriques avec une texture transparente. Faites en 10 dans l'union, avec un rayon de 1 à 10, et rendez la scène. L'image montrera correctement les premières sphères, puis du noir. Cela parce qu'un nouveau niveau est utilisé chaque fois que vous passez à travers une surface transparente. Augmentez max_trace_level pour corriger ce problème.
Note : l'augmentation de max_trace_level utilisera plus de mémoire et de temps, et peut provoquer un arrêt du programme avec une erreur de débordement de pile, bien que ADC le soulagera grandement.
Les valeurs de max_trace_level peuvent aller jusqu'à 256. S'il n'y a pas de max_trace_level spécifié et que la valeur par défaut est atteinte pendant le rendu, une alarme est affichée.
POV-Ray utilise une série de piles internes pour collecter les points d'intersections rayon/objet. Le nombre maximum habituel pour ces I-Stacks est 64. Les scènes complexes peuvent faire déborder ces piles. POV-Ray ne s'arrêtera pas, mais il rendra incorrectement la scène. Quand POV-Ray s'arrête, un nombre de statistiques sont affichées. Si vous voyez I-Stack Overflows dans le rapport, vous devez augmentez la taille de la pile. Ajoutez un paramètre global à votre scène, comme ceci :
global_settings { max_intersections Integer }
Si I-Stack Overflows reste, augmentez encore cette valeur.
Les modèles waves et ripples sont générés par cumul d'une série de vagues, chacune avec un centre et une taille légèrement différents. Par défaut, dix vagues sont cumulées, mais cette quantité peut être globalement contrôlée par le paramètre number_of_waves.
global_settings { number_of_waves Integer }
Le changement de cette valeur affecte à la fois les vagues et les ondulations de tous les modèles de la scène.
Il y a trois générateurs de bruits intégrés.
noise_generator 1 le bruit utilisé dans POV_Ray 3.1noise_generator 2 la version 'à fourchette corrigée' de l'ancien bruit, il ne montre pas les plateaux vus avec noise_generator 1noise_generator 3 génère le bruit de PerlinLe défaut est noise_generator 2
Note : les générateurs de bruit peuvent aussi être utilisés avec les déclarations de pigment/normale/etc.
Note importante : la caractéristique radiosité est quelque peu expérimentale dans POV-Ray. Il y a une haute probabilité que la syntaxe et le fonctionnement soient changés dans les versions futures. Nous ne pouvons pas garantir que les scènes l'utilisant rendront de la même manière dans les futures versions, ou qu'une compatibilité de langage soit maintenue.
La radiosité est un travail supplémentaire qui calcule les inter-réflexions diffuses de la lumière de façon plus réaliste. Ces inter réflexions diffuses peuvent être vues si vous placez une chaise blanche dans un pièce moquettée de bleu, avec des murs et des rideaux bleus. La chaise prendra une teinte bleutée grâce à la lumière réfractée par les autres parties de la pièce. Notez aussi que les ombres ne sont pas totalement sombres, même si aucune lumière n'y tombe. La lumière diffuse réfléchie depuis les objets, emplit les ombres. Normalement, le raytraceur utilise un truc appelé lumière ambiante pour simuler de tels effets, mais ce n'est pas très précis.
Les calculs de radiosité ne sont faits que quand un bloc radiosity{} est utilisé dans un bloc global_settings{}.
Les sections suivantes décrivent comment fonctionne la radiosité, comment la contrôler avec des paramètres globaux variés, et des trucs pour accorder la qualité et la vitesse.
| 3.2.5 La radiosité |