Węzeł DirectionalLight oświetla obiekty zdefiniowane w węźle grupującym.
DirectionalLight
{
exposedField
SFFloat ambientIntensity 0
exposedField
SFColor color
1 1 1
exposedField
SFVec3f direction 0 0 -1
exposedField
SFFloat intensity 1
exposedField
SFBool on
TRUE
}
Pole ambientIntensity
typu SFFloat
definiuje intensywność światła, które nie pada bezpośrednio na żadną powierzchnię
(intensywność cienia), natomiast pole intensity
definiuje siłę emitowanego światła. Intensywność światła może przybierać
wartości od 0.0 (światło nie świeci) do 1.0 (pełna siła oświetlenia). Pole
color
typu SFColor
okeśla kolor emitowanego światła. Kolor ten definiowany jest w standardzie
RGB przybierając wartości od 0.0 do 1.0. Pole direction
określa kierunek padania światła. Natomiast pole on
typu SFBool
odpowiada za włączanie i wyłączanie światła zdefiniowanego w tym węźle.
Węzeł PointLight może występować w dowolnym miejscu pliku VRML. W polu location, które określa miejsce położenia źródła światła, tworzy swój własny układ współrzędnych. Światło zdefiniowane w tym węźle oświetla wszystkie obiekty na scenie snopem światła, którego szerokość określana jest w polu radius.
PointLight {
exposedField
SFFloat ambientIntensity 0
exposedField
SFVec3f attenuation 1 0 0
exposedField
SFColor color
1 1 1
exposedField
SFFloat intensity 1
exposedField
SFVec3f location
0 0 0
exposedField
SFBool on
TRUE
exposedField
SFFloat radius
100
}
Większość pól tego węzła jest analogiczna do pól w węźle DirectionalLight. Oprócz pola radius, polem dodatkowym jest attenuation typu SFVec3f, które odpowiada za słabnięcie snopu światła w zależności od oddalania się od jego źródła.
Węzeł SpotLight definiuje źródło światła padającego z określonego punktu, w określonym kierunku. Węzeł SpotLight definiuje snop światła na podstawie danych o promieniu (radius), szerokości snopu światła (beamWidth) oraz kącie, po przekroczeniu którego snop światła zanika (cutOffAngle).
SpotLight {
exposedField
SFFloat ambientIntensity 0
exposedField
SFVec3f attenuation 1 0 0
exposedField
SFFloat beamWidth 1.570796
exposedField
SFColor color
1 1 1
exposedField
SFFloat cutOffAngle 0.785398
exposedField
SFVec3f direction 0 0 -1
exposedField
SFFloat intensity 1
exposedField
SFVec3f location
0 0 0
exposedField
SFBool on
TRUE
exposedField
SFFloat radius
100
}
Działanie węzła SpotLight
bardzo ładnie przedstawia poniższy rysunek:
Podsumowanie:
DirectionalLight - definiuje światło, które oświetla jedynie obiekty umieszczone w węźle grupującym. Można określić kierunek, w którym będzie padać światło, ale lokalizacja źródła jest uzależniona od lokalizacji węzła grupującego, np: Transform.
PointLight - oświetla wszystkie obiekty zdefinowane na scenie. Możemy określić lokalizację źródła światła, ale nie określimy już kierunku, gdyż światło tego typu roznosi się we wszystkich kierunkach.
SpotLight
- efekt działania tego węzła przypomina działanie latarki. Z jednego małego
punktu światło rozchodzi się, coraz bardziej się rozszerzając. Określamy
pozycję źródła światła, kierunek padania promieni, szerokość snopu światła
itd.
Przykład:
Węzły definiujące światło są najsłabiej "rozumiane" przez przeglądarki VRML. Praktycznie ciężko jest dopatrzeć się różnic i subtelności w ich działaniu. Z tego też powodu nie ma sensu przytaczać przykładów dla wszystkich rodzajów węzłów definiuących światło. Stworzyliśmy dla was w miarę ciekawy przykład z węzłem SpotLight w roli głównej.
#VRML V2.0 utf8
SpotLight {
ambientIntensity 0
attenuation 1 0 0
beamWidth 1.570796
color
1 0 0 #Kolor
czerwony
cutOffAngle 0.785398
direction -1 0 0
intensity 1
location 10 0 0
on
TRUE
radius
100
}
Transform {
rotation 1 0 0 0.5
translation 0 0 -5
children [
Shape {
appearance Appearance {
material Material {
emissiveColor 0 1 0
transparency 0
specularColor 0 0.25 0.5 #
Kolor granatowy
}
}
geometry Box {
size 4 4 4
}
}
]
}
Do przykładu z poprzedniego punktu naszego kursu dodaliśmy węzeł SpotLight, dzięki któremu tworzymy źródło światła w punkcie (10,0 ,0). Snop światła w kolorze czerwonym, skierowany jest w kierunku ujemnej części osi X. Dzięki temu będzie oświetlał nasz sześcian z prawej strony (naszej prawej). Załadujmy świat i zobaczmy co się wydarzy przy włączonym dodatkowo świetle headlight. Po instrukcję kliknij tutaj.