Che cos'è Ray Marching? Sphere Tracing è la stessa cosa?


31

Molte demo di ShaderToy condividono l'algoritmo Ray Marching per rendere la scena, ma sono spesso scritte con uno stile molto compatto e non riesco a trovare esempi o spiegazioni semplici.

Allora, cos'è Ray Marching? Alcuni commenti suggeriscono che si tratta di una variazione di Sphere Tracing. Quali sono i vantaggi computazionali di un tale approccio?

Risposte:


34

TL; DR

Appartengono alla stessa famiglia di solutori, in cui il rintracciamento di sfere è un metodo di marcia a raggi, che è il nome della famiglia.

Raymarching di una definizione

Il raymarching è una tecnica un po 'come il raytracing tradizionale in cui la funzione di superficie non è facile da risolvere (o impossibile senza metodi numerici iterativi). Nel raytracing devi solo guardare l'intersezione del raggio, mentre nel raggio marcia marcia in avanti (o avanti e indietro) fino a trovare l'intersezione, avere abbastanza campioni o qualunque cosa tu stia cercando di risolvere. Prova a pensarlo come un metodo newton-raphson per il rilevamento della superficie, o somma per l'integrazione di una funzione variabile.

Questo può essere utile se:

  • È necessario rendere volumetrici che non sono uniformi
  • Rendering di funzioni implicite, frattali
  • Rendering di altri tipi di superfici parametriche in cui non si conosce in anticipo l'intersezione, come la mappatura paralassica
  • Eccetera

Raymarching tradizionale

Immagine 1 : Ray tradizionale in marcia per il rilevamento della superficie

Articoli correlati:

Traccia della sfera

Il tracciamento delle sfere è un possibile algoritmo di marcatura Ray. Non tutti i servizi di raymarching utilizzano questo metodo, poiché non possono essere convertiti in questo tipo di schema.

La traccia della sfera viene utilizzata per il rendering di superfici implicite . Superfici implicite si formano a un certo livello di una funzione continua. In sostanza, risolvendo l'equazione

F(X,Y,Z) = 0

A causa di come questa funzione può essere risolta in ogni punto, si può andare avanti e stimare la sfera più grande possibile che può adattarsi all'attuale passo di marcia (o se non esattamente ragionevolmente sicuro). Allora sai che la distanza del prossimo marzo è almeno così grande. In questo modo è possibile avere fasi adattive di marcatura dei raggi che accelerano il processo.

La traccia della sfera ha una dimensione del passo adattiva

Immagine 2 : traccia della sfera * in azione notare come la dimensione del passo è adattiva

Per maggiori informazioni vedi:

* Forse in 2d dovrebbe essere chiamato traccia del cerchio :)


1
Vorrei raccomandare questo articolo da Scratchapixel per una spiegazione approfondita: scratchapixel.com/lessons/advanced-rendering/...
user18490

@ s user18490' link per Scratchapixel si è trasferito in scratchapixel.com/lessons/advanced-rendering/... . Anche il resto del sito ( scratchapixel.com/index.php ) sembra utile.
WillC,

15

La marcia del raggio è un test di intersezione di raggio iterativo in cui si fa un passo lungo un raggio e si verifica l'intersezione, normalmente utilizzata per trovare intersezioni con geometria solida , dove i test interni / esterni sono rapidi.

inserisci qui la descrizione dell'immagine
Immagini dalla geometria di rendering con trame in rilievo

Una dimensione di passaggio fissa è piuttosto comune se non si ha davvero idea di dove possa verificarsi un'intersezione, ma a volte vengono utilizzati metodi di ricerca della radice come una ricerca binaria o secante. Spesso viene utilizzato un passo fisso per trovare il primo incrocio, seguito da una ricerca binaria. Mi sono imbattuto per la prima volta in un raggio in tecniche di mappatura dello spostamento per pixel. La mappatura in rilievo dei dettagli della superficie del campo non in altezza è una buona lettura!

inserisci qui la descrizione dell'immagine

È comunemente usato con lo spazio che salta, una tecnica di accelerazione in cui un po 'di pre-elaborazione fornisce una distanza di sicurezza che puoi spostare lungo il raggio senza intersecare la geometria, o meglio ancora, senza intersecare e quindi lasciare la geometria in modo da non vederla. Ad esempio, mappatura dei passi dei coni e mappatura dei passi dei coni rilassata.

La traccia della sfera può riferirsi a un test di intersezione implicita sfera-raggio, ma è anche il nome di una tecnica di salto nello spazio di John Hart, come menziona @joojaa, e usata da William Donnelly ( Mappatura di spostamento per pixel con funzioni di distanza ), dove un La trama 3D codifica i raggi delle sfere in cui non esiste alcuna geometria.


Ah, ecco, scattare foto da altri è più efficiente che disegnarle da soli.
joojaa,

@joojaa Sì, più veloce se ricordi dove si trovavano, ma senza quella gratificante sensazione di farlo da solo: P. Inoltre ho questo stupido bug di rendering sub-pixel in Chrome, quindi il testo è tutto colorato.
jozxyqk,

1
Bene, quel rendering subpixel è qualcosa che non è stato chiesto. Ancora.
joojaa,

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.