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.

AreaLight3D

Eredita: Light3D < VisualInstance3D < Node3D < Node < Object

Una luce d'area, come una lampada al neon o uno schermo.

Descrizione

Una luce d'area è un tipo di nodo Light3D che emette luci in un'area bidimensionale, a forma di rettangolo. La luce è attenuata in base alla distanza. È possibile configurare questa attenuazione modificando l'energia, area_attenuation e area_range.

La luce è emessa nella direzione -Z della base globale del nodo. Per una luce non ruotata, ciò significa che la luce è emessa in avanti, illuminando il lato frontale di un modello 3D (vedi Vector3.FORWARD e Vector3.MODEL_FRONT).

Le luci d'area possono proiettare ombre sfumate utilizzando PCSS, che è possibile controllare regolando il parametro size. La mappa delle ombre viene disegnata dal centro della luce.

Nota: Le luci d'area hanno un supporto limitato nei renderer Mobile e Compatibilità. Nel renderer Mobile, la dimensione della penombra non varia come dovrebbe con PCSS. In Compatibilità, le luci d'area non possono proiettare ombre.

Attenzione: Le ombre proiettate da una luce d'area potrebbero apparire errate se l'oggetto da cui provengono non ha abbastanza suddivisioni ed è molto vicino alla luce d'area. Questa è la stessa limitazione della modalità d'ombra Dual Paraboloid su una OmniLight3D.

Prestazioni: Le luci d'area sono più impegnative per la GPU rispetto alle luci omnidirezionali e spot. In Forward+, hanno un impatto in più per la GPU su tutti gli oggetti renderizzati non appena una luce d'area è presente nel frustum di visualizzazione (a causa della natura dell'illuminazione clusterizzata). Si consiglia di utilizzarle solo per le sequenze cinematiche o quando si punta a dispositivi di fascia alta.

Tutorial

Proprietà

float

area_attenuation

1.0

bool

area_normalize_energy

true

float

area_range

5.0

Vector2

area_size

Vector2(1, 1)

Texture2D

area_texture

float

light_size

0.5 (overrides Light3D)

float

shadow_normal_bias

1.0 (overrides Light3D)


Descrizioni delle proprietà

float area_attenuation = 1.0 🔗

Controlla la funzione di attenuazione della distanza per questa luce d'area.

Un valore di 0.0 manterrà una luminosità costante per la maggior parte della portata, ma attenuerà gradualmente la luce al limite del portata. Utilizza un valore di 2.0 per luci fisicamente accurate in quanto risulta nella corretta attenuazione inversa quadrata.

Nota: Impostare l'attenuazione su 2.0 o superiore può comportare che gli oggetti distanti ricevano una luce minima, anche entro la portata. Ad esempio, con una portata di 4096, un oggetto lontano di 100 unità è attenuato di un fattore di 0.0001. Con una luminosità predefinita di 1, la luce non sarebbe visibile a quella distanza.

Nota: Utilizzare valori negativi o superiori a 10.0 può portare a risultati imprevisti.


bool area_normalize_energy = true 🔗

  • void set_area_normalize_energy(value: bool)

  • bool is_area_normalizing_energy()

Definisce se l'energia è normalizzata (divisa) per l'area superficiale della luce. Se impostato su true, la modifica delle dimensioni non influisce l'energia emessa totale e non altera fortemente la luminosità della scena.


float area_range = 5.0 🔗

La portata dell'area in metri. Determina la distanza massima da qualsiasi punto dell'area alla quale l'area può ancora emettere luce.


Vector2 area_size = Vector2(1, 1) 🔗

Le estremità (larghezza e altezza) dell'area in metri.


Texture2D area_texture 🔗

Una texture opzionale da utilizzare come sorgente luminosa. Modificare la texture in fase di esecuzione potrebbe influire sulle prestazioni, poiché deve essere disegnata sull'atlante delle luci d'area con mipmap filtrate.

Se nessuna texture è assegnata, la luce d'area emette luce uniforme sulla sua superficie.

Nota: Le texture per le luci d'area sono supportate solo nei metodi di rendering Forward+ e Mobile, non in Compatibilità. Per ridurre l'impatto sulle prestazioni del cambio di texture in fase di esecuzione, assicurarti che ogni dimensione di una texture d'area sia un multiplo di 128 pixel o una potenza di due. Questo elimina la necessità di un passaggio di ridimensionamento, il che rallenta il cambio della texture. Le texture non devono necessariamente essere quadrate per essere ottimali. Esempi di dimensioni ottimali per le texture includono 32x64, 128x128 e 256x384.