È facile farlo. Usando un Octtree dividi semplicemente il mondo in pezzi progressivamente più piccoli fino a raggiungere il livello di dettaglio necessario. Ad esempio, potrebbe essere la dimensione di un granello di sabbia. Pensa a Minecraft portato all'estremo.
Che cosa riproduci allora? Se il dettaglio è abbastanza piccolo, puoi prendere in considerazione il rendering dei blocchi: i nodi foglia dell'occhiello. Altre opzioni includono sfere o anche primitive geometriche. Un colore e un normale possono essere memorizzati su ciascun nodo e, per un LOD ridotto, è possibile memorizzare le informazioni composite a livelli più alti dell'albero.
Come puoi gestire così tanti dati? Se l'albero è una struttura dati reale, è possibile avere più puntatori che fanno riferimento agli stessi sottoalberi, proprio come riutilizzare una trama ma include anche la geometria. Il trucco è ottenere il maggior riutilizzo possibile a tutti i livelli. Ad esempio, se connetti 4 ottanti nella disposizione tetraedrica tutti allo stesso nodo figlio a tutti i livelli, puoi creare un frattale sierpinsky 3d molto grande senza quasi memoria. La scena reale sarà molto più ampia, naturalmente.
Il problema è che funzionerà solo con la geometria statica, perché l'animazione reale richiederebbe la manipolazione di tutti i dati ogni fotogramma. Tuttavia, il rendering, specialmente con il LOD variabile non è un problema.
Come rendere una cosa del genere? Sono un grande fan del ray tracing e gestisce questo tipo di cose abbastanza bene con e senza una GPU.
Tutto ciò è speculazione, naturalmente. Non ho informazioni specifiche sul caso di cui stai parlando. E ora per qualcosa di relativo ma diverso:
Un'enorme quantità di dati resi
EDIT Ed ecco uno che ho fatto, ma ho deliberatamente modificato le normali per rendere le scatole più chiare:
Coniglietto di Stanford in voxel
Quel frame rate era su un IIRC single core. Raddoppiando la profondità dell'albero si riduce in genere il frame rate a metà, mentre l'utilizzo di core multipli si adatta in modo ottimale. Normalmente tengo i primitivi (triangoli e simili) nel mio octtree, ma per i sorrisi ho deciso di rendere i nodi foglia dell'albero stesso in questo caso. È possibile ottenere prestazioni migliori se si ottimizzano attorno a un metodo specifico.
Da qualche parte su ompf c'è un'auto fatta con voxel che è davvero fantastica - tranne che è statica. Non riesco a trovarlo ora ...