Abbattimento VR e frustum


13

Quando si esegue il rendering di ambienti VR (vista stereo), ragazzi raccomandate di fare solo 2 controlli del frustum per determinare cosa deve essere disegnato durante il passaggio di abbattimento del frustum o c'è qualche altro controllo che sarebbe in grado di combinare entrambi i frusta?

Risposte:


13

È abbastanza facile creare un singolo frustum che racchiude entrambi i singoli occhi, come mostrato in questo diagramma creato da Cass Everitt a Oculus. Devi solo posizionare un po 'il vertice di questo frustum tra gli occhi e dietro di loro. Puoi anche aumentare la distanza del piano vicino in modo che corrisponda al piano vicino originale della frusta dell'occhio.

inserisci qui la descrizione dell'immagine

Tale frustum include un piccolo spazio che non era nell'unione delle due originali frusta. C'è un piccolo volume in orizzontale tra i due occhi; inoltre, il diagramma non mostra la dimensione verticale, ma tirando indietro il vertice del frustum, include uno spazio sopra e sotto la frusta originale. Tuttavia, per scopi pratici di abbattimento probabilmente non importa. L'abbattimento del frustum è di solito comunque conservativo e lo spazio extra ha solo pochi centimetri di spessore.

È anche possibile semplicemente abbattere i piani superiore e inferiore originali del frustum (che sono condivisi tra gli occhi) insieme ai piani laterali esterni. Questi piani non formano un frustum, tecnicamente, ma se si utilizza l'algoritmo di abbattimento "consueto" che esegue il test su un piano alla volta, l'algoritmo funzionerà felicemente su qualsiasi set di piani che si desidera dargli.

La condivisione dell'abbattimento del frustum, la selezione di LOD, ecc. Tra gli occhi, piuttosto che ripeterlo due volte ogni fotogramma, è un ottimo modo per ottimizzare il costo della CPU del rendering stereo. Questo è anche un prerequisito se si desidera utilizzare un metodo di rendering che attiri entrambi gli occhi in un unico passaggio, come il rendering stereo istanziato .


2
Grazie Nathan è esattamente quello che stavo cercando, dove hai preso questo diagramma, posso chiedertelo, è in qualche documentazione pubblica di Oculus?
Garry Wallis,

2
@GarryWallis Cass l'ha twittato qualche mese fa.
Nathan Reed,

5

Ho generalizzato i risultati di Everitt se è necessario.

frustum comune generalizzato

Come bonus, un modo per estrarre left0 / right0 dalle matrici della prospettiva degli occhi:

left0   = n0 * (Mle13 - 1) / Mle11;
right1  = n1 * (Mre13 + 1) / Mre11;

Se hai la fila maggiore. trasporre per colonna maggiore. vedi questa risposta


4

Fai attenzione, usare un solo frustum per l'abbattimento funziona solo se il campo visivo combinato degli occhi è inferiore a 180 gradi. Ora ci sono cuffie VR con un campo visivo più ampio di circa 200 gradi, ovvero Pimax 5k + e StarVR . È impossibile costruire un frustum di vista tradizionale o una matrice a singola proiezione per un campo visivo di oltre 180 gradi.

Queste cuffie utilizzano schermi angolati, quindi i piani di proiezione e i vettori in avanti nello spazio di visualizzazione non sono paralleli. Le equazioni delle altre risposte qui presuppongono che siano parallele e produrrebbero risultati errati quando tale presupposto è errato.

Un singolo frustum di vista combinato può ancora essere utile, ma il tuo codice dovrebbe essere preparato per affrontare i casi in cui questo non può essere costruito per garantire che sia a prova di futuro. In alternativa, considera la possibilità di effettuare l'abbattimento per vista dell'occhio, oppure passa all'abbattimento basato sull'angolo che può esprimere un FOV maggiore di 180 gradi.

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.