3.3.7 Les sources de lumière

La source de lumière n'est pas réellement un objet. Elles n'ont pas de forme visible par elles-mêmes. Ce ne sont que des points, ou des aires, émettant de la lumière. Elles sont catégorisées parmis les objets, ainsi elles peuvent être combinées avec des objets en utilisant l'union. Leur syntaxe complète est :

LIGHT_SOURCE:
	light_source {
		<Location>, COLOR
		[LIGHT_MODIFIERS...]
	}
LIGHT_MODIFIER:
	LIGHT_TYPE | SPOTLIGHT_ITEM | AREA_LIGHT_ITEMS |
	GENERAL_LIGHT_MODIFIERS
LIGHT_TYPE:
	spotlight | shadowless | cylinder | parallel
SPOTLIGHT_ITEM:
	radius Radius | falloff Falloff | tightness Tightness |
	point_at <Spot>
PARALLEL_ITEM:
	point_at <Spot>
AREA_LIGHT_ITEM:
	area_light <Axis_1>, <Axis_2>, Size_1, Size_2 |
	adaptive Adaptive | jitter Jitter | circular | orient
GENERAL_LIGHT_MODIFIERS:
	looks_like { OBJECT } |
	TRANSFORMATION fade_distance Fade_Distance |
	fade_power Fade_Power | media_attenuation [Bool] |
	media_interaction [Bool] | projected_through

Les valeurs par défaut sont :

LIGHT_TYPE : pointlight
falloff : 70
media_interaction : on
media_attenuation : off
point_at : <0, 0, 0>
radius : 70
tightness : 10

Les différents types de sources de lumière, et les modificateurs optionnels sont décrits dans les sections suivantes.

Les deux premiers éléments sont communs à tous les types. Le vecteur <Location> donne la position de la lumière. Le COLOR donne la couleur de la lumière. Seuls les composants rouge, vert et bleu sont significatifs. Toutes les valeurs pour transmit ou filter sont ignorées.

Note : vous variez l'intensité de la lumière ainsi que sa couleur avec ce paramètre. Une couleur comme rgb <0.5, 0.5, 0.5> donne une lumière blanche à la moitié de l'intensité normale.

Tous les mots clés ou les éléments peuvent apparaître dans n'importe quel ordre. Quelques mots clés n'ont d'effet que s'ils sont spécifiés avec d'autres. Les mots clés sont regroupés en catégories fonctionnelles, pour clarifier les liens qui les unissent. Le GENERAL_LIGHT_MODIFIERS fonctionne avec tout type de lumière et toute option.

Note : les TRANSFORMATIONS comme le déplacement, la rotation etc. peuvent être appliqués, mais aucun autre OBJECT_MODIFIERS ne peut être utilisé.

Il y a trois types de lumières exclusives. Si aucun type n'est donné, c'est une lumière ponctuelle. Les autres choix sont spotlight et cylinder.

3.3.7.1 Les lumières ponctuelles

Le type de lumière le plus simple est la lumière ponctuelle. Une lumière ponctuelle envoie de la lumière d'une couleur spécifiée, uniformément dans toutes les directions. C'est la source de lumière par défaut. Le vecteur <Location> et COLOR sont les deux seuls éléments requis. Par exemple :

light_source {
	<1000, 1000,-1000>, rgb <1, 0.75, 0>	//an orange light
}

3.3.7.2 Les projecteurs

Normalement, la lumière irradie également dans tous les sens. Toutefois, le mot clé spotlight peut être utilisé pour créer un cône de lumière intense au centre et décroissant vers les bords.

Bien que le cône de lumière baisse pour donner une douce bordure, les objets illuminés donnent toujours des ombres franches. La syntaxe est :

SPOTLIGHT_SOURCE:
	light_source {
		<Location>, COLOR spotlight
		[LIGHT_MODIFIERS...]
	}
LIGHT_MODIFIER:
	SPOTLIGHT_ITEM | AREA_LIGHT_ITEMS | GENERAL_LIGHT_MODIFIERS
SPOTLIGHT_ITEM:
	radius Radius | falloff Falloff | tightness Tightness |
	point_at <Spot>

Les valeurs pas défaut sont :

radius : 30 degrés
falloff : 45 degrés
tightness : 0

Le mot clé point_at donne l'objectif du projecteur en coordonnées 3D. Une ligne entre la position de la source et la coordonnée point_at forme le centre du cône de lumière. L'illustration suivante sera utilisée à la compréhension des relations entre ces valeurs.

La géométrie d'un projecteur
La géométrie d'un projecteur

Les mots clés falloff, radius et tightness contrôlent la façon dont la lumière finit sur les bords du cône. Ces trois mots clés ne s'appliquent que si les mots clés spotlight ou cylinder sont utilisés.

Le mot clé falloff spécifie la taille totale du cône de lumière. C'est le point où la lumière tombe à zéro. La valeur numérique donne l'angle, en degrés, entre le bord du cône et son centre. Le mot clé radius donne la taille du point lumineux intense au centre du cône. Ce point lumineux est un cône de lumière intense dans le cône du projecteur et qui a le même centre. La valeur de radius donne l'angle en degrés entre le bord de ce cône intense et la ligne centrale. La lumière dans le cône central a une intensité uniforme. La lumière entre le cône interne et externe descend doucement vers zéro.

Par exemple, en prenant tightness 0, avec radius 10 et falloff 20, la lumière à 10 degrés du centre est en pleine intensité. Entre 10 et 20 degrés, elle descend jusqu'à l'intensité zéro. A 20 degrés et au delà, il n'y a plus de lumière.

Note : si les valeurs de radius et de falloff sont proches ou égales, le projecteur a un bord étroit.

Les valeurs des paramètres radius et tightness sont la moitié des angles d'ouverture de ces deux cônes, et ces deux angles ne doivent pas dépasser 90 degrés. La lumière décroît lentement entre le rayon et l'angle de déclin, comme montré dans la figure (tant que l'angle du rayon n'est pas négatif).

Courbe de multiplication de l'intensité avec un angle de déclin fixe de 45 degrés
Courbe de multiplication de l'intensité avec un angle de déclin fixe de 45 degrés
Courbe de multiplication de l'intensité avec un angle de rayon fixe de 45 degrés
Courbe de multiplication de l'intensité avec un angle de rayon fixe de 45 degrés

Le mot clé tightness est utilisé pour spécifier un adoucissement exponentiel supplémentaire des bords. Une valeur autre que 0 affectera la lumière dans le cône intense, comme dans le cône de déclin. L'intensité de la lumière à un angle du centre est donné par : intensity * cos(angle)tightness. La valeur par défaut est 0. Les valeurs basses rendront le projecteur plus lumineux, le cône interne plus étendu, les bords plus francs. Les valeurs hautes atténueront le projecteur, rétrécissant le cône interne, et adoucissant les bords. Les valeurs entre 0 et 100 sont acceptables.

Courbe de multiplication de l'intensité avec un angle de rayon et de déclin fixes de 30 et 60 degrés, et différentes valeurs de tightness
Courbe de multiplication de l'intensité avec un angle de rayon et de déclin fixes de 30 et 60 degrés, et différentes valeurs de tightness

Vous noterez avec ces figures, que les angles de rayon et de déclin interagissent avec le paramètre tightness. Pour donner un contrôle total de l'apparence du projecteur à la valeur de tightness, utilisez un rayon de 0 et un déclin de 90. Comme vous pouvez le voir sur la figure suivante. Dans ce cas, l'angle de déclin n'a pas d'effet, et l'aire illuminée est seulement déterminée par le paramètre tightness.

Courbe de multiplication de l'intensité avec un angle de rayon négatif, et différentes valeurs de tightness
Courbe de multiplication de l'intensité avec un angle de rayon négatif, et différentes valeurs de tightness

Les projecteurs peuvent être utilisés partout où une source de lumière normale a sa place. Ils sont également invisibles. Ils peuvent également être utilisés en conjonction avec des aires lumineuses.

3.3.7.3 Les lumières cylindriques

Le mot clé cylinder spécifie une source de lumière cylindrique, qui est utile pour simuler les rayons lasers. Les lumières cylindriques fonctionnent comme les projecteurs, mais leurs rayons sont contraints dans un cylindre. La syntaxe est :

CYLINDER_LIGHT_SOURCE:
	light_source {
		<Location>, COLOR cylinder
		[LIGHT_MODIFIERS...]
	}
LIGHT_MODIFIER:
	SPOTLIGHT_ITEM | AREA_LIGHT_ITEMS | GENERAL_LIGHT_MODIFIERS
SPOTLIGHT_ITEM:
	radius Radius | falloff Falloff | tightness Tightness |
	point_at <Spot>

Les valeurs par défaut sont :

radius : 0.75 degrés
falloff : 1 degrés
tightness : 0

Les mots clés point_at, radius, falloff et tightness contrôlent les mêmes caractéristiques que dans les projecteurs. Voir "Les projecteurs" pour plus de détails.

Vous devez garder en mémoire que la source de lumière cylindrique reste une lumière ponctuelle. Les rayons sont émis depuis un point, et sont seulement contraints dans un cylindre, ils ne sont pas parallèles.

3.3.7.4 Les lumières parallèles

Syntaxe :

light_source {
	LOCATION_VECTOR, COLOR
	[LIGHT_SOURCE_ITEMS...]
	parallel
	point_at VECTOR
}

Le mot clé parallel peut être utilisé avec tout type de source de lumière.

Note : pour les lumières ponctuelles, point_at doit venir après parallel.

Les lumières parallèles sont utiles pour simuler des sources de lumières très éloignées, comme le soleil. Comme le suggère le nom, elles font des rayons de lumière parallèles.

Techniquement, cela est fait par l'envoi de rayons depuis le point le plus proche d'un plan vers le point d'intersection de l'objet. Le plan est déterminé par une perpendiculaire définie par le location de la lumière et le vecteur point_at.

Deux choses doivent être considérées lors du choix de la position de la lumière (spécialement sa distance) :

  1. Toute partie d'un objet au-delà du plan de la lumière reste illuminé selon l'axe de la lumière, mais il ne projette aucune ombre, ni n'en reçoit.
  2. fade_distance et fade_power utilisent la location de la lumière pour déterminer la distance pour son atténuation, donc elle ressemble à celle d'une lumière ponctuelle.
    Les aires lumineuses utilisent la position de la lumière dans ce calcul.

3.3.7.5 Les aires lumineuses

Les aires lumineuses occupent une aire finie de l'espace de une ou deux dimensions. Elles peuvent donner des ombres douces car un objet peut partiellement obstruer la lumière. Alors que les sources ponctuelles sont bloquées ou non.

Le mot clé area_light dans POV-Ray crée des sources de forme rectangulaires, comme une sorte de panneau lumineux plat. Plutôt que de faire les calculs complexes pour modeler une vraie aire lumineuse, il y a approximation par une aire de sources ponctuelles recouvrant l'aire. L'effet d'aire ne s'applique que pour les ombres. L'illumination de l'objet est toujours celle d'un point lumineux. L'intensité de chaque point lumineux dans l'aire est estompée, de manière à ce que le total de la lumière émise soit égal à la couleur spécifiée dans la déclaration. La syntaxe est :

AREA_LIGHT_SOURCE:
	light_source {
		LOCATION_VECTOR, COLOR
		area_light
		AXIS_1_VECTOR, AXIS_2_VECTOR, Size_1, Size_2
		[adaptive Adaptive] [ jitter ]
		[ circular ] [ orient ]
		[ [LIGHT_MODIFIERS...]
	}

Tout type de lumière peut être une lumière d'aire.

La commande area_light définit la position, la taille et l'orientation de l'aire lumineuse, ainsi que le nombre de sources. Le vecteur de position est le centre d'un rectangle défini par les deux vecteurs <Axis_1> et <Axis_2>. Ils spécifient les longueurs et les directions des bordures de la lumière.

Aire lumineuse de 4x4, position et vecteurs
Aire lumineuse de 4x4, position et vecteurs

Puisque les aires sont de forme rectangulaire, ces vecteurs doivent être perpendiculaires entre eux. Plus la taille est grande, plus la partie douce de l'ombre sera grande. Les entiers Size_1 et Size_2 spécifient le nombre de lignes et de colonnes de lumières ponctuelles. Plus vous utilisez de lumières, plus vos ombres seront douces, mais plus vous consommerez de temps de rendu.

Note : il est possible de spécifier des paramètres de projecteurs avec les paramètres de l'aire lumineuse, pour créer des aires de projecteurs. Leur utilisation est une bonne façon d'accélérer les scènes, car vous pouvez ainsi confiner les longs calculs d'ombres sur les seules parties de la scène qui en ont besoin.

Un effet intéressant peut être créé en utilisant une source de lumière linéaire. Au lieu d'avoir une forme rectangulaire, une source linéaire s'étend le long d'une ligne, comme une sorte de tube fluorescent. Pour cela, créez une aire lumineuse avec une des dimensions de l'aire à 1.

La commande jitter est optionnelle. Son utilisation provoque le brouillage aléatoire des sources ponctuelles, pour éliminer tout découpage des ombres qui pourrait apparaître. Le brouillage est totalement aléatoire d'un rendu à un autre, et ne doit pas être utilisé dans les animations.

La commande adaptive est utilisée pour activer l'échantillonnage adaptatif de la source de lumière. Par défaut, POV-Ray calcule la quantité de lumière qui atteint une surface, en lançant un rayon depuis chaque point de lumière de l'aire. Comme vous pouvez vous en douter, c'est très lent. L'échantillonnage adaptatif tente d'approcher du même calcul en utilisant un nombre minimum de rayons tests. Le nombre spécifié après le mot clé contrôle la quantité d'échantillons adaptatifs utilisés. Plus ce nombre est important, plus vos ombres seront précises, mais plus le temps de rendu sera important. Si vous ne savez pas quelle valeur prendre, 1 est un bon point de départ. Le mot clé adaptive n'accepte que les valeurs entières, et ne peut pas être négatif.

Quand il fait de l'échantillonnage adaptatif, POV-Ray commence par un rayon test aux quatre coins de l'aire lumineuse. Si la quantité de lumière reçue des coins est approximativement la même, l'aire est considérée comme totalement en vue, ou totalement cachée. L'intensité de la lumière est alors calculée comme la moyenne des intensités reçues de chaque coin. Par contre, si la quantité de lumière diffère entre les quatre coins, alors, l'aire est partiellement cachée. Elle est découpée en quatre quartiers, et chaque section est échantillonnée comme précédemment. Cela permet à POV-Ray d'estimer rapidement la surface visible de l'aire lumineuse, sans avoir à lancer un rayon test de chaque point de l'aire. Visuellement, l'échantillonnage fonctionne comme ceci.

Echantillons adaptatifs d'aire lumineuse
Echantillons adaptatifs d'aire lumineuse

Bien que la méthode d'échantillonnage adaptatif est rapide (relativement parlant), elle peut produire des ombres erronées. La solution est de réduire la quantité d'échantillonnage adaptatif, sans le désactiver. Le nombre après le mot clé adaptive ajuste le nombre de fois où l'aire est découpée avant le départ de la phase d'adaptation. Par exemple, avec adaptive 0, un minimum de 4 rayons seront lancés. Avec adaptive 1, un minimum de 9 rayons seront lancés (adaptive 2 donne 25 rayons, adaptive 3 donne 81 rayons, etc). Bien entendu, plus vous lancez de rayons, plus le temps de rendu sera important, aussi, vous devrez utiliser la valeur la plus basse qui vous donnera des résultats acceptables.

Le nombre de rayons n'excédera jamais la valeur spécifiée pour les lignes et les colonnes de points. Par exemple area_light x, y, 4, 4 spécifie une aire de 4 par 4. Si vous donnez adaptive 3, cela signifiera que vous démarrez avec une aire de 9 par 9. Dans ce cas, aucun échantillonnage n'est fait. L'aire 4 par 4 est utilisée.

La commande circular a été ajoutée aux aires lumineuses pour mieux créer les ombres douces circulaires. Avec les aires lumineuses normales, les pseudo sources sont arrangées dans une grille rectangulaire et projettent donc des ombres partiellement rectangulaires autour de tous les objets, y compris les objets circulaires.
En incluant circular dans une aire lumineuse, la lumière est déformée pour ressembler à un cercle : ainsi, les sources de lumière sphériques ou circulaires sont mieux simulées.

Quelques éléments dont il faut se souvenir :

La commande orient a été ajoutée aux aires lumineuses pour mieux créer les ombres adoucies. Sans ce modificateur, vous devez prendre garde au choix des vecteurs d'axe d'une aire lumineuse car ils définissent à la fois son aire et son orientation.
Les aires lumineuses sont en deux dimensions : les ombres en face de l'aire lumineuse reçoivent la lumière depuis une plus grande surface que les ombres sur les côtés.

Aire lumineuse faisant face à un objet
Aire lumineuse faisant face à un objet

Actuellement, l'aire, dont la lumière est émise depuis les bords d'une aire lumineuse, est réduite à une simple ligne, ne donnant de l'ombre que dans une direction.

Aire lumineuse ne faisant pas face à un objet
Aire lumineuse ne faisant pas face à un objet

Entre ces deux extrèmes, la surface de l'aire émettant la lumière progresse graduellement.
En incluant le modificateur orient dans l'aire lumineuse, la lumière est tournée pour que à chaque test d'ombre, elle fasse face au point testé. L'orientation initiale n'est plus importante, donc vous ne devez vous occuper que des dimensions (de l'aire) de la source de lumière lors de la spécification des vecteurs d'axe.
Dans les faits, cela fait apparaître l'aire lumineuse en 3 dimensions (une aire lumineuse avec les vecteurs d'axe perpendiculaires de même dimension utilisant circular et orient simule une source de lumière sphérique).

orient a quelques restrictions :

  1. Il ne peut être utilisé qu'avec les lumières "circulaires".
  2. Les deux axes de l'aire lumineuse doivent avoir la même longueur.
  3. Les deux axes de l'aire lumineuse doivent utiliser un même nombre d'échantillons, et ce dernier doit être plus grand que un.

Ces trois règles existent parce que sans elles, vous pouvez avoir des résultats imprévisibles avec la caractéristique orient.

Si l'une des deux premières règles est violée, POV donnera une alerte et corrigera le problème. Si la troisième règle est violée, POV donnera seulement un message d'alarme et ne corrigera pas automatiquement le problème.

3.3.7.6 Les lumières sans ombres

En utilisant le mot clé shadowless vous pouvez arrêtez la création d'ombre. Ces lumières sont parfois appelées 'lumières d'emplissage'. Elles sont une autre façon de simuler une lumière ambiante, quoiqu'elles aient une source définie. La syntaxe est :

SHADOWLESS_LIGHT_SOURCE:
	light_source {
		<Location>, COLOR shadowless
		[LIGHT_MODIFIERS...]
	}
LIGHT_MODIFIER:
	AREA_LIGHT_ITEMS | GENERAL_LIGHT_MODIFIERS

shadowless peut être utilisé avec tous les types de sources de lumière. La seule restriction est que shadowless doit être avant ou après tout mot clé d'option de projecteur ou de cylindre. Ne les mélangez pas ou vous aurez le message "Keyword 'the one following shadowless' cannot be used with standard light source". Notez aussi que les lumières sans ombres ne donneront pas de surbrillance sur les objets illuminés.

3.3.7.7 'looks_like'

Normalement, la source de lumière n'a pas de forme visible. Elle émet simplement de la lumière depuis un point ou une aire invisible. Vous pouvez donner toute forme à une source de lumière en ajoutant la caractéristique looks_like { OBJECT }.

Il y a, implicitement, l'option no_shadow attachée à l'objet looks_like, pour que la lumière ne soit pas bloquée par l'objet. Sans cela, la lumière resterait confinée à l'intérieur de l'objet. En fait, l'objet projetterait une ombre sur tout.

Si vous voulez que l'objet projette de l'ombre, alors vous devez l'attacher avec union et ne pas utiliser looks_like, comme ci-dessous :

union {
	light_source {<100, 200,-300> color White}
	object {My_Lamp_Shape}
}

Vraisemblablement, des parties de la lampe sont translucides pour autoriser la sortie de lumière.

3.3.7.8 'projected_through'

Syntaxe :

light_source {
	LOCATION_VECTOR, COLOR
	[LIGHT_SOURCE_ITEMS...]
	projected_through { OBJECT }
}

projected_through peut être utilisé avec tout type de source de lumière. Tout objet peut être utilisé, pourvu qu'il ait été déclaré avant.
La projection de lumière à travers un objet est l'opposé de la projection d'ombre : seulement les rayons qui touchent l'objet à traverser participeront à la scène.
Cela fonctionne aussi avec les aires lumineuses, donnant des projecteurs avec des bords adoucis.
Tout objet entre la lumière et l'objet à traverser ne donnera pas d'ombre pour cette lumière. De même, aucune surface dans l'objet traversé ne donnera d'ombre.
Toutes les textures et intérieurs de l'objet seront oubliés et l'objet n'apparaîtra pas dans la scène.

3.3.7.9 L'affaiblissement de la lumière

Par défaut, POV-Ray ne diminue pas la lumière lorsqu'elle traverse l'espace. Pour obtenir plus de réalisme, les mots clés fade_distance et fade_power peuvent être utilisés pour modéliser l'affaiblissement de la lumière selon la distance.

Le mot clé fade_distance est utilisé pour spécifier la distance où se produit l'intensité maximale, c'est-à-dire l'intensité donnée par la spécification COLOR. L'atténuation est décrite par le mot clé fade_power, qui détermine le taux d'affaiblissement. Par exemple, l'affaiblissement linéaire ou quadratique peut être donné avec fade_power à 1 ou 2, respectivement. La formule complète pour calculer le facteur d'atténuation de la lumière est


avec d étant la distance parcourue par la lumière.

Les fonctions d'atténuation de la lumière pour différentes puissances d'atténuation
Les fonctions d'atténuation de la lumière pour différentes puissances d'atténuation

Vous devez noter deux importants faits : premièrement, pour des fade_distance plus grandes que 1, l'intensité de la lumière, à des distances plus petites, croît. Cela est nécessaire pour conserver la couleur de la lumière si la distance à parcourir est égale à fade_distance. Deuxièmement, seule la lumière provenant directement de la source est atténuée. Les lumières réfléchies ou réfractées ne sont pas atténuées par la distance.

3.3.7.10 L'interaction du média atmosphère

Par défaut, les sources de lumière interagiront avec une atmosphère ajoutée à la scène. Cette caractéristique peut être désactivée en utilisant le mot clé media_interaction off dans la déclaration de la source de lumière.

Note : dans POV-Ray 3.0, cela était la fonction du mot clé atmosphere.

3.3.7.11 L'atténuation atmosphérique

Normalement, la lumière provenant des sources de lumière n'est pas influencée par le brouillard ou le média atmosphère. Cela peut être changé en activant l'atténuation atmosphérique (media_attenuation on) pour une source donnée. Toute la lumière de cette source sera alors diminuée lors de son parcours à travers le brouillard ou le média. Cela donne une diminution exponentielle de l'intensité, basée sur la distance, gérée par le brouillard ou le média utilisé. S'il n'y a ni brouillard, ni média, aucun changement n'aura lieu.

Note : dans POV-Ray 3.0, cela était la fonction du mot clé atmospheric_attenuation.

Complément sur le déplacement

Complément sur la rotation

3.3.6 Constructive Solid Geometry 3.3.6 Constructive Solid Geometry 3.3.8 Les groupes de lumières 3.3.8 Les groupes de lumières