C'est facile à faire. En utilisant un Octtree, vous divisez simplement le monde en morceaux progressivement plus petits jusqu'à ce que vous atteigniez le niveau de détail requis. Cela pourrait être la taille d'un grain de sable par exemple. Pensez à Minecraft poussé à l'extrême.
Que rendez-vous alors? Si le détail est suffisamment petit, vous pouvez envisager de rendre les blocs - les nœuds feuilles de l'octtree. D'autres options incluent des sphères ou même des primitives géométriques. Une couleur et une normale peuvent être stockées à chaque nœud, et pour une LOD réduite, on peut stocker des informations composites à des niveaux supérieurs de l'arbre.
Comment pouvez-vous gérer autant de données? Si l'arborescence est une structure de données réelle, plusieurs pointeurs peuvent référencer les mêmes sous-arbres, tout comme la réutilisation d'une texture, mais elle inclut également la géométrie. L'astuce consiste à obtenir autant de réutilisation que possible à tous les niveaux. Par exemple, si vous connectez 4 octants dans un arrangement tétraédrique tous au même nœud enfant à tous les niveaux, vous pouvez créer une très grande fractale sierpinsky 3D en utilisant presque aucune mémoire. La scène réelle sera bien sûr beaucoup plus grande.
Le problème est qu'il ne fonctionnera que pour la géométrie statique car une véritable animation nécessiterait la manipulation de toutes ces données à chaque image. Cependant, le rendu, en particulier avec le niveau de détail variable, ne pose aucun problème.
Comment rendre une telle chose? Je suis un grand fan du ray tracing, et il gère assez bien ce type de chose avec et sans GPU.
Tout cela est bien sûr de la spéculation. Je n'ai aucune information précise sur le cas dont vous parlez. Et maintenant pour quelque chose de lié mais différent:
Une énorme quantité de données rendues
EDIT Et voici celui que j'ai fait, mais j'ai délibérément modifié les normales pour rendre les cases plus apparentes:
Lapin de Stanford en voxels
Ce taux de trame était sur un seul cœur IIRC. Le doublement de la profondeur de l'arbre réduira généralement la fréquence d'images de moitié, tandis que l'utilisation de plusieurs cœurs évoluera bien. Normalement, je garde des primitives (triangles et autres) dans mon octtree, mais pour les sourires, j'avais décidé de rendre les nœuds foliaires de l'arbre lui-même dans ce cas. De meilleures performances peuvent être obtenues si vous optimisez autour d'une méthode spécifique bien sûr.
Quelque part sur ompf, il y a une voiture faite avec des voxels qui est vraiment fantastique - sauf qu'elle est statique. Je n'arrive pas à le trouver maintenant ...