VRMLed - uDner Cnossstrucion


Wstęp*
Koncepcja*
FCAF*
Teksty*
Światła*
Dźwięki*
*Three Dots

* Światła - jak, co i czym oświetlać
*VRML definiuje trzy rodzaje świateł. Są to światło kierunkowe (węzeł DirectionalLight), światło punktowe (PointLight) oraz światło reflektorowe (SpotLight). Zaczynamy.

* DirectionalLight
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
}
*Światło typu DirectionalLight jest czymś w rodzaju świecącej w jednym kierunku płaszczyzny. Każdy przedmiot umieszczony w tym samym węźle grupującym co DirectionalLight zostanie oświetlony. W naturze za światło tego typu można uznać np. światło słoneczne oświetlające Ziemię (dwa budynki oddalone o 2 km stojące z taką samą orientacją będą oświetlone mniej więcej tak samo).
*Pole ambientIntensity określa stopień oświetlenia przez światło zasłoniętych części przedmiotów, czyli płaszczyzn nie zwróconych w kierunku światła. Przy wartości równej 1 nie będzie widać żadnych cieni na przedmiocie, gdyż będzie on we wszystkich miejscach tak samo oświetlony. Pole color definiuje kolor światła. Pole direction określa wektor wzdłuż którego światło będzie się rozchodziło, natomiast pole intensity określa intensywność światła. Podobnie jak amibentIntensity przyjmuje wartości z zakresu <0,1>. Pole on przyjmuje wartości TRUE gdy światło jest aktywne na scenie (włączone) i FALSE gdy światło jest nieaktywne (wyłączone).
*Przykład: biała kula oświetlona białym światłem, świecącym w ujemnym kierunku osi X (co po prostu znaczy z prawej w lewo :)

Źródło

*Przykład: biała kula oświetlona żółtym światłem, świecącym w ujemnym itd...

Źródło

*Przykład: biała kula oświetlona zielonym światłem, świecącym w ujemnym itd..., z wartością światła i materiału ambientIntensity 1.

Źródło

*Ostatni efekt jest ciekawy, prawda?

* PointLight
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
}
*Węzeł PointLight definiuje na scenie VRML światło punktowe, czyli takie które rozchodzi się z jednego punktu we wszystkich kierunkach. Najprostszym przykładem światła punktowego jest goła żarówka.
*Pola ambientIntensity, color, intensity oraz on mają takie samo znaczenie jak w przypadku węzła DirectionalLight. Pole location określa punkt w lokalnym układzie współrzędnych w którym zostanie umieszczone światło. Pole radius określa promień zasięgu światła. Obiekty oddalone dalej niż wartość pola radius nie będą oświetlone przez to światło. Pole attenuation określa w jaki sposób intensywność światła maleje wraz ze wzrostem odległości od jego źródła. Wyraża się to ciekawym wzorem:
1/max(attenuation[0] + attenuation[1]×r + attenuation[2]×r2, 1)

Domyślną wartością tego pola jest 1 0 0, co oznacza że światło jest tak samo jasne w każdym punkcie jego zasięgu.
*Przykład: cztery kule oświetlone białym światłem punktowym umieszczonym w środku.

Źródło

*Przykład: To samo na statku (żarówka się buja, użyto pola attenuation :).

Źródło


* SpotLight
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
}
*Węzeł SpotLight definiuje światło reflektorowe, takie jak np. światło latarki albo światła samochodu. Pola ambientintensity, color, intensity, direction oraz on określają te same właściwości jak w węźle DirectionalLight. Pola attenuation, location oraz radius są takie same jak opisano w węźle PointLight. Pole beamWidth określa kąt w jakim światło świeci pełną mocą. Pole cutOffAngle określa kąt w jakim światło całkowicie zanika. Poniższy rysunek przedstawia charakterystykę oświetlenia węzła SpotLight.
SpotLight
*Przykład: Sześcian oświetlony światłem punktowym.

Źródło

*Przykład: Kule i obrotowe światło punktowe w środku.

Źródło


E-mail to: coding@poczta.onet.pl