Planets³: technologie voxel sous Unreal Engine

Planets3, qui utilise la technologie des voxels pour le rendu, fonctionne désormais sous Unreal Engine 4. Je ne vous présente plus ce moteur de jeu spectaculaire (probablement le meilleur du marché), mais c’est assez rare de voir un moteur de jeu utiliser la technologie des voxels.

Pour ceux qui ne connaissent pas, un voxel est un pixel 3D – ou plus précisément, 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.

Cela signifie qu’au lien d’utiliser le procédé de rasterisation à partir de triangles 3D, le moteur d’affichage va travailler à partir de pixels 3D. Il existe des moteurs 3D utilisant des voxels pour dessiner des paysages, le rendu Voxel ayant la particularité de permettre des environnements très circulaires. Ils sont par contre plutôt rares, le dessin par triangle étant maintenant le plus courant dans les moteurs 3D, car il a été rapidement accéléré matériellement, ce qui a permis de faire des jeux dont l’animation est très fluide.

watervoxel2.png

On pense souvent que le jeu minecraft utilise la technologie des voxels pour son affichage (d’ailleurs, c’est indiqué sous Wikipédia). Mais il s’agit d’autre chose, car un voxel possède une couleur unique : ce n’est pas un cube texturé ! Toutefois, la gestion même de l’espace est assez proche, alors je ne rentrerai pas dans la polémique concernant Minecraft.

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

Pour en revenir à Planets3, voici une vidéo de présentation du projet:


Et voici un exemple d’implémentation sous Unreal Engine 4:

 

Ces articles pourraient aussi vous intéresser …