Illuminazione sferica delle armoniche - che cosa realizza?


8

Secondo la mia comprensione, le armoniche sferiche sono talvolta utilizzate per approssimare alcuni aspetti dell'illuminazione (a seconda dell'applicazione).

Ad esempio, sembra che tu possa approssimare la causa dell'illuminazione diffusa da una fonte di luce direzionale su un punto della superficie, o parti di esso, calcolando i coefficienti SH per tutte le bande che stai usando (per qualsiasi precisione desideri) nella direzione della normale alla superficie e ridimensionandola con qualsiasi cosa sia necessario ridimensionarla (ad es. intensità di colore chiaro, punto (n, l), ecc.).

Ciò che non capisco ancora è ciò che dovrebbe realizzare. Quali sono gli effettivi vantaggi di farlo in questo modo rispetto alla valutazione del BRDF diffuso in modo normale. Salvi i calcoli da qualche parte? Ci sono alcune informazioni aggiuntive contenute nella rappresentazione SH che non è possibile ottenere dai risultati scalari della valutazione normale?


se pensi che ci sia qualcosa che non ti piace con la risposta, forse posso elaborare?
concept3d

Risposte:


10

Il motivo per usare armoniche sferiche è approssimare la distribuzione della luce in entrata attorno a un punto, in genere la luce indiretta calcolata da un algoritmo di illuminazione globale. Quindi il BRDF viene anche approssimato con armoniche sferiche, per consentire un calcolo efficiente della luce in uscita vista dallo spettatore, prendendo il prodotto punto dei coefficienti SH della luce in entrata con i coefficienti SH del BRDF. Questo si avvicina alla convoluzione della luce in entrata con il BRDF, come si vede nell'equazione di rendering.

Se ti interessa solo ricevere luce da fonti puntiformi, non hai bisogno di SH. Le luci puntiformi vengono gestite in modo più accurato semplicemente valutando direttamente il BRDF. Inoltre, se si dispone di un ambiente fisso (cielo ecc.) Da cui si desidera ricevere luce, è possibile generare cubemap preconvolte offline (utilizzando ad esempio CubeMapGen ) che svolgono un buon lavoro di approssimazione della convoluzione della mappa ambientale con il BRDF. Non c'è bisogno di SH neanche qui.

Dove SH è davvero utile è quando si dispone di una scena complessa e si desidera un'illuminazione indiretta, ovvero un'illuminazione a rimbalzo. In questo caso la distribuzione della luce varia da un luogo all'altro. In linea di principio, ogni singolo punto della scena ha un ambiente di illuminazione diverso in base all'ambiente circostante. In pratica, campioniamo l'illuminazione in punti discreti usando un algoritmo di illuminazione globale. Esistono molti modi per farlo: è possibile campionare l'illuminazione su ciascun vertice delle superfici, ad esempio o su ogni texel di una mappa luminosa. Oppure crea una rappresentazione volumetrica usando una griglia o una mesh tetraedrica .

Il punto è che ci sono molti punti in cui viene campionata l'illuminazione e quindi abbiamo bisogno di una rappresentazione flessibile ma molto compatta dell'illuminazione attorno a un punto, per evitare di consumare troppa memoria. SH ricopre questo ruolo piacevolmente. Ha anche la pratica proprietà di funzionare bene con l'interpolazione, vale a dire che i coefficienti SH possono essere interpolati da un punto campione all'altro e l'illuminazione tra i due si comporterà in modo ragionevole. E poiché cattura la distribuzione angolare complessiva della luce in entrata, non solo la luce da una direzione, puoi usarla con una superficie a mappatura normale e ottenere risultati abbastanza buoni.

Va notato, tuttavia, che SH è davvero utile solo per l'illuminazione diffusa. A meno che non si utilizzi un numero veramente folle di coefficienti SH, si oscurerà troppo la distribuzione angolare della luce in arrivo. Per un'illuminazione indiretta speculare di alta qualità, è necessario qualcos'altro, come cubemap con correzione della parallasse e / o raytracing dello spazio dello schermo.


> Il punto è che ci sono molti punti in cui viene campionata l'illuminazione e quindi abbiamo bisogno di una rappresentazione flessibile ma molto compatta dell'illuminazione attorno a un punto, per evitare di consumare troppa memoria. SH ricopre bene questo ruolo <Questo è ciò che mi confonde. Mi sembra che tu possa rappresentare la luce attorno a un punto (questa è irradianza, non è vero?) Altrettanto bene con una rappresentazione di intensità normale, e hai bisogno di meno memoria anche per essa poiché anche solo 2 bande SH ne usa 4 coefficienti per colore mentre l'intensità è di soli 3 in totale.
TravisG,

Bene, facciamo un esempio specifico: hai per caso familiarità con l'algoritmo Light Propagation Volume usato in Cryengine 3? Mi chiedo perché non sia pratico rappresentare l'illuminazione nell'LPV come intensità.
TravisG,

@TravisG Non è solo un singolo valore di intensità RGB perché diverse quantità di luce provengono da direzioni diverse. L'idea è quella di rappresentare la distribuzione angolare della luce in entrata, non solo la luce da una direzione specifica o la media su tutte le direzioni. Considera se hai una luce verde a sinistra e una luce rossa a destra. Una superficie a mappatura normale dovrebbe riflettere il verde nel punto in cui le normali puntano a sinistra e il rosso nel punto in cui puntano a destra. Una singola intensità RGB non può rappresentare questa situazione, ma una base SH a 2 o 3 bande può.
Nathan Reed,

@TravisG Allo stesso modo con LPV, è necessario tenere traccia della direzione in cui si sta propagando la luce. Non si diffonde solo in tutte le direzioni (a meno che non sia sparso da particelle nell'aria o simili); continua nella direzione in cui è stato emesso. Ad esempio, un nodo nell'LPV potrebbe contenere luce rossa che viaggia verso destra e luce verde che viaggia verso sinistra, allo stesso tempo. Quindi ogni nodo deve tenere traccia della distribuzione angolare della luce che lo attraversa.
Nathan Reed,

3

Ciò che non capisco ancora è ciò che dovrebbe realizzare?

Risposta breve, calcoli della luce fisica più accurati. (rispetto ad alcune caratteristiche di interazione della superficie della luce).

Perché non valutare tutto con BRDF diffuso in modo normale?

Sfortunatamente il problema sta nella definizione del modo normale . Il modello di riflessione phong "normale" è stato abbracciato molto tempo fa dalla comunità di rendering in tempo reale sin dall'inizio ed è stato di fatto lo standard a causa della sua semplicità che lo rende appropriato per l'uso del rendering in tempo reale.

Il problema però , l'interazione luce / materiale nella vita reale è così complicata che non può essere effettivamente modellata da un singolo BRDF.

I BRDF sono un'astrazione di come dovrebbe avvenire l'interazione della luce reale. phong è solo uno molti altri, che ha il vantaggio della semplicità.

Ma quali sono i vantaggi effettivi?

Nella computer grafica ci sono diversi BRDF che rientrano in due categorie principali:

  1. Basato sulla teoria fisica.
  2. Progettato per adattarsi a una specifica classe di tipo di superficie e viene solitamente utilizzato nel rendering in tempo reale.

Parlando della seconda categoria, ogni BRDF cerca di raggiungere determinate caratteristiche con l'interazione della superficie della luce. Il BRDF più semplice possibile è il Lambertiano che cerca di modellare lo scattering del sottosuolo e viene spesso utilizzato nella computer grafica. Il valore di riflettanza costante di un BRDF lambertiano viene comunemente indicato come colore diffuso.

In tempo reale la grafica computerizzata di solito i BRDF vengono selezionati manualmente e i loro parametri impostati per ottenere l'aspetto desiderato (ad es. Utilizzando Phong con determinati valori per modellare una superficie in plastica o cromata).

D'altra parte, a volte i BRDF vengono misurati direttamente dalla superficie desiderata (e non sono rappresentati da un'equazione matematica). Questo ci fornisce dati molto più accurati fisicamente sulla superficie che altrimenti sarebbero difficili da realizzare in modo analitico.

Un metodo per adattarsi a quei dati acquisiti è selezionare un BRDF analitico e adattare questi dati al suo interno. Le armoniche sferiche sono solo una tecnica utilizzata per rappresentare quelle quantità misurate e adattarle a un modello analitico BRDF.

La migliore risorsa per la teoria BRDF può essere trovata nel rendering in tempo reale

  • 7.5 Teoria BRDF.
  • Sulla revisione delle armoniche sferiche 7.7.2 Rappresentazioni per BRDF misurate.

Grazie per la risposta, ma manca un po 'quello che sto cercando. Per quanto ho capito, puoi approssimare qualsiasi funzione f (x) usando armoniche sferiche e per qualche ragione le persone decidono di approssimare parti di un modello di illuminazione usando armoniche sferiche (ciò che dipende esattamente dall'applicazione, ma per esempio il termine diffuso lambertiano è qualcosa che mi sono imbattuto spesso). Mi chiedo perché sia ​​così, mi sembra che le armoniche sferiche siano solo una rappresentazione con perdita di dati che rappresenta gli stessi dati ma non ha nemmeno un vantaggio di memoria.
TravisG,

Bene, dipende da cosa lo confronti. Se lo confronti con un modello analitico, è più coinvolto e costoso. Ma il modello analitico non tiene conto dell'ambiente locale. In questi giorni però vedo principalmente persone che usano le mappe cubiche. Ottengono risultati simili e offrono un migliore supporto hardware.
drxzcl,
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.