I nodi Shape sono illuminati dalla luce che li raggiunge a partire da tutte le fonti di luce presenti nel mondo.
La luce può essere sia diretta che indiretta.
La luce ambientale è data dall’effetto combinato, riprodotto più o meno fedelmente, delle luci provenienti da diverse sorgenti di luce.
Le sorgenti di luce possono essere i nodi: DirectionalLight, PointLight e SpotLight.
I nodi sorgente di luce hanno dei campi comuni che specificano rispettivamente:
- intensity, l’intensità di luce diretta [0.0, 1.0]
- ambientIntensity, il contributo alla luce ambientale [0.0, 1.0]
- color, le proprietà di colore della luce emessa (una tripla RGB)
- on, accesa?
DirectionalLight
DirectionalLight { exposedField SFFloat ambientIntensity 0 # [0, 1] exposedField SFColor color 1 1 1 # [0, 1] exposedField SFVec3f direction 0 0 -1 # (-..., ...) exposedField SFFloat intensity 1 # [0, 1] exposedField SFBool on TRUE }
La luce direzionale attraversa tutta la scena nella direzione indicata da direction illuminando tutte le figure presenti senza effetti d’ombra.
È da considerarsi posizionata all’infinito… a meno che non sia inserita in un gruppo: in questo caso illumina solo i fratelli e i discendenti.
La configurazione di default è
- ambientIntensity, nessun contributo
- color, bianca
- direction, verso il fondo della scena, z=-1
- intensity, massima
- on, accesa
PointLight
PointLight { exposedField SFFloat ambientIntensity 0 # [0, 1] exposedField SFVec3f attenuation 1 0 0 # [0, ...) exposedField SFColor color 1 1 1 # [0, 1] exposedField SFFloat intensity 1 # [0, 1] exposedField SFVec3f location 0 0 0 # (-..., ...) exposedField SFBool on TRUE exposedField SFFloat radius 100 # [0, ...) }
Una luce puntuale si diffonde in tutte le direzioni
- location, traslazione rispetto all’origine
- radius, distanza massima raggiunta
- attenuation, tre parametri fisici…
SpotLight
SpotLight { exposedField SFFloat ambientIntensity 0 # [0, 1] exposedField SFVec3f attenuation 1 0 0 # [0, ...) exposedField SFFloat beamWidth 1.570796 # (0, PI/2] exposedField SFColor color 1 1 1 # [0, 1] exposedField SFFloat cutOffAngle 0.785398 # (0, PI/2] exposedField SFVec3f direction 0 0 -1 # (-..., ...) exposedField SFFloat intensity 1 # [0, 1] exposedField SFVec3f location 0 0 0 # (-..., ...) exposedField SFBool on TRUE exposedField SFFloat radius 100 # [0, ...) }
Una luce spot si diffonde secondo un cono di luce
- location, traslazione rispetto all’origine
- radius, distanza massima raggiunta
- attenuation, tre parametri fisici…
- beamWidth, angolo di intensità massima
- cutOffAngle, angolo di intensità nulla
Nota: si comporta male, come una DirectionalLight, sulle superfici piatte…
headlight
Il campo headlight del nodo NavigationInfo specifica se è accesa o meno (TRUE/FALSE) una luce posizionata in testa all’osservatore.
Si comporta come una luce direzionale che punta nella direzione in cui l’osservatore sta guardando.
Le sue caratteristiche sono:
- intensity, 1
- color, (1 1 1)
- ambientIntensity, 0.0
- direction, (0 0 -1)