Rechercher Annuler

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

De Axel Marnier Auteur - Posté le 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 ?

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! ;)

Une erreur ?

Cliquez sur une phrase de l'article pour proposer une correction.

J'ai compris !

Mots-Clés : MinecraftCube Worldvoxelmoteur 3dvoxatronunreal engine

Commentaires (13)

Par RickRoll, il y a 8 ans :

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 !

Répondre à ce commentaire

Par Axel, il y a 8 ans :

@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! :)

Répondre à ce commentaire

Par Viko, il y a 8 ans :

Merci pour cet article fort intéressant et instructif.

Répondre à ce commentaire

Par DjPich, il y a 8 ans :

Super intéressant !! Même si je n'ai pas tout compris.

Répondre à ce commentaire

Par Axel, il y a 8 ans (en réponse à DjPich):

@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. ;)

Répondre à ce commentaire

Par Daffyneko, il y a 8 ans :

Article très intéressant :) (et j'ai tout compris ! :p *fière*)
J'ai adoré les référence au sketch de Coluche ;)

Répondre à ce commentaire

Par Eoniz, il y a 8 ans :

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 :) .

Répondre à ce commentaire

Par Axel, il y a 8 ans (en réponse à Eoniz):

@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é! ;)

Répondre à ce commentaire

Par Sphax, il y a 8 ans :

"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.

Répondre à ce commentaire

Par Axel, il y a 8 ans (en réponse à Sphax):

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!

Répondre à ce commentaire

Par Aslan, il y a 7 ans :

@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 !

Répondre à ce commentaire

Par bob, il y a 6 ans :

Les liens video/ image ne marche plus

Répondre à ce commentaire

Par djé, il y a 4 ans :

Pour information les voxels sont également essentiels en imagerie médicale, chaque fois que vous passez un scanner par exemple...

Répondre à ce commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas visible. Pour avoir une image de profil, utilisez le service gravatar.

Tu es membre premium car tu as commandé une HITEKBOX. Tu peux donc ajouter des smileys et des images.