On n'est pas non plus obligé de se limiter au plan, les octrees (arbres octaires ?) sont d'ailleurs très populaires en image de synthèse tridimensionnelle, toujours pour leur capacité à modéliser un objet à plusieurs précisions.
Une petite routine d'affichage en 3D cavalière a été
programmée pour étudier ces possibilités, elle reprend
exactement l'algorithme bidimensionnel, en considérant huit fils et
en introduisant un décalage en diagonal pour simuler la profondeur,
et au lieu d'afficher des carré, elle affiche des cubes.
Les algorithmes de zoom, d'inversion, d'intersection n'ont pas à être modifiés, et pour que la surface fonctionne (et calcule le volume) il suffit de changer la valeur de nombre_de_fils.
L'un des algorithmes qui a le plus popularisé les octrees est
très certainement le ray-tracing ou suivi de rayon, qui consiste
à considérer le trajet inverse de la lumière en partant de
l'il de
l'observateur et en regardant quel objet est rencontré en premier.
Un algorithme de ray-tracing passe donc la majeure partie de son temps à effectuer des calculs d'intersection entre les rayons (des droites) et les objets de la scène. Afin de simplifier ces calculs, on fait souvent appel à des volumes englobants, qui contiennent les objets considérés, mais dont l'intersection est plus rapide à calculer. Ainsi, si le volume englobant n'est pas intersecté, l'objet contenu non plus.
En général on utilise des octrees comme volumes englobants, leur structure hiérarchique permettant d'affiner peu à peu la région de l'espace considérée ; cependant ici on propose d'utiliser les octrees récursifs pour la modélisation d'objets tridimensionnels.
L'algorithme d'intersection avec un rayon consisterait simplement à
considérer chaque cube que rencontre le rayon, s'il est blanc il n'y
a pas d'intersection, s'il est noir il y a intersection et si c'est un
nud on appelle
récursivement la procédure pour chacun des huit fils que
rencontre le rayon, dans l'ordre. Là aussi, il est nécessaire de
se fixer une limite pour la récursivité, mais cette limite peut
varier en fonction de la distance de l'objet : on peut ainsi
s'arrêter lorsque le cube considéré est plus petit que le
pixel calculé, et profiter d'une modélisation
détaillée au premier plan et de calculs plus rapides pour les
objets lointains.
Le problème qui se pose alors est celui du calcul du vecteur normal
à l'objet ; celui-ci est en effet à la base de tous les
modèles d'éclairement (modèles qui permettent de calculer
la couleur que perçoit l'il en un point en fonction de
l'éclairage et de la surface elle-même). Or les objets fractals
ont ceci de désagréable que le vecteur normal n'y est souvent
pas défini (par exemple sur l'image Sierp3D). On en revient
au problème des bords de nos images.
On peut s'inspirer des techniques utilisées pour représenter en particulier l'ensemble de Mandelbroot en relief, et qui consistent à utiliser les points avoisinants dans l'image calculée. En effet on conna^t très facilement les coordonnées (x,y,z) d'un point de l'image affichée, et si l'on calcule un point (u, v) à l'écran, il suffit de calculer le vecteur normal au plan défini par les points dans l'image tridimensionnelle qui correspondent à (u, v), (u-1, v) et (u, v-1). On peut bien sûr affiner le procédé en effectuant une moyenne sur les quatre points voisins.
Malheureusement, contrairement au cas bidimensionnel, il est plus délicat d'étendre ce modèle à plus de deux couleurs et encore plus à plusieurs textures (une texture modélise les caractéristique d'une surface : elle en définit la couleur, la transparence, etc.), car il est alors très difficile de décider de l'attitude à adopter quand on arrête le récursion, les techniques d'anticrênelage utilisées dans le plan se généralisent plus difficilement aux textures et à la 3D.