Accueil » Dossier » Rendu 3D : le raycasting de voxels » Page 7

Rendu 3D : le raycasting de voxels

1 : Introduction 2 : Un peu d’histoire… 3 : Un peu de technique (voxel)... 4 : Un peu de technique (octree, raycasting)... 5 : Les avantages du Sparse Voxel Octree 6 : Les avantages du Sparse Voxel Octree (suite) 8 : Conclusion

Les limites

Cette technique a beau être séduisante elle n’en est pas pour autant dénuée de défauts. Le principal problème vient du fait que la construction de l’octree est coûteuse, par conséquent il n’est pas vraiment envisageable de modifier la structure de données à l’exécution. Cet inconvénient rend l’utilisation d’un octree de voxels pour la géométrie dynamique particulièrement compliquée. La proposition d’id Software pour contourner ce problème consiste à utiliser l’octree uniquement pour la géométrie statique, tous les éléments dynamiques de la scène seraient affichés en utilisant la bonne vielle rastérisation de triangles.

Il est dommage que le franchissement d’un cap visuel soit accompagné d’une telle restriction, en effet lors d’un changement de génération les joueurs s’attendent également à franchir un cap en matière d’interactions avec le décor. Lorsqu’on parle de voxels la première réflexion des joueurs consiste à penser à des mondes enfin destructibles, s’imaginant pouvoir tirer dans un mur et voir la géométrie s’altérer, révélant diverses couches de matériaux, mais pour le moment il semble que ça ne soit pas vraiment envisageable. Nous sommes bien partis pour conserver nos murs indestructibles quelques années encore.

Un autre problème concerne le système de streaming, comme nous l’avons vu cette technique de rendu est particulièrement adaptée pour augmenter le niveau de détails au fur et à mesure qu’on se rapproche progressivement d’un objet, le système se chargeant de ramener les données de l’octree en tâche de fond et du fait de la façon dont ses données sont organisées tout cela peut se faire de manière fluide. Mais que se passe-t-il lorsque nous nous téléportons à un autre endroit du monde ? Toute la géométrie est unique et le système de streaming est pris à défaut.  Il faut donc s’attendre à voir une géométrie très basique pendant un moment, puis à la voir s’affiner au fur et à mesure, ou bien voir les game designers contourner ce défaut en évitant ce genre de situations. Ce problème n’est pas unique aux octrees de voxels, tous les systèmes de streaming reposent sur l’hypothèse d’une variation relativement continue du niveau de détails et sont pris à défaut dans le cas de changements brutaux, mais actuellement ça ne concerne que les textures et si voir une texture de basse résolution pendant une seconde ou deux est désagréable, voir un octree de basse résolution risque d’être visuellement assez affreux.

Un autre inconvénient que l’on peut recontrer avec les voxels concerne la pixellisation. En effet si l’on se contente d’afficher la couleur des voxels que le rayon intersecte, il est possible de discerner les limites des cubes ce qui donne un effet old-fashion très déplacé pour une technique qui se veut le futur des techniques de rendu. Heureusement il est possible de résoudre ce problème en utilisant le filtrage trilinéaire : au lieu de filtrer dans les deux dimensions comme avec les textures il faut cette fois filtrer selon les trois dimensions.

Image 1 : Rendu 3D : le raycasting de voxels

Enfin dernier challenge à relever, malgré l’avantage procuré par la structure d’octree, l’espace mémoire nécessaire pour stocker un monde entier sous forme de voxels reste énorme. Comme nous l’avons vu ça n’affecte pas vraiment les ressources nécessaires à l’exécution, mais en revanche pour pouvoir manipuler puis stocker et enfin distribuer de telles structures de données id Software va devoir travailler à de sérieuses techniques de compression. Jon Olick donne quelques indications à ce sujet et semble satisfait des taux de compression qu’il a obtenus.

Sommaire :

  1. Introduction
  2. Un peu d’histoire…
  3. Un peu de technique (voxel)...
  4. Un peu de technique (octree, raycasting)...
  5. Les avantages du Sparse Voxel Octree
  6. Les avantages du Sparse Voxel Octree (suite)
  7. Les limites
  8. Conclusion