Voxel
élément de base représentant une valeur dans un espace en trois dimensions. équivalant du pixel en 3D
From Wikipedia, the free encyclopedia
Alors qu'avec des pixels dans une bitmap 2D, les voxels ne stockent pas leur position (coordonnées) dans leurs valeurs encodées. À la place, les systèmes de rendu inférent la position du voxel selon sa position par rapport au autres voxels dans son entourage. Quelques affichages volumétriques utilisent les voxels pour décrire leur résolution. Par exemple, un affichage volumétrique peut être capable d'afficher 512x512x512 (environ 134 millions) de voxels.


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. Les voxels sont utilisés fréquement dans l'analyse et la visualisation de données médical et scientifique. Les voxels sont aussi utilisés dans les jeux vidéos au niveau technique et artistique.
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.
Une des définitions d'un voxel :
Un voxel est un image d'une région d'un espace en trois dimensions avec des dimensions définies, qui possède ses propre coordonnées de points nodaux dans un système de coordonnées accepté, sa propre forme, son paramètre d'état qui indique son appartenance à un object modélisé, et qui possède les propriétés de la région modélisée.
Cette définition permet d'avoir l'avantage suivant. Si un voxel à forme fixe est utilisé dans le tout modèle, c'est beaucoup plus facile de manipuler les points modaux des voxels (c'est-à-dire, trois coordonnées du point). Cependant, il existe une forme d'enregistrement plus simple: les indices des éléments de l'ensemble du modèle (c'est-à-dire, les coordonnées entières). Les éléments de l'ensemble du modèle sont alors des paramètres d'état, indiquant les oxels appartenant à l'objet modélisé ou à ses différentes parties, y compris leurs surfaces[2].
Imagerie médicale
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
Un volume représenté par des voxels peut être visualisé soit par rendu volumique direct, soit par extraction d'isosurfaces polygonales suivant les contours de valeurs maximal définies. L'algorithme marching cubes est souvent utilisé pour l'extraction d'isosurfaces, mais d'autres méthodes existent.
Le lancer de rayons, le ray casting et la rastérisation peuvent être appliqués aux données voxelisées pour obtenir des images matricielles 2D affichables sur un écran.
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 Z-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 Z-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[3].
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[3].
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.
Rastérisation d'erreur incrémentale
Une autre technique pour les voxels fait rentrer en jeu les images matricielles où nous lançons des rayons depuis toutes les pixels de l'affichage sur la scène et suivre une erreur pour déterminer lorsqu'il faut passer à l'étape suivante. Une implémentation fréquente va suivre chaque pixel de l'affichage avec un lanceur de rayons en partant du bas de l'écran en utilisant un y-buffer. Quand une voxel ayant un valeur y plus élevée à l'écran est atteint, il est ajouté au y-buffer, venant remplacer la valeur précédente de l'écran en interpolant les valeurs de couleurs. Il y a malheureusement une bémol majeur à la rastérisation des voxels lorsqu'une transformation est effectuée et qui cause un aliasing important. Sinon l'avantage est la capacité de rastériser en utilisant des calculs entiers peu couteux sur des processeurs sans accélération matérielle.
Jeux vidéo utilisant tout ou partie du rendu par voxel
Les jeux vidéo utilisant un moteur de rendu 3D par voxels sont peu nombreux. On peut citer :
- Comanche (1992) : simulateur de vol pour hélicoptères de guerre utilisant un rendu par voxel pour dessiner le paysage ;
- Outcast (1999) : jeu d'aventure utilisant un rendu par voxel pour dessiner le paysage ;
- Ace of Spades (2011) : jeu de tir à la première personne utilisant un rendu par voxel pour dessiner le paysage et les personnages ;
- Delta Force (1998) : jeu de tir à la première personne utilisant un rendu par voxel pour dessiner le paysage ;
- Hexplore (1998) : jeu de rôle et d´action utilisant un moteur de rendu voxel pour créer les formes 3D et les décors ;
- Robinson's Requiem (1994) : rendu voxel utilisé pour le rendu du sol ;
- Shattered Steel : un rendu par voxel pour dessiner le paysage ;
- Space Engineers : un rendu par voxel pour dessiner les paysages ;
- Vangers : le rendu voxel a été utilisé pour le sol ;
- Voxel Quest : jeu d'aventure abandonné, fondé entièrement sur un rendu voxel, passé en open source[4] à la suite de l'abandon du seul développeur.
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 :
- Minecraft (2009) : jeu de survie et construction très connu et aux graphiques pixelisés
- Luanti (2010) : moteur de jeux
- 7 Days to Die (2013) : jeu de survie dans un monde post-apocalyptique.
- Annie: Last Hope (2020) jeu de shooting utilisant des rendus HD Voxel
- Teardown (2022) : jeu de survie constitué d'un environnement entièrement destructible.
- Cloudpunk (2020) : Jeu de rôle cyberpunk
- Valheim (2021) : jeu de survie dans un monde teinté de mythologie nordique, sorti en accès anticipé en février 2021
- Voxelstein 3D (2008)[5] : un clone libre de Wolfenstein 3D à base de voxels
Éditeurs
Pour la visualisation de volume scientifiques nous avons pas nécessairement besoin de modifier les données des voxels, les éditeurs de voxels peuvent être utilisés pour la création d'art (surtout du pixel art 3D) et des modèles pour des jeux vidéos basés sur les voxels. Certains éditeurs se concentre sur une seule approche pour la modification de voxels alors que d'autres utilise un approche mixtes en mélangant différentes techniques. Quelques techniques communes:
- Traitement par tranches: le volume est découpé selon un ou plusieurs axes afin que l'utilisateur puisse modifier chaque image de façon individuelle avec un éditeur d'images matricielles 2D. Dans ce cas, l'outils stocke généralement l'informations de couleur dans les voxels.
- Sculpture: Similaire à son équivalent vectoriel, mais sans contraintes topologiques. Ces sculptures stockent généralement les informations de densité dans les voxels et ne contiennent pas d'informations sur leur couleur.
- Blocs de construction: l'utilisateur peut ajouter ou retirer des blocs comme avec un jeu de construction.
Il y a quelques éditeurs de voxels qui ne sont pas liés à un jeu vidéo ou un moteur de jeu spécifique. Ceux-ci peuvent être utilisés en tant que compléments ou alternatives à la modélisation vectoriel 3D
Extensions
Une généralisation d'un voxel est un toxel, un voxel temporel[6]. Il est utilisé dans le cas d'un ensemble de données en 4D, par exemple, une séquence d'image qui représentes une espace 3D avec une dimension supplémentaire comme le temps. De cette façon, une image peut contenir 100x100x100x100 voxels, ce qui représente une séries de 100 images ayant un volume de 100x100x100 (l'équivalent pour un image 3D serait de montrer une coupe transversale 2D de l'image pour chaque image). Méme si, le stockage et la manipulation de ces ensembles de données est très couteux en mémoire, ces ensembles permettent la représentation et l'analyse de systèmes spatio-temporels.
Voir aussi
- Synthèse d'image 3D
- Rendu volumique direct
- Maxel - élément matériel (version anglaise)
- Hogel - élément holographique (version anglaise)
- Pixel - élément d'image
- Resel - élément de résolution (version anglaise)
- Texel - élément de texture
- Tixel - élément tactile
- Tomographie
- Maillage volumique(version anglaise)
- Rendu volumique direct
- Affichage volumétrique(version anglaise)
Lien externe
- « Pause Process - Le voxel », sur www.jeuxvideo.com (consulté le )
