Rendering di trilioni di "atomi" invece di poligoni?


9

Ho appena visto un video su quello che gli editori chiamano il "prossimo grande passo dopo l'invenzione del 3D". Secondo la persona che parla in essa, usano un'enorme quantità di atomi raggruppati in nuvole anziché in poligoni, per raggiungere un livello di dettaglio illimitato .

Hanno fatto del loro meglio per rendere il video comprensibile per le persone che non erano a conoscenza di alcuna tecnica di rendering e quindi o per altri scopi hanno tralasciato tutti i dettagli su come funziona il loro motore.

Il livello di dettaglio nel loro video mi sembra abbastanza impressionante.

  • Come è possibile eseguire il rendering di scene utilizzando atomi personalizzati anziché poligoni sull'hardware corrente? (Velocità, per quanto riguarda la memoria)
  • Se questo è reale, perché nessun altro ci ha mai pensato finora?

Come sviluppatore di OpenGL, sono davvero sconcertato da questo e vorrei davvero sapere cosa hanno da dire gli esperti. Pertanto, non voglio che questo appaia come un annuncio economico e includerò il link al video solo se richiesto, nella sezione commenti.


7
Bene, hanno inventato la cosa più rivoluzionaria dall'inizio della computer grafica, ma non sanno quanti millimetri si adattano a un pollice, cosa ti dice.

2
Sono così limitati nei dettagli (perdona il gioco di parole) sulla loro tecnologia che una discussione è difficile. Da quello che ho capito dal video è 20 fps nel software. Vedo molta geometria statica, un sacco di istanziamenti e non so quanti dati siano precompilati o generati al volo. Comunque interessante comunque. Non vorrei chiamare completamente gli shenanigans. Non con il finanziamento acquisito, anche se ciò non significa molto.
Bart

8
È sempre sospetto se qualcuno fa affermazioni fantastiche e mostra solo filmati di qualcosa di completamente estraneo (come Crysis). Ancor di più se ci sono affermazioni come "tecnologia utilizzata nella medicina / viaggi nello spazio" e mescolando diverse cose che non hanno nulla a che fare l'una con l'altra. Certamente è possibile produrre (quasi) infiniti dettagli proceduralmente ed è certamente possibile renderlo. Quindi, ogni demo di Mandelbrot del 1984 poteva farlo. Tuttavia, l'affermazione è che rendono gli oggetti come quell'elefante in infiniti dettagli. E questo è solo uno spasso, perché non possono.

8
"La tua grafica sta per migliorare di un fattore 100.000 volte." Reclami straordinari richiedono prove straordinarie.
Brad Larson,

11
Notch ha scritto due post sul blog su questo video.
Kevin Yap,

Risposte:


11

È facile farlo. Usando un Octtree dividi semplicemente il mondo in pezzi progressivamente più piccoli fino a raggiungere il livello di dettaglio necessario. Questa potrebbe essere la dimensione di un granello di sabbia, ad esempio. Pensa a Minecraft portato all'estremo.

Cosa rendi allora? Se il dettaglio è abbastanza piccolo, puoi prendere in considerazione i blocchi di rendering: i nodi foglia dell'ottetto. Altre opzioni includono sfere o persino primitive geometriche. Un colore e un normale possono essere memorizzati in ciascun nodo e per un LOD ridotto è possibile memorizzare informazioni composite a livelli più alti dell'albero.

Come puoi gestire così tanti dati? Se l'albero è una struttura dati effettiva, è possibile avere più puntatori che fanno riferimento agli stessi sotto-alberi, proprio come riutilizzare una trama ma include anche la geometria. Il trucco è ottenere il maggior riutilizzo possibile a tutti i livelli. Ad esempio, se si collegano 4 ottanti in una disposizione tetraedrica tutti allo stesso nodo figlio a tutti i livelli, è possibile creare un frattale 3d sierpinsky molto grande che non utilizza quasi memoria. La scena reale sarà ovviamente molto più ampia.

Il problema è che funzionerà solo per la geometria statica perché l'animazione reale richiederebbe la manipolazione di tutti quei dati in ogni frame. Tuttavia, il rendering, soprattutto con LOD variabile, non è un problema.

Come rendere una cosa del genere? Sono un grande fan del ray tracing e gestisce quel tipo di cose abbastanza bene con e senza GPU.

Tutto questo ovviamente è speculazione. Non ho informazioni specifiche sul caso di cui stai parlando. E ora qualcosa di correlato ma diverso:

Una grande quantità di dati resi

EDIT Ed eccone uno che ho fatto, ma ho deliberatamente modificato le normali per rendere più evidenti le scatole:

Coniglio Stanford in voxels

Quel frame rate era su un IIRC single core. Raddoppiare la profondità dell'albero generalmente ridurrà la frequenza dei fotogrammi a metà, mentre l'utilizzo di più core si ridimensionerà bene. Normalmente tengo dei primitivi (triangoli e simili) nel mio ottetto, ma per i ghigni ho deciso di renderizzare i nodi fogliari dell'albero in questo caso. È possibile ottenere prestazioni migliori se si ottimizza attorno a un metodo specifico, ovviamente.

Da qualche parte su ompf c'è un'auto fatta con voxel che è davvero fantastica - tranne che è statica. Non riesco a trovarlo ora ...


Sono d'accordo con questa valutazione: ho appena visto il video da solo e sono stato colpito da quanto siano statiche le loro scene (divertente quando si confrontano con l'erba poligonale; almeno soffia nel vento mentre la loro chiaramente non lo è).
giorno

1
Sfortunatamente i collegamenti sono morti.
Joachim Sauer,

1
@JoachimSauer In effetti, il forum OMPF è passato da qualche tempo. Una sostituzione diretta è disponibile qui ma non sono a conoscenza del fatto che uno qualsiasi dei contenuti sia stato migrato.
Bart,

Non sembra. La ricerca di "coniglietto" su quel forum non dà risultati.
Joachim Sauer,

il primo link apre la finestra di pop-up e avvisi -1
NimChimpsky

6
  • Come è possibile eseguire il rendering di scene utilizzando atomi personalizzati anziché poligoni sull'hardware corrente? (Velocità, per quanto riguarda la memoria)

Dal guardare il video nulla mi indica che è stato utilizzato alcun hardware speciale. In effetti, si afferma che questo funziona nel software a 20 fps, a meno che non mi sia perso qualcosa.

Sarai forse sorpreso di sapere che ci sono stati molti sviluppi nel rendering in tempo reale usando una varietà di tecnologie come ray tracing, rendering voxel e splatting superficiale. È difficile dire però cosa sia stato usato in questo caso. (Se sei interessato, dai un'occhiata a http://igad2.nhtv.nl/ompf2/ per un ottimo forum di ray tracing in tempo reale, oppure http://www.atomontage.com/ per un interessante motore voxel. Google "splatting superficiale" per alcuni ottimi collegamenti su quell'argomento)

Se guardi il film noterai che tutta la geometria è statica e benché dettagliata, c'è abbastanza ripetizione di oggetti, che potrebbe suggerire di istanziare.

E molto probabilmente ci saranno molti abbattimenti aggressivi, livelli di dettaglio e partizionamento dello spazio in corso.

Se guardi alla qualità visiva (non alla complessità geometrica) non sembra poi così impressionante. In effetti sembra abbastanza piatto. L'ombreggiamento mostrato potrebbe essere inserito nei dati e non essere valutato in tempo reale.

Mi piacerebbe vedere una demo con geometria animata e illuminazione dinamica.

  • Se questo è reale, perché nessun altro ci ha mai pensato finora?

A meno che non mi sbagli completamente (e non sarebbe la prima volta che lo sono) la mia prima risposta suggerirebbe un uso (forse molto intelligente) della tecnologia esistente, forse ottimizzata ed estesa per creare questa demo. Trasformarlo in un vero e proprio motore di gioco, con tutte le altre attività oltre a rendere la geometria statica che include, è un gioco con la palla completamente diverso.

Ovviamente tutto ciò è pura speculazione (il che mi rende molto divertente). Tutto quello che sto dicendo è che questo non è necessariamente un falso (in realtà non penso che sia e sono ancora impressionato), ma probabilmente non è così innovativo come lo fanno sembrare.


5

Questi atomi in realtà non sono così magici / speciali / estranei all'attuale hardware grafico. È solo una specie di nuvola di punti o rendering basato su voxel. Quindi, invece di triangoli, rendono i punti o le caselle, nulla di irrealizzabile con l'hardware attuale.

È stato ed è già stato fatto e non è la super invenzione, ma forse hanno trovato un modo più efficiente di memoria e tempo per farlo. Anche se sembra e sembra abbastanza interessante, dovresti prendere questo video con un pizzico di sale. Il rendering di 100.000 punti anziché un poligono completamente strutturato (che occupa già solo pochi pixel sullo schermo) non migliora la qualità grafica di un fattore di 100.000.

E a proposito, ho sentito che il software id sta anche provando il rendering voxel accelerato dalla GPU, ma ho un po 'più di fiducia in John Carmack che negli oratori di questo video :)


2

Era una truffa sugli investimenti.

Per quanto riguarda l'idea, non è fattibile sull'attuale hardware non dedicato. La quantità di punti necessari per evitare lacune quando si guarda qualcosa da vicino è molto al di là della quantità di punti che è possibile generare nella RAM di oggi. Anche se, non conosco alcuna struttura di dati o algoritmi di ricerca che produrrebbe qualcosa vicino alle prestazioni mostrate nella demo. E anche se , in qualche modo, fosse possibile cercare questi punti in tempo reale, i mancati cache e la larghezza di banda della memoria assicurerebbero che non è possibile.

Non sto dubitando del fatto che tali immagini non possano essere raggiunte in tempo reale, ma non con il metodo presentato. La mia ipotesi è che le demo sono state rese con voxel, che sono stati usati per decenni e possono già produrre dettagli abbastanza elevati in tempo reale: http://www.youtube.com/watch?v=BKEfxM6girI http://www.youtube .com / watch? v = VpEpAFGplnI


2
"È stata una truffa sugli investimenti" ... su cosa ti basi? Soprattutto visti i finanziamenti acquisiti di recente e i video caricati oggi?
Bart

1
Quali video? Non si aggiornano da oltre un anno.
Hannesh,

1
youtube.com/user/EuclideonOfficial come pubblicato dall'OP nei commenti.
Bart,

1

Da quello che ho visto, sembra che stiano usando forme parametriche anziché semplici forme poligonali - in altre parole cambiano la geometria in base alla risoluzione richiesta.

Questo può essere fatto usando tecniche come shader di geometria e rumore perlin.

Un'altra possibilità è l'utilizzo di GPGPU (ad es. CUDA) per eseguire il rendering di scene che includono non poligoni e per eseguire il ray-tracing (per ordine z e ombre). Un'altra possibilità è un hardware personalizzato che esegue il rendering di formule anziché triangoli


0

Penso a tutte le loro affermazioni, la compressione della memoria sembra un'esagerazione, potrei capire qualcosa come la compressione RLE che ha un grande impatto. Alla fine penso che questo sistema avrà molti "pro", ma molti "contro", in modo molto simile al ray-tracing o al rendering iso-superficie con cubi in marcia.

Per quanto riguarda il rendering di "trilioni" di atomi; Non penso che lo stiano dicendo. Quello che stanno invece facendo è cercare atomi W * H, ovvero un atomo per pixel sullo schermo. Ciò potrebbe essere realizzato in molti modi lenti e difficili. Alcuni modi per accelerare questo sono KD Trees e BSP Trees, Octrees, ecc. Alla fine, tuttavia, molti dati vengono ordinati e il fatto che la loro demo apparentemente ordina 1440x720 atomi, più di una volta per frame, a causa di ombre / riflessi nella loro demo, è sorprendente. Quindi cudos!


-1

il modo in cui funziona è molto più semplice di quanto si pensi, invece di precaricare un livello di gioco carica solo un singolo schermo, uno o pochi atomi per pixel sullo schermo, niente di più, il gioco / motore prevede quindi ciò che il i fotogrammi successivi sono e questa è l'unica cosa caricata, viene renderizzata solo la parte dell'oggetto visibile, non l'intero oggetto stesso. PRO: quanta più definizione e risoluzione è in grado di gestire il tuo monitor, basso consumo di memoria CONTRO: la velocità di lettura dal disco è abbastanza grande e potrebbe portare a una bassa frequenza dei fotogrammi.


questo non sembra offrire nulla di sostanziale rispetto ai punti formulati e spiegati nelle precedenti 7 risposte
moscerino del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.