Que la lumière soit virtuelle
Le codage des images
numériques en seize millions de
couleurs a montré ses limitations. La nouvelle technique des
images à large dynamique offre de nouvelles
possibilités, maintenant exploitées par plusieurs
logiciels de rendering.
L'image numérique classique que tout le monde
connaît et utilise est codée sur 256 valeurs
(entre 0 et 255) sur chaque plan R, V et B, c'est-à-dire en
24 bits par pixel (3 x 8bits). Trois plans qui peuvent prendre chacun
256 valeurs, cela donne par combinaison pas moins de seize millions de
couleurs, ce qui est déjà impressionnant. Ce
n'est en réalité pas suffisant pour certaines
applications. Ce codage est imparfait pour trois raisons majeures : le
manque de finesse, une dynamique lumineuse réduite ainsi
qu'une couverture incomplète de l'espace de couleurs. Les
images codées avec une dynamique plus grande, dites HDR, ont
été inventées pour pallier
à ces insuffisances. Elles sont utilisées avec
succès dans les domaines où l'on souhaite
améliorer le réalisme de l'image, en particulier
dans le cinéma.
Les pionniers du cinéma
L'enregistrement d'images numériques sur pellicule (35mm ou
70mm) fut à l'origine de la première remise en
cause des images codées à 8 bits par plan. En
effet, un dégradé unicolore ne pouvant prendre
que 256 valeurs différentes, les marches d'escalier qui en
résultent deviennent visibles sur un écran
cinéma. Il fallait plus de finesse sur toute la
chaîne de production, depuis le scan jusqu'au shooting. Le
deuxième défaut est le manque de dynamique. Avec
un codage classique, le rapport d'intensité lumineuse entre
le pixel le plus lumineux et le pixel le plus faible, non noir, n'est
que de 255. Or dans la réalité, il est courant
que la dynamique entre les zones les plus lumineuses et les plus
sombres d'une scène se mesure en plusieurs milliers, voire
en millions. Le rapport lumineux entre le soleil et un
intérieur sombre est de plus de deux milliards. Et
déjà sur une pellicule, d'après Kodak,
la dynamique enregistrée est supérieure
à mille. La solution à ces deux
problèmes, le manque de finaesse et de dynamique, est de
travailler en 10, 12 ou même 16 bits par plan. Les films sont
maintenant systématiquement scannés avec 16 bits
par couleur. Pour ces raisons, Pixar s'est
intéressé depuis longtemps au codage d'images
avec une large dynamique, et a créé son propre
format d'images en 33 bits/pixel. Le résultat est
une dynamique de 5000, suffisante pour le film. De son
côté, Kodak a aussi créé il
y a déjà plusieurs années le format
Cineon, qui peut comporter des couleurs codées au choix
à 1, 8, 10, 12, 16, 32, ou 64 bits et qui a
été repris comme standard ANSI et SMPTE sous le
nom DPX.
Reconstitution panoramique dans
Lightwave de la Basilique St-Pierre
grâce à un environnement HDR, pour le film "Fiat
Lux"
© Paul Debevec
Pour l'étalonnage, cette évolution fut
très appréciée. On peut en effet
manquer de richesse dans une zone de la gamme d'intensité ou
de couleurs, que l'on souhaite étendre. Pour être
capable d'étalonner finement, il est fort utile de pouvoir
travailler sur des images en 12 ou 16 bits. Si par exemple les noirs ou
les blancs sont écrasés lors d'un premier
étalonnage, il est impossible de
récupérer ensuite du détail. Et
après deux étalonnages successifs, une image est
détruite. Les palettes professionnelles comme Photoshop ou
FilmGimp, travaillent en interne en 16 bits.
Le codage HDR (High Dynamic Range)
Mais ces codages, jusqu'à 16 bits par plan, ne stockent au
maximum qu'une dynamique de quelques milliers. D'où
l'invention des images HDR, pour High Dynamic Range, capables de coder
toute la dynamique lumineuse d'une scène réelle.
Le moyen le plus simple, mais le plus coûteux en ressources,
est de coder chaque valeur en flottant, soit en 32 bits par couleur.
C'est le choix effectué pour le calcul en interne des
renderings, c'est aussi le cas de plusieurs formats courants dits HDR
comme le PFM Portable Float Map (.pfm), le CineonFP (.cin), ou encore
le format HDR utilisé par Lightwave, le Flexible Image
Format (.flx). Mais ce n'est pas une solution très
optimisée. Une image classique en 4K par 4K prend 50 Mo en
mémoire. Pour une palette qui travaille en interne en 16
bits, la même image prend donc 100 Mo en mémoire.
Et lorsqu'on passe en flottant, il faut encore 100 Mo
supplémentaire. Cela devient vite ingérable en
mémoire et en place disque.
Il fallait être plus malin. Il existe de nouveaux formats
toujours dits HDR, qui savent coder une dynamique très large
sur un nombre de bits réduit. Le principe est en
général de décomposer l'image en zones
d'intensité distinctes (par exemple en séparant
la fenêtre en contre-jour et l'intérieur de la
pièce) puis de coder ces différentes zones de
manière plus fine. Un des premiers formats de ce type a
été mis au point en 1987 pour le moteur de
rendering réaliste Radiance, par Greg Ward (Gregory Larson).
Les trois plans RVB sont stockés sur seulement 32 bits, donc
prennent trois fois moins de place qu'une image stockée en
flottant, et pourtant la dynamique stockable est
déjà de 1… suivie de 76
zéros. Evidemment, on perd quand même un peu en
précision. L'erreur de codage peut atteindre 1%.
Retranscrire toutes les couleurs
Le codage RGB ne couvre qu'une partie
du spectre visible
Le troisième défaut du codage classique concerne
la couleur. Les trois plans RVB décrivent un triangle qui
n'est qu'une partie de l'espace des couleurs visibles. Certains ont
travaillé sur une représentation
numérique complète de l'espace des couleurs.
C'est le cas pour un des formats HDR les plus récents,
toujours en 32 bits par pixel, LogLuv, proposé par Greg Ward
qui travaille chez SGI. Il permet de représenter l'ensemble
de l'espace de couleurs de manière équitablement
répartie. La dynamique couverte est la moitié de
celle couverte par le format utilisé dans Radiance, mais la
précision est améliorée, l'erreur ne
dépassant pas 0,3%. Il existe d'ailleurs une version de
LogLuv pas plus lourde qu'une image classique, à 8 bits par
plan, qui est nommé LDR (Low Dynamic Range), avec une
dynamique de cent mille. Ce qui montre bien que l'on peut
décorreler le poids d'une image de sa capacité
à transcrire une dynamique, à condition de
réfléchir au codage.
| Nombre de bits par pixel
|
Formats |
Dynamique en puissance
de dix |
| 24 |
jpeg, tga, etc |
2 |
| 24 |
LogLuv / SGI |
5 |
| 32 |
LogLuv / SGI |
38 |
| 32 |
RGBE / Radiance |
76 |
| 33 |
Log / Pixar |
3,5 |
| 96 |
PFM, CineonFP, FLX /
Lightwave |
infinie |
Tableau : Comparatif des principaux
formats HDR et LDR
Fabriquer
des images réelles HDR
Le calcul d'images de synthèse à large dynamique
lumineuse est assez simple dans le principe. Il suffit que tous les
calculs internes au rendering aient lieu en flottant, et qu'il n'y ait
pas de limitation dans les valeurs que l'on peut données,
comme à l'intensité des sources lumineuse. En
revanche, la capture d'images réelles HDR, dites HDRI (High
Dynamic Range Imagery) a nécessité de mettre au
point des méthodes spécifiques et de
développer des algorithmes adaptés. Les appareils
photos actuels ne sachant pas saisir toute la dynamique lumineuse d'une
scène réelle en une seule passe, le principe
consiste à saisir plusieurs images avec des diaphragmes
différents, du plus sombre au plus lumineux. On assemble
ensuite ces différentes images en numérique, pour
en faire une seule image HDR qui contient toute la dynamique de la
scène réelle.
Une image HDR visualisée dans
Photogenics HDR avec deux
temps d'exposition différents.
Cela montre bien
l'impossibilité avec une image classique de voir en
même temps les détails extérieurs et
intérieurs.
Des palettes HDR comme Photogenics HDR, qui vaut environ 700 Euros, ou
comme le freeware HDRshop permettent d'assembler une série
d'images en une seule image HDR, puis de les manipuler. Ces outils
offrent aussi toute une série de fonctions classiques de
palettes graphiques, applicables sur ces images d'un type un peu
particulier. Une fois post-traitées, ces images sont
exportées soit en HDR, soit en 24 bits classique. Cette
méthode est maintenant rôdée et assez
simple. A terme, les appareils numériques (photos ou
caméras vidéo) vont savoir directement
enregistrer des images HDR en une passe.
Les
HDRI au service du réalisme
L'utilisation phare qui a mis à la mode les images HDR est
une technique de rendering réaliste, dite "Image based
Lighting", inventée par Paul Debevec. L'association d'une
map d'environnement HDR associée à du ray-tracing
ou de la radiosité, est devenu en très peu de
temps le must du photo-réalisme. Dès que la
scène réelle est contrastée, les HDR
s'imposent pour le calcul des réflexions même si
l'image finale est exportée en 8 bits par couleur. En
revanche, si la scène présente peu de contraste
lumineux, l'utilisation des HDR n'est pas obligatoire. Radiance est le
premier render a avoir utilisé des images HDR. Ensuite
Lightwave, suivis récemment par Arnold, Brazil, FinalRender,
Renderman et XSI depuis la version 3, ont tous
intégrés l'utilisation des images HDRI et tous
les grands studios d'effets spéciaux s'y sont mis, Digital
Domain, ILM, Weta, CFC, etc
Pour obtenir des maps d'environnement HDR, la méthode est de
prendre plusieurs vues de l'environnement réel avec
plusieurs diaphragmes mais sur 360°. La méthode qui
consiste à photographier plusieurs vues sous
différents angles puis à les coller pour obtenir
un panorama est un peu lourde, puisqu'il faudrait prendre chacun de ces
différents angles avec plusieurs diaphragmes. Un appareil
panoramique peut être très utile. Sinon, des
techniques spécifiques à la HDR se sont
développées. La société
allemande SpheronVR propose un appareil photographique
spécial qui prend un 360°, le Spherocam HDR. Une
barette CCD en fish eye (sur 180°) tourne sur son axe, et prend
une image sphérique sur 360° en plusieurs minutes,
et en plusieurs expositions. L'appareil coûte la bagatelle de
48 600 Euros.
La caméra Spherocam HDR tourne
sur son axe sur 360°
La deuxième technique est moins onéreuse et a
été rendue populaire par P.Debevec. On
photographie une sphère métallique parfaitement
réfléchissante ("light probe" en anglais) sur
lequel se réflète plus de la moitié de
l'environnement.Cette méthode ne demande pas de
matériel spécifique en dehors de la
sphère métallique. En revanche il faut
déformer en post-traitement l'image anamorphosée
par la sphère puis enlever le reflet de l'appareil photo, et
éventuellement du photographe.
Le système des "light probes"
consiste à prendre
des images semi-panoramiques sur une sphère
réfléchissante puis à reconstituer une
map d'environnement (ici cubique à droite).
© Paul Debevec
Le
mapping des images HDR
Un export des images HDR vers des images classiques à faible
dynamique, en gardant le maximum de détails dans les
différentes zones lumineuses, peut s'avérer
utile. On obtient des images peu contrastées, sans zone de
lumière ou d'ombre crues. Pas moins de trois papiers ont
été présentées au dernier
Siggraph sur ce sujet, qui se nomme en jargon technique, le "tone
mapping". Ces images ont plusieurs intérêts, outre
le fait de pouvoir visualiser des images HDR sur des supports
classiques. Une des applications les plus prometteurse est de
créer ainsi des textures de couleurs et de
matières sur un objet scanné,
indépendamment de son éclairage. En effet,
lorqu'on scan un objet, géométrie et couleurs, il
faut arriver à l'éclairer de manière
diffuse et frontale pour éliminer les ombres. Mais ce n'est
pas toujours facile, si l'objet a une forme bizzare, s'il est dans un
environnement lumineux non contrôlable, ou s'il est
scanné en extérieur, etc. On peut avec une
texture HDR scannée de l'objet, espérer enlever
les ombres dues à l'éclairage réel et
retrouver ainsi la couleur et la matière de base de l'objet.
L'image de droite est
reconstituée avec la technique du
"tone mapping" à partir des prises de vue photographiques de
gauche. Les ombres ainsi que le ciel très lumineux ont
conservé leurs détails.
© Greg Ward
Des
images HDR en temps réel
Avec l'aide de Paul Debevec, le constructeur de cartes graphiques ATI a
fait une demonstration au dernier Siggraph d'un calcul temps
réel d'objets avec une texture d'environnement HDR, sur leur
nouvelle carte Radeon 9700 pro, munie d'un processeur R300. Par rapport
au calcul de la même scène qui avait
été fait en 1998, le gain en calculs est de 72
000. Cette prouesse était attendue. La dernière
génération de cartes de ATI, dont fait partie la
Radeon 9700 pro, comme d'ailleurs les dernières cartes de
nVidia, font tous leurs calculs de rendering en flottant, donc
intègrent naturellement les images HDR. Il restait
à exploiter cette avancée. Dans le même
sens, Microsoft a comme projet d'implémenter les HDRI dans
DirectX9.
Plus ambitieux, mais toujours concernant le matériel,
plusieurs équipes travaillent sur la mise au point
d'écrans capables de visualiser des images HDR avec toute
leur dynamique. Les applications sont nombreuses, dont celle de
visualiser correctement les données, dans n'importe quel
environnement de lumière extérieure.
L'université de British Columbia a
présenté un écran de ce type, qui
devrait avoir à terme une dynamique de 100 000, et
qui est industrialisé par la startup Sunnybrook.
Simulation d'un écran HDR.
Comparaison entre la
luminosité d'un écran classique (à
gauche) et d'un écran HDR (à droite).
Pour
en savoir plus :
Les inventeurs :
Radiance : radsite.lbl.gov/radiance
Greg Ward (Gregory Larson) : viz.cs.berkeley.edu/gwlarson/
Paul Debevec : www.debevec.org
Caméra sphérique :
Spherocam HDR / SpheronVR : www.spheron.com
Ecran HDR :
http://www.physics.ubc.ca/ssp/
http://www.sunnybrooktech.com/
Les palettes HDR :
HDRshop : athens.ict.usc.edu/HDRShop
Photogenics HDR : www.idruna.com
Le
rendering temps réel
Les dernières générations de cartes
graphiques sont en train de
révolutionner l'approche du rendering, non seulement
grâce à
l'accroissement des performances (qui s'est effectuée de
manière
régulière ces dernières
années) mais surtout grâce à la mise au
point
de langages de programmation du hardware. Les développeurs
temps réel
étaient en effet confrontés à
l'évolution rapide des cartes ainsi qu'à
la différence existante entre les cartes 3D. La
stratégie de nVIDIA,
dont les cartes équipent la moitié des PC vendus
actuellement, est de
partir d'un langage haut niveau propriétaire, le CG shader,
compatible
avec tous les GPUs qui supportent DirectX8 et OpenGL 1.4. Ce langage
est proche de Renderman, il permet de programmer à la
demande des
shaders sophistiqués. La ressemblance est d'autant plus
forte avec le
moteur de rendering de Pixar que l'équipe d'Exluna,
à l'origine de BMRT
(le clone gratuit en plus réaliste de Renderman) et
d'Entropy, a été
embauchée par nVidia. Le CG shader est conçue
comme une surcouche de
DirectX et de OpenGL, il fonctionne donc sans modifications sur les
cartes graphiques des différents constructeurs, entre autres
celles de
ATI et de 3Dlabs, et pas seulement sur celles de nVidia. De plus CG
shader est destiné à devenir compatible
multi-plateformes : Windows,
Linux, Playstation2 et Apple/MacOS, réduisant d'autant les
coûts de
développement de jeux.
La puissance de CG shader est indéniable et a
donné accès aux
possibilités du calcul temps réel à
nombre de programmeurs,
familiarisés avec Renderman. On peut créer des
effets de Fresnel (sorte
de halo, avec le spéculaire et la
réflexité qui augmentent sur la
silhouette des objets et qui diminuent au centre) ou des effets de
peau. Tous ces effets étaient jusque là possibles
pour la fiction mais
pas pour le jeu temps réel. Pour David Kirk, directeur
scientifique de
nVidia, il ne fait pas de doute que d'ici très peu
d'années, tout le
rendering pourra se faire directement sur carte graphique. La prochaine
génération de cartes graphiques devrait traiter
des modèles
hyper-réalistes comme le ray-tracing et la
radiosité. L'autre avantage,
compris par les éditeurs de logiciels 3D, est
d'intégrer des plugins
fonctionnant avec CG shader pour une mise au point temps
réel et
interactive. Des démonstrations ont
été faites dans ce sens au dernier
Siggraph avec 3DS Max, XSI et Maya. Mais la compétition
entre les
moteurs logiciels optimisés et les cartes graphiques n'est
pas courue
d'avance. Dans un programme comme Softimage|XSI, la mise au point
interactive du rendering est très poussée
grâce à l'utilisation
optimisée des CPUs par Mental Ray. On peut en effet
déjà réglé en
interactif le ray-tracing ou l'illumination globale.
ATI a présenté
au Siggraph 2002 des images
HDRI calculées en temps
réel avec sa nouvelle carte Radeon 9700 pro.
© ATI
/ Paul Debevec
La compétition entre constructeurs de cartes n'est pas non
plus
terminée. Dans ce domaine, la stratégie de
3Dlabs, face aux langages
propriétaires du type DirectX de Microsoft ou du CG shader
de nVIDIA,
est de s'appuyer sur le standard OpenGL. Conscient que ce dernier a
néanmoins besoin d'être rajeuni, ayant
très peu évolué depuis la
version 1, 3Dlabs a proposé des spécifications
pour une nouvelle
version 2. Son équipe de développement a mis au
point un prototype de
driver de OpenGL 2.0 pour en montrer les possibilités, et
qui tire
parti de la programmabilité des VPUs (Visual Processor), les
nouveaux
processeurs programmables de leur dernière
génération de cartes, les
Wildcat VP. La définition des spécifications de
la version 2 est
supportée par plusieurs autres constructeurs, en particulier
SGI, ATI,
Apple et nVidia. C'est d'ailleurs là que le bât
blesse, nVidia a fourni
les spécifications du CG shader pour qu'elles soient
intégrées dans
OpenGL 2. Du coup, la compétition est ouverte entre OpenGL 2
et CG
shader pour savoir le quel des deux langages va être de plus
haut
niveau et va réussir à absorber l'autre.
Pour
en savoir plus :
CG shader : www.cgshaders.org
OpenGL 2 : www.3dlabs.com/support/developer/ogl2/index.htm
|
© fevrier 2003 François Ploye et Pixel SA