Aller au contenu

Voxel

Un article de Wikipédia, l'encyclopédie libre.
Schématisation d'une matrice de voxels en nuances de gris.

Le voxel, mot-valise créé en contractant « volume » et « pixel »[1] (ce dernier est lui-même une contraction de « picture » et « element »), est à la 3D ce que le pixel est à la 2D. Il stocke une information physique (couleur, densité, intensité, etc.) d'un point d'un volume sur un maillage régulier. Ses coordonnées spatiales, voire temporelles, ainsi que sa taille ou d'autres informations telles qu'une matière sont stockées parfois avec sa valeur, parfois en parallèle. Le voxel s'inscrit plus généralement dans des espaces matriciels bien que les espaces vectoriels lui soient favorables. Ses coordonnées spatiales peuvent être polaires.

Le point faible du format par voxel (par rapport à la 3D vectorielle) est de nécessiter énormément de ressources, tant pour le stockage que pour le rendu qui ne bénéficie pas d'accélération matérielle. Cependant, des algorithmes de compression traditionnels de l'imagerie numérique ou l'informatique peuvent être employés.

Imagerie médicale

[modifier | modifier le code]

Le voxel s'avère particulièrement adapté à la représentation d'un volume corporel constitué d'images en coupes d'un patient. C'est pour cette raison qu'il est souvent utilisé en imagerie médicale 3D (scanner, IRM, TEP) où il offre un résultat rapide et suffisant. Le standard DICOM précise les modalités de représentation, de stockage et de communication d'un grand nombre de formats d'imagerie médicale utilisés dans les établissements hospitaliers, entre autres les modules Image Plane Module et Image Pixel Module.

Rendu par voxel

[modifier | modifier le code]

Le voxel est principalement utilisé pour le rendu des terrains dans les jeux vidéo, notamment Outcast, en utilisant une heightmap combinée avec un Y-Buffer. La technique consiste à afficher le terrain colonne par colonne en ne prenant en compte que les voxels dont la hauteur est supérieure au Y-Buffer, ce dernier prenant comme valeur la hauteur de la dernière colonne affichée. Les parties non visibles de la scène sont ainsi tout simplement ignorées lors du rendu, ce qui offre un fort gain de ressources[2].

Une des optimisations les plus remarquables offertes par le voxel apparaît lorsque l'on passe de l’utilisation d'une matrice de voxel à l'utilisation d'un arbre ayant comme racine chaque voxel et dont chaque nœud père est un voxel faisant la moyenne de ses fils (couleur, texture). Plusieurs optimisations apparaissent alors :

  • premièrement, si un nœud contient plusieurs fils ayant toutes les mêmes caractéristiques (couleur, texture), alors il est possible de les supprimer sans perdre en détail ;
  • deuxièmement, le niveau de détail peut être géré très facilement en parcourant en profondeur l'arbre et en s’arrêtant dès que la taille du voxel est inférieure à la taille d'un pixel[2].

Ces deux optimisations permettent un gain de mémoire mais surtout une vitesse d'affichage constante quel que soit le niveau de détail de l'objet, son gros désavantage étant son coût lors de la modification de l'arbre qui devient alors énorme là où une matrice le gérerait aisément. Le dessin par triangle reste donc le plus courant dans les moteurs 3D.

Quelques moteurs 3D utilisant un rendu par voxel :

  • (en) WinUFO et SimUFO. Il existe un applet Java pour tester WinUFO en ligne. SimUFO permet d'éditer directement le paysage dans le programme ;
  • (en) Atomontage est un moteur hybride de 3D temps réel de nouvelle génération destiné aux jeux vidéo gérant la géométrie tant en voxel qu'en vectoriel, la physique et l'éclairage.

Jeux vidéo utilisant tout ou partie du rendu par voxel

[modifier | modifier le code]

Les jeux vidéo utilisant un moteur de rendu 3D par voxels sont peu nombreux. On peut citer :

Attention à ne pas confondre avec les jeux vidéo utilisant une représentation de l'espace en « voxel » (généralement en cubes texturés ou non), mais dont le rendu est avec un moteur de rendu 3D en polygones et non en voxel, par exemple :

Lien externe

[modifier | modifier le code]

Notes et références

[modifier | modifier le code]
  1. (en) Foley, James D., Computer Graphics : Principles and Practice, Addison-Wesley, (ISBN 0-201-12110-7, OCLC 475787187).
  2. a et b Fedy Abi-Chahla, « Rendu 3D : le raycasting de voxels », sur www.tomshardware.fr, (consulté le ).
  3. (en) « Voxel Quest Isometric Small ».
  4. (en) http://voxelstein3d.sourceforge.net/.