Esistono proiezioni 3D diverse dall'ortografia e dalla prospettiva? [chiuso]


22

La domanda è praticamente nel titolo. Esistono notevoli proiezioni 3D diverse dall'ortografia e dalla prospettiva che potrebbero essere utilizzate in un sistema 3D come OpenGL?

In particolare, ce ne sono alcuni che hanno un uso particolare nella progettazione del gioco?

Risposte:


23

Sì, per citarne alcuni:

La proiezione Pannini, ad esempio, può catturare ampi campi visivi in modi piacevoli . (totalmente solo la mia opinione)

Penso che i dettagli di implementazione andrebbero oltre lo scopo di questa domanda specifica.


EDIT: Grazie per il commento, ho sbagliato a scrivere Pannini. E per rendere utile questa modifica eccone alcune altre:

  • Paraboloide / doppio paraboloide (utile per riflessi, ombre, vetrate)
  • Equirettangolare (può produrre una vista della mappa del mondo di una sfera)
  • sferico
  • Sinusoidale

4
+1 per la proiezione Panini; Non ne avevo mai sentito parlare prima. A proposito, finché parliamo di proiezioni non lineari, il doppio paraboloide è uno che a volte viene utilizzato per mappe ambientali e mappe d'ombra.
Nathan Reed,

Essendo molto esigente, ma sembra essere la proiezione "Pannini", non "Panini".
aardvarkk,

Molto bello! Immagino che siano tutti non lineari, come dice Nathan Reed?
jmite,

Credo di sì, molto probabilmente dovrai usare la tassellatura hardware o l'elaborazione delle immagini per realizzarle nella pratica. Ho problemi a pensare a un'altra proiezione che mappa le linee rette in linee rette ma la aggiungerò a questa risposta se trovo qualcosa.
MickLH,

Probabilmente non esiste, questo è esattamente il tipo di pensiero a cui stavo pensando!
jmite,

15

Dipende da cosa intendi con "che potrebbe essere utilizzato in un sistema 3D come OpenGL". :)

In parole povere, l'hardware grafico 3D e le API come OpenGL gestiscono correttamente solo le proiezioni lineari - proiezioni che mappano le linee rette nello spazio mondiale alle linee rette sull'immagine. Non distorcono mai qualcosa in una forma curva (a meno che all'inizio non sia stata curvata). Questo perché le GPU dipendono da triangoli con bordi diritti per rasterizzarli correttamente sullo schermo.

Se ci limitiamo a proiezioni lineari, non ci sono troppe scelte. Oltre all'orto e alla prospettiva standard, ci sono anche variazioni "decentrate" che si ottengono tranciando la vista.

  • Una proiezione ortogonale decentrata è chiamata proiezione obliqua ed è spesso usata per diagrammi di ingegneria ma non si presenta molto nei giochi.
  • Le proiezioni prospettiche decentrate vengono utilizzate nel rendering 3D stereo , poiché si scopre che le viste dell'occhio destro e sinistro si fondono meglio nel cervello se si tagliano i frustum invece di ruotarli per mettere a fuoco un oggetto.

Queste proiezioni possono essere rappresentate con la solita matrice di proiezione 4 × 4 e utilizzate senza problemi in un'API 3D.

Poi ci sono le proiezioni non lineari, che non hanno la restrizione di mappare linee rette su linee rette; sono autorizzati a distorcere le cose in curve. Ce ne sono molti, tra cui cilindrici, sferici, vari tipi di fisheye e altri.

Con le proiezioni non lineari, non puoi semplicemente usare una matrice di proiezione; devi in ​​qualche modo implementare tu stesso la proiezione usando gli shader. Un modo è scrivere uno shader di vertice personalizzato per fare la proiezione per vertice. La GPU disegna comunque il triangolo con linee rette tra i vertici, quindi mentre piccoli triangoli saranno abbastanza vicini alla correzione, i triangoli più grandi saranno notevolmente sbagliati. Ciò può causare problemi e potrebbe essere necessario suddividere la geometria in modo molto fine per renderizzare correttamente.

Un secondo approccio per ottenere una proiezione non lineare è rendere prima la scena usando una proiezione prospettica regolare (forse su una cubemap, che ha una proiezione prospettica per ogni faccia del cubo), quindi applicare un pixel shader post-processo per ricampionarlo nel modo desiderato proiezione non lineare. Ciò ha il vantaggio di non richiedere modifiche alla geometria, ma può essere più costoso a causa del lavoro di rendering aggiuntivo richiesto e il risultato può essere sfocato in alcune aree se il rendering di primo passaggio non ha una risoluzione sufficiente. L'approccio post-process viene utilizzato dai giochi Oculus Rift, ad esempio, per implementare la proiezione non lineare che Rift richiede per funzionare con i suoi obiettivi.


1

Non ci posso credere, ma nessuno ha menzionato la proiezione isometrica che era abbastanza comune.


11
Per quanto ne so, le proiezioni isometriche sono casi d'uso specifici degli altri due tipi di proiezione, ortogonale e prospettica. Ad esempio una proiezione orto con una vista in un determinato angolo ti dà una fotocamera isometrica.
Grimshaw,
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.