<< >> Title Contents Index

6. Valo, varjot ja pintamateriaalit


Objektin pinnan "elävöittäminen" voidaan toteuttaa valojen, varjojen ja pintamateriaalien avulla. Vaikka valokiila olisi suunnattu vain tietyn objektin pinnalle, valo heijastuu ja valaisee mahdollisesti myös muita objekteja. Näinollen pinnan valaistus ja varjostus riippuu sekä materiaalista että useammasta valonlähteestä ja heijastuksista.

6.1. Valon määrittely

Valonlähteitä voi olla useita samassa näkymässä. Valonlähde määritellään aliohjelmakutsulla glLight{i f}v(GLenum light, GLenum pname, TYPE param). Parametri light kertoo, mikä valonlähde on kyseessä. Valonlähteitä voi samassa näkymässä olla ainakin kahdeksan (LIGHT0,..., LIGHT7). Parametri pname ilmaisee, mitä valon ominaisuutta määritellään (väriä, heijastuksen voimakkuutta, suuntaa jne.). Kolmantena parametrinä viedään yksi tai useampi lukuarvo riippuen mitä ominaisuutta ollaan muuttamassa. Parametrien selitykset aliohjelmalle glLight{i f}v(GLenum light, GLenum pname, TYPE param) on selitetty taulukossa 6.1. Valon käyttö on tehtävä vielä mahdolliseksi aliohjelmakutsulla glEnable (GL_LIGHTING). Kun valot ovat yleisesti käytössä, on vielä kerrottava, mitkä valonlähteet halutaan käyttöön. Jokainen valonlähde on erikseen otettava käyttöön samalla aliohjelmakutsulla glEnable(valonlähde), jolle viedään parametrinä haluttu valonlähde (LIGHT0,..., LIGHT7).

Pname

oletusarvot
selostus
GL_AMBIENT
(0.0,0.0,0.0,1.0)
Tasaisesti ympäriltä tulevan ja heijastuvan valon RGBA-arvo.
GL_DIFFUSE
(1.0,1.0,1.0,1.0)
Yhdestä suunnasta, mutta tasaisesti heijastuvan valon RGBA-arvo.
GL_SPECULAR
(1.0,1.0,1.0,1.0)
Yhdestä sunnasta tulevan ja yhteen suuntaan heijastuvan valon RGBA-arvo.
GL_POSITION
(0.0,0.0,1.0,0.0)
Valonlähteen paikka x,y,z,w-koordinaatistossa.
GL_SPOT_DIRECTION
(0.0,0.0,-1.0)
Spottivalon paikka x,y,z-koordinaatistossa.
GL_SPOT_EXPONENT
0.0
Spottivalon hajaantumista ilmaiseva luku.
GL_SPOT_CUTOFF
180.0
Spottivalosta leikattava osa. Voi saada arvon väliltä 0.0,90.0. Huom. 180.0 erikoistapaus.
GL_CONSTANT_ATTENUATION
1.0
Valon heikkenemiskerroin.
GL_LINEAR_ATTENUATION
0.0
Valon heikkenemiskerroin.
GL_QUADRATIC_ATTENUATION
0.0
Valon heikkenemiskerroin.
Taulukko 6.1. Mahdolliset pname-parametrit ja niiden oletusarvot (glLight*).

6.2. Materiaalin määrittely

Objektin materiaalin määrittely sisältää samankaltaisia ominaisuuksia kuin valon määrittelykin. Materiaalista määritellään väri sekä erilaisia heijastusominaisuuksia. Materiaali määritellään aliohjelmalla glMaterial{i f}(GLenum face, GLenum pname, TYPE param). Objektin etu- ja sisäpinnalle on mahdollista määritellä erilaiset ominaisuudet. Ollaanko määrittelemässä etu-, taka- vaiko molempia puolia, ilmoitetaan parametrin face (GL_FRONT, GL_BACK, GL_FRONT_AND_BACK) avulla. Parametri pname kertoo, mitä materiaalin ominaisuutta ollaan muuttamassa ja param antaa sille arvon. Materiaalin määrittelyn suorittavan aliohjelman glMaterial{i f}(GLenum face, GLenum pname, TYPE param) parametrien arvot on selitetty taulukossa 6.2.

pname

oletusarvot
selostus
GL_AMBIENT
(0.2,0.2,0.2,1.0)
Objektista heijastuva hajaantuva väri.
GL_DIFFUSE
(0.8,0.8,0.8,1.0)
Objektin väri.
GL_AMBIENT_AND_DIFFUSE
--------
Asetetaan sekä ambient-, että diffuse-värien arvo samalla kertaa.
GL_SPECULAR
(0.0,0.0,0.0,1.0)
Tiettyyn suuntaan heijastuva kirkas valo.
GL_SHININESS
0.0
Kirkkauden voimakkuus. Voi saada arvot väliltä 0.0,128.0.
GL_EMISSION
(0.0,0.0,0.0,1.0)
Objektin tuottaman valon väri.
GL_COLOR_INDEXES
(0,1,1)
Ambient-, diffuse- ja specular-värien indeksit.
Taulukko 6.2. Mahdolliset pname-parametrit ja niiden oletusarvot (glMaterial*).


<< >> Title Contents Index