Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Unità fisiche di luce e telecamera
Perché usare unità fisiche di luce e telecamera?
Godot utilizza unità di misura arbitrarie per molte proprietà fisiche che si applicano alla luce, come colore, energia, campo visivo della telecamera ed esposizione. Normalmente, queste proprietà utilizzano unità di misura arbitrarie, poiché l'utilizzo di unità di misura fisiche accurate comporta alcuni compromessi che non valgono la pena in molti giochi. Poiché Godot da priorità alla semplicità d'uso normalmente, le unità di misura fisiche della luce sono disabilitate per impostazione predefinita.
Vantaggi di unità fisiche
Se si punta al fotorealismo nel proprio progetto, utilizzare unità di misura reali come base può rendere le cose più facili da aggiustare. Riferimenti per materiali, luci e luminosità di scene del mondo reale sono ampiamente disponibili su siti web come Physically Based.
L'utilizzo di unità reali di misura in Godot può essere utile anche quando si trasferisce una scena da un altro software 3D che utilizza unità fisiche di luce (come Blender).
Svantaggi delle unità fisiche
Lo svantaggio principale dell'uso di unità fisiche di luce è che bisogna prestare molta attenzione alla gamma dinamica utilizzata in un determinato momento. Si possono verificare errori di precisione in virgola mobile quando si combinano intensità luminose molto alte con intensità luminose molto basse.
In pratica, ciò significa che sarà necessario gestire manualmente le impostazioni di esposizione per assicurarsi di non sovraesporre o sottoesporre eccessivamente la scena. L'esposizione automatica può aiutare a bilanciare la luce in una scena per riportarla entro un intervallo normale, ma non può recuperare la precisione persa a causa di un intervallo dinamico troppo alto.
L'uso di unità fisiche di luce e telecamera non renderà automaticamente il progetto più bello. In realtà, a volte, allontanarsi dal realismo può rendere una scena più gradevole all'occhio umano. Inoltre, l'uso di unità fisiche richiede un maggiore rigore rispetto alle unità non fisiche. La maggior parte dei vantaggi derivanti dalle unità fisiche si ottiene solo se queste sono configurate correttamente in modo da corrispondere a riferimenti del mondo reale.
Nota
Le unità fisiche di luce sono disponibili solo nel rendering 3D, non in quello 2D.
Configurare le unità di illuminazione fisica
È possibile abilitare le unità fisiche di luce separatamente dalle unità fisiche di telecamera.
Per abilitare correttamente le unità fisiche di luce, sono necessari 4 passaggi:
Abilita l'impostazione del progetto.
Configura la telecamera.
Configurare l'ambiente.
Configura i nodi Light3D.
Poiché le unità fisiche di luce e telecamera richiedono solo qualche calcolo per gestire la conversione di unità, abilitarle non ha alcun impatto notevole sulle prestazioni della CPU. Tuttavia, sul lato della GPU, le unità fisiche della telecamera attualmente impongono la profondità di campo, il che ha un impatto moderato sulle prestazioni. Per attenuare tale impatto, è possibile ridurre la qualità della profondità di campo nelle Impostazioni avanzate del progetto.
Abilita l'impostazione del progetto
Aprire le impostazioni del progetto, abilitare l'opzione Avanzate e poi abilitare Rendering > Luci e ombre > Usa unità fisiche di luce. Riavviare l'editor.
Configura la telecamera
Avvertimento
Quando le unità fisiche di luce sono abilitate e se nella scena è presente un nodo WorldEnvironment (ovvero, l'ambiente dell'editor è disabilitato), è necessario assegnare una risorsa CameraAttributes al nodo WorldEnvironment. Altrimenti, la viewport dell'editor 3D apparirà estremamente luminosa se è presente un nodo DirectionalLight3D visibile.
Nel nodo Camera3D, è possibile aggiungere una risorsa CameraAttributes alla sua proprietà Attributes. Questa risorsa serve per controllare la profondità di campo e l'esposizione della telecamera. Quando si utilizza CameraAttributesPhysical, anche la sua proprietà di lunghezza focale è utilizzata per regolare il campo visivo della telecamera.
Quando le unità fisiche di luce sono abilitate, le seguenti proprietà in più diventano disponibili nella sezione Exposure di CameraAttributesPhysical:
Aperture: la dimensione dell'apertura della fotocamera, misurata in f-stop. Un f-stop è un rapporto senza unità tra la lunghezza focale della fotocamera e il diametro dell'apertura. Un'impostazione più alta risulta in un'apertura più piccola, che porta a un'immagine più scura e a una messa a fuoco più nitida. Un'inpostazione bassa risulta in un'apertura più ampia che lascia entrare più luce, il che porta a un immagine più luminosa ma meno nitida.
Shutter Speed: Il tempo di apertura e chiusura dell'otturatore, misurato in secondi inversi (
1/N). Un valore più basso lascerà passare più luce, producendo un'immagine più luminosa, mentre un valore più alto lascerà passare meno luce, producendo un'immagine più scura. Quando si ottiene o si imposta questa proprietà tramite uno script, l'unità di misura è in secondi anziché in secondi inversi.Sensitivity: la sensibilità del sensore della telecamera, misurata in ISO. Una sensibilità più alta risulta in un'immagine più luminosa. Quando l'esposizione automatica è abilitata, questo valore può servire come metodo per compensare l'esposizione. Raddoppiando il valore, l'esposizione (misurata in EV100) aumenterà di 1 stop.
Multiplier: un moltiplicatore di esposizione non fisico. Valori più alti aumenteranno la luminosità della scena. Può servire per regolazioni in post-elaborazione o per scopi di animazione.
Il valore predefinito di Aperture di 16 stop è appropriato per gli esterni durante il giorno (ovvero per l'utilizzo con una luce direzionale 3D predefinita). Per l'illuminazione negli interni, un valore compreso tra 2 e 4 è più appropriato.
La velocità dell'otturatore tipicamente utilizzata in fotografia e nella produzione cinematografica è di 1/50 (0,02 secondi). Nella fotografia notturna si utilizza generalmente una velocità di circa 1/10 (0,1 secondi), mentre nella fotografia sportiva si utilizza una velocità compresa tra 1/250 (0,004 secondi) e 1/1000 (0,001 secondi) per ridurre la sfocatura da movimento.
Nella vita reale, la sensibilità è solitamente impostata tra 50 ISO e 400 ISO per la fotografia diurna all'aperto, a seconda delle condizioni meteorologiche. Valori più elevati sono utilizzati per la fotografia notturna o in interni.
Nota
A differenza delle fotocamere reali, gli effetti negativi causati dall'aumento della sensibilità ISO o dalla riduzione della velocità dell'otturatore (come la grana visibile o le scie luminose) non sono simulati in Godot.
Consultare Configurare le unità di telecamera fisica per una descrizione delle proprietà di CameraAttributesPhysical, disponibili anche quando non si utilizzano unità fisiche di luce.
Configurazione dell'ambiente
Avvertimento
La configurazione predefinita è progettata per scene esterne diurne. Le scene notturne e in interni richiederanno aggiustamenti all'intensità di sfondo del DirectionalLight3D e del WorldEnvironment per apparire corrette. Altrimenti, le luci di posizione saranno appena visibili con la loro intensità predefinita.
Se non è stato ancora aggiunto un nodo WorldEnvironment e Camera3D alla scena attuale, farlo adesso cliccando sui 3 punti verticali in alto alla viewport dell'editor 3D. Cliccare su Aggiungi sole alla scena, aprire di nuovo la finestra di dialogo e cliccare su Aggiungi ambiente alla scena.
Dopo aver abilitato le unità fisiche di luce, una nuova proprietà diventa disponibile da modificare nella risorsa Environment:
Background Intensity: l'intensità del cielo di sfondo in nits (candele per metro quadrato). Questo influisce anche sulla luce ambientale e riflessa se le rispettive modalità sono impostate su Background. Se è impostata una Background Energy personalizzata, questa energia è moltiplicata per l'intensità.
Configura i nodi di luce
Dopo aver abilitato le unità fisiche di luce, nei nodi Light3D diventano disponibili 2 nuove proprietà:
Intensity: l'intensità della luce in lux (DirectionalLight3D) o lumen (OmniLight3D/SpotLight3D). Se è impostata un'Energy personalizzata, questa energia è moltiplicata per l'intensità.
Temperature: la temperatura del colore della luce definita in Kelvin. Se è impostato un Color personalizzato, questo colore è moltiplicato per la temperatura del colore.
Intensità di OmniLight3D/SpotLight3D
I lumen sono un'unità di misura del flusso luminoso, ovvero la quantità totale di luce visibile emessa da una sorgente luminosa per unità di tempo.
Per gli SpotLight3D, supponiamo che l'area esterna al cono visibile sia circondata da un materiale che assorbe perfettamente la luce. Di conseguenza, la luminosità apparente dell'area del cono non cambia al variare delle dimensioni del cono.
Una tipica lampadina domestica può variare da circa 600 a 1200 lumen. Una candela è circa 13 lumen, mentre un lampione stradale può raggiungere circa 60000 lumen.
Intensità di DirectionalLight3D
Il lux è un'unità di misura del flusso luminoso per unità di area, equivalente a un lumen per metro quadrato. Il lux misura la quantità di luce che colpisce una superficie in un determinato momento.
Con DirectionalLight3D, in una giornata serena e soleggiata, una superficie esposta alla luce solare diretta può ricevere circa 100000 lux. Una tipica stanza di una casa può ricevere circa 50 lux, mentre il terreno illuminato dalla luna può riceverne circa 0,1 lux.
Temperatura di colore
6500 Kelvin è bianco. Valori più alti producono colori più freddi (tendenti al blu), mentre valori più bassi producono colori più caldi (tendenti all'arancione).
Il sole in una giornata nuvolosa si aggira intorno ai 6500 Kelvin. In una giornata serena, il sole è compresa tra 5500 e 6000 Kelvin. All'alba o al tramonto, in una giornata serena, il sole raggiunge circa 1850 Kelvin.
Tabella della temperatura del colore da 1.000 Kelvin (a sinistra) a 12.500 Kelvin (a destra)
Altre proprietà di Light3D, come Energy e Color, rimangono modificabili a scopo di animazione e quando occasionalmente è necessario creare luci con proprietà non realistiche.
Configurare le unità di telecamera fisica
È possibile abilitare le unità fisiche di telecamera separatamente dalle unità fisiche di luce.
Dopo aver aggiunto una risorsa CameraAttributesPhysical alla proprietà Camera Attributes di un nodo Camera3D, alcune proprietà come FOV non saranno più modificabili. Queste proprietà saranno invece gestite dalle proprietà del CameraAttributesPhysical, come la lunghezza focale e l'apertura.
CameraAttributesPhysical offre le seguenti proprietà nella sua sezione Frustum:
Focus Distance: distanza dalla fotocamera dell'oggetto che sarà messo a fuoco, misurata in metri. Internamente, questa distanza sarà limitata in modo da essere almeno 1 millimetro maggiore di Focal Length.
Focal Length: distanza tra l'obiettivo e l'apertura della telecamera, misurata in millimetri. Controlla il campo visivo e la profondità di campo. Una lunghezza focale maggiore risulterà in un campo visivo più piccolo e una profondità di campo più ridotta, il che significa che meno oggetti saranno a fuoco. Una lunghezza focale minore risulterà in un campo visivo più ampio e una maggiore profondità di campo, il che significa che più oggetti saranno a fuoco. Questa proprietà sovrascrive le proprietà FOV e Keep Aspect di Camera3D, rendendole di sola lettura nell'ispettore.
Near/Far: le distanze di ritaglio vicino e lontano in metri. Si comportano allo stesso modo delle proprietà di Camera3D con lo stesso nome. Valori di Near più bassi permettono alla telecamera di visualizzare oggetti molto vicini, a scapito di potenziali problemi di precisione (Z-fighting) a distanza. Valori di Far più alti permettono alla telecamera di vedere più lontano, anche in questo caso a scapito di potenziali problemi di precisione (Z-fighting) nella distanza.
La lunghezza focale predefinita di 35 mm corrisponde a un obiettivo grandangolare. Ciò risulta comunque in un campo visivo notevolmente più ristretto rispetto al campo visivo verticale "pratico" predefinito di 75 gradi. Questo perché, in situazioni diverse dai videogiochi, come il cinema e la fotografia, si preferisce un campo visivo più ristretto per un aspetto più cinematografico.
I valori di lunghezza focale comunemente utilizzati nel cinema e nella fotografia sono:
Obiettivo fisheye (ultra grandangolare): inferiore a 15 mm. Quasi non si nota la profondità di campo.
Grandangolare: tra 15 mm e 50 mm. Profondità di campo ridotta.
Standard: tra 50 mm e 100 mm. Profondità di campo standard.
Teleobiettivo: superiore a 100 mm. Profondità di campo aumentata.
Come quando si utilizza la modalità di aspetto Keep Height, il campo visivo effettivo dipende dal rapporto d'aspetto della viewport: rapporti d'aspetto più ampi risultano automaticamente in un campo visivo orizzontale più ampio.
Nella sezione Auto Exposure è possibile abilitare anche la regolazione automatica dell'esposizione in base al livello medio di luminosità della telecamera, con le seguenti proprietà:
Min Sensitivity: la luminosità minima che la telecamera può raggiungere, misurata in EV100.
Max Sensitivity: la luminosità massima che la telecamera può raggiungere, misurata in EV100.
Speed: la velocità dell'effetto di esposizione automatica. Influisce sul tempo necessario alla telecamera per effettuare l'esposizione automatica. Valori più alti permettono transizioni più rapide, ma le regolazioni risultanti potrebbero apparire fastidiose a seconda della scena.
Scale: la scala dell'effetto di esposizione automatica. Influisce sull'intensità dell'esposizione automatica.
EV100 è un valore di esposizione (EV) misurato a una sensibilità ISO di 100. Consultare questa tabella per i valori EV100 più comuni riscontrabili nella vita reale.