Le voxel pour les nuls : à quoi ça sert ?

2 septembre 2013 à 14h08 dans Jeux vidéo

Depuis que le jeu Minecraft a fait son apparition, on entend beaucoup de joueurs parler d'une véritable révolution avec les voxels... Qu'en est-il vraiment ?

Le voxel pour les nuls : à quoi ça sert ?

Est-ce que le schmilblick tient dans la main?


Le voxel est à la 3D ce qu'un pixel est à la 2D. En d'autres termes, le voxel est un cube qui fait partie d'une matrice. Rien à voir avec Keanu Reeves ou libérer votre esprit, aucun besoin non plus d'avaler une pilule bleue (petit coquin!)... Ici c'est bien de mathématiques et de géométrie qu'il s'agit. Pourtant, on va tenter de vous éclairer sur le sujet sans vous paraitre trop ennuyeux! Parce qu'on est comme ça chez Hitek... Une matrice (dans le lexique des jeux vidéos) est une grille dans l'espace, dont chaque section permet de positionner un objet, avec ses caractéristiques (couleur, taille, etc...).

Le schmilblick est-il contre les travailleurs immigrés?


Une matrice d'objets 3D, à quoi ça sert? Pour ceux qui ont déjà joué à Minecraft, vous êtes complètement dedans: une matrice permet de générer (par exemple) des univers à base d'objets texturés, sur lesquels vous pouvez intéragir. De nombreux jeux récents utilisent ce principe (et on ne saurait trop vous conseiller d'aller tester tous ces jeux, parce qu'on aime ça): Voxatron propose un univers tout en voxels, éditable à souhait pour créer des aventures à la Zelda (je parle ici du Zelda SNES, je suis un puriste et j'assume).



Plus récemment, des jeux de rôle comme Cube World utilisent une matrice pour créer un décor en voxels s'étendant à perte de vue, avec des objets et personnages au look rétro. Le jeu propose également une interface permettant d'ajouter des voxels sur vos armes et armures pour en modifier les capacités. Contrairement à l'idée très répandue, ce jeu n'est pas un clone de Minecraft puisque Minecraft n'utilise pas de voxels (les voxels ont une couleur unique, à l'instar des pixels, alors que Minecraft utilise des cubes texturés):



On peut trouver des utilisations nettement plus subtiles aux matrices, dans des projets comme Overgrowth. L'intérêt d'une matrice d'objets étant qu'elle n'est pas "creuse", comme les objets à base de polygones utilisés pour la 3D conventionnelle,c'est un outil très pratique pour la détection de collisions, en particulier la destruction de bâtiments (ou les impacts sur un ennemi) au fur et à mesure qu'on attaque, pour une localisation précise et une réaction adaptée.



Contrairement à l'idée reçue, Markus Persson (le créateur de Minecraft) n'a rien inventé. Le concept existe depuis bien longtemps, et la liste des jeux utilisant des matrices de voxels pour générer des terrains ne cesse de grandir. Par expérience personnelle, j'ai un excellent souvenir de Comanche: Maximum Overkill, jeu d'hélicoptère qui tournait sur mon bon vieux 486SX (si vous n'avez pas connu les Pentium, vous êtes nés trop tard!), et où les voxels permettaient de générer des collines et vallées avec un réalisme assez saisissant pour l'époque! Parmi beaucoup d'autres exemples, Crysis ou Worms 3D utilisaient eux aussi le voxel, combiné à la 3D conventionnelle. Certains jeux comme Castle Story proposent aujourd'hui des jeux de stratégie dans un décor en voxels, constructible et destructible à souhait:



Est-ce qu'on peut mettre le schmilblick dans le biberon des enfants?


Tous ces projets utilisent le voxel principalement pour la génération du terrain, mais qu'en est-il des personnages et des éléments de décor? Le problème se corse... En effet, le désavantage d'une matrice étant qu'elle demande de plus gros efforts de calcul, on l'utilise principalement pour des objets fixes. L'animation en particulier pose des problèmes, à l'heure actuelle on utilise des personnages à base de polygones, les points d'un modèle 3D sont attachés à un squelette simplifié. Lorsque le squelette se déplace, les points suivent et c'est ainsi qu'on crée l'illusion de mouvement. Le modèle étant "creux" (seules les faces visibles comptent), on peut obtenir des modèles hautement polygonés sans trop de problèmes avec les machines actuelles (1 million de polygones et plus par personnage).

Imaginez maintenant que votre personnage est entièrement constitué de cubes minuscules, tellement petits qu'on croirait des points. Pour obtenir un modèle détaillé à base de voxels, la quantité d'objets 3D nécessaire est alors décuplée.Votre squelette doit déplacer une quantité titanesque de points et de faces (une immense majorité d'entre eux étant sous la surface visible), ce qui rend la tâche bien compliquée pour nos ordinateurs actuels... C'est pour cela que des jeux comme Voxatron ou Cube World n'utilisent pour l'instant que des personnages au look rétro: l'aspect pixellisé des personnages permet d'alléger considérablement le nombre de volumes impliqués dans l'animation. En revanche, je vous laisse rêver en imaginant les jeux de demain, quand les capacités de calcul de nos ordinateurs le permettront...

Est-ce qu'on peut pousser le schmilblick?


A l'heure actuelle, dans le plus grand secret (mais non, je ne fais pas partie de la secte des adeptes du voxel...), des développeurs indépendants travaillent à l'optimisation du rendu des voxels, afin de permettre des rendus 3D "ultra haute définition". Ce n'est bientôt plus une utopie d'avoir des jeux intégralement rendus en voxels, que ce soit pour le terrain, les personnages et leurs animations, ou encore les effets atmosphériques:

Une petite démonstration du potentiel d'un décor intégralement fait en voxels:



Les premiers pas d'un joli bébé tout en voxels (ultra haute qualité):



Pour les curieux, sachez que l'Unreal Engine 4 (moteur utilisé notamment pour certains jeux next-gen) utilise également le voxel, en particulier pour l'éclairage volumétrique:



Ces trois vidéos sont évidemment en 3D temps réel, tout ça tourne déjà sur les ordinateurs/consoles actuels...L'équipe Hitek vous souhaite de beaux rêves, ne bavez pas trop sur l'oreiller! ;)

count
Commentaires (13)
Super article !!!
Par contre il ne faut pas généraliser le voxel à de la 3D cubique du type cube world... c'est bien plus que ça !
photo de profil de RickRoll Par RickRoll, il y a 11 ans Répondre
@RickRoll: Merci!

Dans une poignée d'années on rigolera avec nostalgie autour de jeux comme Minecraft ou Cube World, tout comme on peut encore savourer Zelda sur NES aujourd'hui...

J'ai effectivement cherché à montrer que le voxel en est toujours à ses débuts, notamment grâce aux 3 dernières vidéos de l'article. Ca ne fait aucun doute à mes yeux qu'on finira tôt ou tard par avoir des environnements et personnages constitués à 100% de voxels, et j'attends ce moment avec impatience! :)
photo de profil de Axel Par Axel, il y a 11 ans Répondre
Merci pour cet article fort intéressant et instructif.
photo de profil de Viko Par Viko, il y a 11 ans Répondre
Super intéressant !! Même si je n'ai pas tout compris.
photo de profil de DjPich Par DjPich, il y a 11 ans Répondre
@DJPich: Si t'as besoin d'éclaircissements, on est aussi là pour ça. Ce genre de sujet ne me fait pas trop peur parce que je suis un professionnel du jeu vidéo, mais je peux comprendre que certains termes effrayent les moins avertis... Si t'as besoin de te faire expliquer ce que j'ai écrit dans l'article, tu peux demander. ;)
photo de profil de Axel Par Axel, il y a 11 ans (en réponse à DjPich) Répondre
Article très intéressant :) (et j'ai tout compris ! :p *fière*)
J'ai adoré les référence au sketch de Coluche ;)
photo de profil de Daffyneko Par Daffyneko, il y a 11 ans Répondre
J'ai lu un peu, est une matrice ne permet pas de générer un monde. Une matrice permet de stocker ce monde.

Pour la génération, on utilise "le bruit de Perlin" (Perlin Noise) le plus souvent.

Essayez de vous renseigner et de corriger un peu :) .

Bonne article sinon :) .
photo de profil de Eoniz Par Eoniz, il y a 11 ans Répondre
@Shana: Comme mentionné dans l'article, une matrice est une grille à ceci près qu'elle est en 3D... Ca ne permet effectivement pas en soi de générer des mondes, mais de définir des coordonnées pour qu'un algorithme génère des objets (et leurs propriétés), alignés sur les repères.

Entrer dans les détails techniques ne paraissait pas nécessaire ici, l'article étant adressé à un public assez varié j'ai préféré vulgariser, et surtout montrer des exemples de jeux qui pourraient plaire à ceux qui aiment les voxels. Mais merci quand même d'avoir précisé! ;)
photo de profil de Axel Par Axel, il y a 11 ans (en réponse à Eoniz) Répondre
"Minecraft n'utilise pas de voxels (les voxels ont une couleur unique, à l'instar des pixels, alors que Minecraft utilise des cubes texturés)"
N'importe quoi sérieux... Le Voxel n'est pas que une matrice de cubes... Le Voxel est principalement un moyen de stocker des informations dans une matrice. Chaque point peut donc être représenté comme on veut (que ce soit un point, un sprite, un cube, un blob ou tout autre chose).

Par contre, c'est clair que le Voxel en est encore à ses débuts.
photo de profil de Sphax Par Sphax, il y a 11 ans Répondre
Nope, le voxel n'est rien de plus qu'un cube. Les informations stockées à propos de ces voxels le sont dans une matrice (en anglais, array), qui n'est ni plus ni moins qu'une base de données similaire à un tableau. Chaque valeur incluse dans une matrice est catégorisée ensuite dans le code source, c'est ce code qui définit par exemple la couleur du voxel en question, le son qu'il produit si on marche dessus, s'il est sujet à la gravité, etc...

Minecraft n'utilise pas de voxels (on s'est documenté plusieurs jours avant de rédiger l'article, je n'ai pas été tout seul), la méthode utilisée par Notch n'est que de la 3D tout ce qu'il y a de plus classique. Les cubes qui composent le terrain sont générés selon une matrice, les données spécifiques à chacun de ces cubes (y compris la texture) sont stockées dans une autre base de données.

L'erreur a longtemps été véhiculée sur Wikipedia, mais Minecraft ne fait pas de voxel et le voxel n'est rien d'autre qu'un point 3D (donc cubique) dans l'espace!
photo de profil de Axel Par Axel, il y a 11 ans (en réponse à Sphax) Répondre
@Axel : non! Le voxel est bien un "Point", tout comme un pixel ! Tu peux former un cube avec les voxel, aussi bien qu'avec les pixel, mais à la base, le traitement d'un voxel demande un moteur de rendu particulier (contrairement à la polygonisation , tu n'a pas besoin de ratsering). Mais "un voxel" n'est pas un cube ! Tout comme tu ne peux pas retenir la défénition d'un pixel comme d'un "carré" (c'est un point, le plus petit élément d'un graphisme, même si ce petit élément doit avoir la forme de carré, il aurait pu être un triangle, ou un cercle)

Tu peux simuler du voxel avec du polygonal, mais ça ne sert à rien : c'est pas fait pour, et ça empeche de profiter des avantage du voxel !

Minecraft est un bon exemple de voxel sous forme polygonale !! Mais tout tes autres exemples en sont aussi : actuellement, les moteurs de rendu ne sont pas fait pour du "voxel", et ne permettent tout simplement pas un vrais stockage voxel (dans le sens object = ensemble de point), on en vient donc à de la "boxelisation", un procédé qui consiste à simuler un voxel par un cuble (rendu polygonale), de plus petite taille possible ! A part commanche, tout tes exemple sont bien de la boxelisation !

Comme tu l'as dis, le problème du voxel, c'est sont cout pour l'animation, pour le stockage (un object est un "amas", plus une surface)! Par ailleurs, tu as des problème d'upscalling car contrairement à du polygonal, qui s'apparente en partie à du vectoriel, la "finesse" de tes objets est directement lié à la "taille" de ton voxel !

Pour le problème du cout, ce qu'il faisait à l'époque des commanche et Outcast, c'était du Highmap ! Ca avait l'avantage d'avoir un cout très faible, et de permettre un rendu rapide. Et c'est toujours un procédé valable pour la génération de terrain, mais tu peux oublier les endroit incurvé ou avec des "creux" dans ce genre de procédé !

Bref, en plus d'être gourmand, à l'époque ou on se posait encore la question, ce type de moteur utilisait des opération non accéléré par les carte graphique, ce qui a clairement fait pencher la balance dans le camp des moteurs polygonales !
photo de profil de Calistan Par Calistan, il y a 11 ans Répondre
Les liens video/ image ne marche plus
photo de profil de bob Par bob, il y a 9 ans Répondre
Pour information les voxels sont également essentiels en imagerie médicale, chaque fois que vous passez un scanner par exemple...
photo de profil de djé Par djé, il y a 8 ans Répondre
Laisser un commentaire

Vous répondez à . Annuler