Avtor : Bostjan VEBER


Uvod

Svetlobni model opisuje povezavo med svetlobo in površino, ki je odvisna od lastnosti površine in narave vpadne svetlobe. Svetlobni model je osnova za prikaz osenčenih tri-dimenzionalnih objektov. Omogoča, da je dvo-dimenzionalna projekcija objekta na zaslon realna za človeško dojemanje prostora. Svetlobni model Phong je le približna aproksimacija dejanskega obnašanja svetlobe pri odboju.

Kazalo vsebine:



 

Namen svetlobnih modelov

Namen svetlobnih modelov v računalniški grafiki je v prikazu tri-dimenzionalnih objektov na ekranu (dvo-dimenzionalni prostor) z zadovoljivo stopnjo realnosti. Stopnja realnosti prikaza je odvisna od uporabe same aplikacije. Za večjo stopnjo realnosti je potreben bolj kompleksen svetlobni model, kar zahteva večjo procesorsko moč računalnika. V primeru letalskih simulatorjev so za prikaz virtualne realnosti uporablejni preprosti svetlobni modeli, ker ni zahteve po natančnosti svetlobnih modelov, ampak so večje zahteve pri nanašanju tekstur na površine (texture mapping), kar zelo obremeni procesor. Teksturiranje površin je pomembno zaradi občutka globine prostora. Na drugi strani so postavljene velike zahteve po natančnosti svetlobnih modelov pri animiranih prizorih filmov in televiziskih reklam. Veliko bogatejši in natančneši svetlobni model zahteva pri izdelavi posamezne slike tudi več minut dela enega procesorja. Med tema dvema ekstremoma je senčenje solid modelov v CAD paketih.

Vrste svetlobnih modelov

Ločimo dvoje vrst svetlobnih modelov. V prvo skupino spadajo lokalni svetlobni modeli, ki upoštevajo iterakcijo med točko na površini in izvirom svetlobe. Druga skupina so globalni svetlobni modeli, ki upoštevajo direktno osvetlitev in indirektno osvetlitev, ki je posledica odboja svetlobe od drugih površin (Slika 1.).

Slika 1.(Direktna in indirektna osvetlitev)
 

Teoretične osnove odboja svetlobe

Osnovna enačba odboja svetlobe:


 
Osnovna enačba odboja svetlobe je shematsko prikazana na spodnji skici (Slika 2.).
 

Slika 2.(Zrcalno odbita svetloba, razpršena svetloba, fluorescenca, notranji odboj svetlobe, lomljena svetloba)
 

Intenziteta (svetlost ali moč) svetlobe odbite od površine in njena valovna dolžina (barva svetlobe) je odvisna od valovne dolžine vpadne svetlobe, kota pod katerim je osvetljena površina, od hrapavosti površine in električnih lastnosti materiala površine (permanenca, permabilnost in prevodnost). Zelo natančna povezava med vsemi vplivi je zelo kompleksna. Ista površina je lahko za določene valovne dolžine gladka in za druge hrapava. Lahko pa je površina pri isti valovni dolžini za različne kote osvetlitve različno hrapava. Primer je bleščanje ceste pri sončnem zahodu, ko je kot osvetlitve majhen, med tem ko opoldan ni bleščanja (velik kot osvetlitve).
 

BDRF (BiDirectional Reflectivity Function)

Kompleksno obašanje svetlobe pri odboju je parametrizirano s funkcijo BDRF (BiDirectional Reflectivity Function). Funkcija BDRF obravnava razmerje med vpadno (i - incoming light) in odbito (v - outcoming light) svetlobo (Slika 3.). Zelo pomembna lastnost te funkcije je, da je odvisna od valovne dolžine svetlobe.
 

Slika 3.(N - normala površine, L - vektor luči, V - vektor očesa)
 

BDRF funkcija je podana kot razmerje med z intenziteto odbite svetlobe in energijo vpadne svetlobe :

Zveza med energijo vpadne svetlobe in vpadno osvetljenostjo površine (inteziteta) :

Za uporabo v računalniški grafiki je BDRF funkcija razdeljena na tri komponente :

 

Zrcalni odboj svetlobe

Bolj kot je površina gladka, večji je prispevek zrcalno odbite svetlobe. Pri zrcalnem odboju svetlobe od površine definiramo smer ozironama vektor odboja svetlobe R s koti :


 

Slika 4.(Zrcalno odbita svetloba - a specular contribution)
 

Usmerjeno razpršena svetloba

Kadar je valovna dolžina vpadne svetlobe približno enaka velikosti neravnin na površini (hrapavost), se odbita svetloba razprši na vse strani. Razpršitev je posledica odboja svetlobe pod različnimi koti, večkratnega odboja na površini in interference med posameznimi odbitimi žarki. Vendar obstaja priviligirana smer, ki se v večini primerov ujema s smerjo zrcalnega odboja svetlobe. V tej smeri je intenziteta odbite svetlobe večja. Smer in velikost vrha je odvisna od hrapavosti površine in kota osvetlitve, pri katrem pride do bleščanja površine.
 

Slika 5.(Usmerjeno razpršena svetloba - a directional diffuse contribution)
 

Idealno razpršena svetloba

Pri idealno razpršeni svetlobi odboja, je svetloba enakomerno porazdeljena po namišljeni polkrogli, ki je postavljena nad opazovano točko.
 

Slika 6.(Idelano razpršena svetloba - an ideal diffuse contribution)


Svetlobni model PHONG

Svetlobni model Phong je le približna aproksimacija dejanskega obnašanja svetlobe pri odboju. Ta svetlobni model ne upošteva dvosmernega obnašanja pri odboju (BDRF funkcija). Kljub pomankljivostim je ta svetlobni model široko uporabljen v računalniški grafiki.

Svetlobni model Phong je linearna kombinacija treh komponent :

Enačba intenzitete idealno razpršene svetlobe (Slika 7.) :
 

Ii je  moč točkastega izvora svetlobe. Theta je kot med normalo površine v opazovani točki in daljico med opazovano točko in izvorom svetlobe. kd je empirični koeficient odvisen od valovne dolžine svetlobe. Zgornjo enačbo lahko zapišemo v vektorski obliki :

Kjer je L vektor luči in N normala površine. Oba vektorja sta enotska (dolžina je 1). Če imamo večje število izvorov svetlobe, se enačba glasi :

Kjer je Ln smerni vektor n-tega svetlobnega izvora do točke na površini.
 

Slika 7.(Določitev intenzitete razpršene svetlobe)
 

Odblesk je funkcija kota omega, ki je kot med smerjo gledanja in smerjo zrcalnega odboja svetlobe (Slika 8.) :


 

Slika 8.(Določitev intenzitete zrcalno odbite svetlobe)
 

Indeks n simulira hrapavost površine. Za popolno ogledalo je indeks n neskončno velik in odbita svetloba je v smeri zrcalnega odboja. Gladko površino ponazorimo z večjim indeksom n, s tem je velikost odbleska manjša. Nasprotno je s hrapavo površino, pri kateri je n majhen in zato velikost odbleska večja. Odblesek je slika izvora svetlobe na površini. Barva zrcalno odbite svetlobe je različna od barve razpršene svetlobe. Predpostavljeno je, da ima zrcalno odbita svetloba barvo izvora svetlobe. V primeru zelene površine in belega izvora svetlobe je barva razpršene svetlobe zelena, barva odbleska pa bela. Delovanje svetlobnega modela Phong temelji le na omega in n, zato ni dvosmernega pojava. Vrednosti kotov (fi,theta) niso v odvisnosti od materiala površine. To je ena od glavnih pomanjkljivosti modela Phong.

Svetlobni model Phong ne upošteva globalne osvetlitve, zato je komponentama razpršene in zrcalno odbite svetlobe dodana še komponenta ambienta. Ker v glavnem za osvetlitev objektov uporabljamo točkovni izvor svetlobe, bi bile površine, ki niso vidne s strani izvora svetlobe, obarvane črno. S tem bi dobili učinek scene v temi, ki je osvetljena z bliskavico. Ambientna komponenta je konstanta, ki delno upošteva globalno osvetlitev.

Če seštejemo vse tri komponente svetlobe (razpršena, zrcalno odbita svetloba in svetloba okolice) dobimo enačbo svetlobenega modela Phong :

V nekaterih primerih je pri lokalnih svetlobnih modelih upoštevana oddaljenost točk na površini od izvora svetlobe. S tem dobimo pogoj, da se spreminja svetlobna intenziteta kot funkcija oddaljenosti površine od izvora svetlobe. Ta pogoj preprečuje, da bi površina enake orientacije (ravnina) in z različno oddaljenostjo od izvora svetlobe, bila osvetljena po celotni površini z enako intenziteto. Za izvore svetlobe smatramo, da so postavljeni na neskončni oddaljenosti od površine. S tem smo dobili svetlobo z vzporednimi žarki, zato ni potrebno upoštevati obliko svetlobnega snopa (stožec). Zaradi te predpostavke uporabimo razdaljo med točko pogleda in površino, ne pa razdaljo med izvorom svetlobe in površino. Enačba svetlobnega modela ima sedaj obliko :


 

Geometrijske poenostavitve

Zapletenost zgornje enačbe in čas izračunavanja lahko zelo zmanjšamo, če vpeljemo nekatere geometrijske poenostaviteve in predpostavke. Izvor svetlobe in točka pogleda sta postavljena v neskončnost, s tem sta vektor smeri pogleda V in vektor smeri osvetlitve L na večini scene konstantna. Vektor smeri zrcalnega odboja svetlobe R je zelo zamudno izračunavati, kjub temu da Phong daje učinkovito metodo za izračun vektorja R. Zaradi tega je bolje uporabiti vektor H, ki ga je prvič vpeljal Blinn (1977). Komponenta zrcalnega odboja postane funkcija (N*H) in ne (R*V). H je enotska normala na hipotetično ravnino, ki je usmerjena točno na sredo med vektorjem osvetlitve L in vektorjem pogleda V.

To je potrebna orientacija površine, da se svetloba odbije v smeri vektorja V. Kot med R in V je dvakrat večji od kota med N in H, kar kompenziramo s spreminjanjem parametra n. Uporaba skalarnega produkta (N*H) namesto (R*V) pri isti vrednosti n, razširi odblesek na večje območje površine.
 

Slika 9.(Definicija vektorja H)
 

Sedaj se enačba svetlobnega modela Phong glasi :

Intenziteta svetlobe je sedaj funkcija samo normale površine N. Če sta vektorja L in V konstantna, potem je konstanten tudi vektor H. S postavitvijo izvora svetlobe v neskončnost pridemo do dveh sklepov. Prvič, ni variranja v barvi osenčenih ravnih površin (zanemarimo efekt faktorja oddaljenosti izvora svetlobe od površine (r+k)), ker je L konstanten in N se ne spreminja po površini. Drugič, oblika odbleska se spreminja.
 

Barva

Za obarvane objekte je najlažji pristop, če odblesek svetlobe obarvamo belo (za izvor bele svetlobe) in kontroliramo barvo objekta s pravilnim nastavljanjem koeficienta razpršitve odbite svetlobe. Za določitev barve izračunamo tri intenzitete svetlobe za vsako komponento barve (rdeča, zelena, modra - RGB).

Tri enačbe združimo v eno samo :

Za zahtevnešo uporabo je tri-barvni pristop mešanja osnovnih barv preveč grob, ker ne da dovolj realnega rezultata.

Povzetek modela PHONG


Izris osenčenih krogel s svetlobnim modelom PHONG

Naloga zahteva prikaz serije osenčenih krogel s svetlobnim modelom Phong pri različnih vrednostih koeficienta širine odbleska n, koeficienta intezitete odbleska Ks in koeficienta razpršitve svetlobe Kd.

Program je napisan v programskem jeziku FORTRAN. V tem programskem jeziku je delo z grafiko zelo težavno, zato je rezultat zapisan v datoteki. Uporabljen je grafični format datoteke, ki omogoča zapis rastrske slike v ASCII formatu (Portable PixMap file format - PPM).
 

Portable PixMap - PPM

Ta grafični format omogoča zapis rastrske slike v ASCII formatu, kar je preprosto izvedljivo v programskem jeziku FORTRAN.

Primer (Majhna rasterska slika velikosti 4x4 točk)

Zapis zgornje rastrske slike velikosti 4x4 točk v PPM formatu (datoteka : primer.ppm) :

P3
 # primer.ppm
 4 4
 255
 200 0   0  255 0   0  255 0   0  255 0 0
   0 0 255  200 0   0  255 0   0  255 0 0
   0 0 255    0 0 255  200 0   0  255 0 0
   0 0 200    0 0 255    0 0 255  200 0 0

Prva vrstica ima magični znak P3, ki je potreben za razpoznavo tipa datoteke. V drugi vrstici je označba 4 točk široke in 4 točk visoke slike, kar je skupaj 16 točk (pikslov). ©tevilo 255 označuje maksimalno vrednost svetlosti v sliki, ki je v razponu od 0 do 255. Za vsako točko se določi trojka števil za rdečo, zeleno in modro barvo (RGB), zato sledi 3*16=48 števil. Črna barva ima vrednost (0 0 0), bela pa (255 255 255). Rastrska slika se začne sestavljati v zgornjem levem kotu v smeri branja. ©tevila so ločena s presledki (prazen prostor). V okolju X-Windows lahko gledamo PPM datoteke s programom XV, v okolju MS-windows pa s programom Paint Shop Pro.
 

Reševanje naloge

Narisati je potrebno serijo dvajsetih krogel osenčenih s svetlobnim modelom PHONG, z variranjem koeficienta širine odbleska n, koeficienta razpršitve odbite svetlobe Kd in koeficienta odbleska Ks.
Na slikah osenčenih krogel parameter n varira vertikalno od vrednosti 5 do 40. Parametra Kd in Ks varirata v horizontalni smeri med vrednostima 0 in 1. Krogle so izrisane v treh barvah (rdeča, zelena in modra).

Izvor svetlobe in opazovalca postavimo na neskončno oddaljenostjo od krogle, tako da sta vektor luči L in vektor pogleda V konstantna za celotno območje slike. S tem je konstanten tudi vektor H. Geometrijski model je pravokotna projekcija (ne upoštevamo realne projekcije). Krogle so postavljene na xy-ravnino. Pogled je v smeri z-osi in zato pravokoten na ravnino v kateri ležijo krogle. Osvetlitev je iz smeri (1,1,1) in je enaka za vse krogle. Odločili smo se za lokalni svetlobni model, ki upošteva oddaljenost luči od točke na površini. Oddaljenost in moč luči je za vse krogle enaka. Za vse krogle je konstantna intenziteta ambientne svetlobe. Radij krogel bomo določili glede na zahtevano velikost risbe.

Ker je pogled prvokoten na xy-ravnino in projekcija pravokotna, lahko koordinate točk na sferah uporabimo za koordinate (indekse) pixel-ov. Računanje bo zato potekalo s celoštevilskimi vrednostmi pixel-ov. Koordinata z se na sliki ne vidi. Zaradi prej omenjenih poenostavitev in predpostavk, je takšen program strogo namemeben. Z njim je mogoč le izris krogel. Varirati je možno parametre svetlobenega modela, velikost risbe, z dodatnim predhodnim računanjem lahko spremenimo smer osvetlitve in število krogel. Sama uporaba programskega jezika FORTRAN ne omogoča hitre uporabe programa zaradi vmesnega zapisovanja PPM datoteke, katere velikost je zelo velika v primerjavi z ostalimi grafičnimi formati (nekaj MB za 800x600 veliko risbo).

Vse konstante izračunamo predhodno tako, da enačba intenzitete svetlobe za posamezno barvo (RGB) ne preseže vrednosti 1. S tem smo posredno normirali vrednosti intenzitete svetlobe na vrednost enako ali manjšo 1.
V prvem koraku določimo velikost risbe v pixel-ih in vse spremenljivke, ki so z njo povezane (radij, koordinate središča krogle). S predhodno definirano tro-dimenzionalno matriko slike zapišemo ozadje risbe. Matrika slike je kvader razdeljen na tri rezine. Vsaka rezina je namenjena zapisovanju svetlosti (med 0 in 255) za posamezno osnovno barvo (RGB). ©irina risbe je enaka številu polj po širini rezine (enako velja za višino). Velikost matrike slike je :

Glavni program deluje tako, da za vsako kroglo posebej določi vrednost vseh pixel-ov. Njihove vrednosti zapišemo v matriko slike. Točke na krogli, katere središče leži v koordinatnem izhodišču, določimo iz pogoja :

z-koordinato določimo iz enačbe za kroglo :

Normalo določimo iz vektorja, ki ga določajo koordinate točke, ki leži na krogli. Potrebno je samo normirati normalni vektor na dolžino 1 :

Sledi izračun skalarnega produkta (L*N) in kontrola, če je točka osvetljena. Točka ni osvetljena, če je skalarni produkt enak ali manjši od nič (kot je večji od 90°) :

Pri izpolnjenemu pogoju osvetljenosti določimo oddaljenost točke od luči :

Izračun skalarnega produkta (N*H) :

Če točka ni osvetljena, potem je vrednost pixel-a enaka intenziteti svetlobe ambienta pomnožena z 255 (Phong.for), v nasprotem primeru določimo intenziteto svetlobe po enačbi :

Vrednost barve pixel-a zapišemo v matriko risbe, pri tem upoštevamo koordinate središča krogle. Ko program opravi vse korake, zapiše datoteko Phong.dat v predpisani obliki. V Explorer-ju datoteko preimenujemo v Phong.ppm in pogledamo z programom Paint Shop Pro.
 

Primer osenčenih krogel s svetlobnim modelom PHONG

Spodnje tabele prikazujejo vrednost parametrov n, Kd in Ks pri posamezni krogli.

Parameter širine odbleska n :
 
 
n
1.Vrsta krogel
5
2.Vrsta krogel
10
3.Vrsta krogel
20
4.Vrsta krogel
40
 
Parameter razpršitve svetlobe Kd in parametr intezitete odbleska Ks :
 
 
1.Stolpec krogel
2.Stolpec krogel
3.Stolpec krogel
4.Stolpec krogel
5.Stolpec krogel
Kd
0.00
0.25
0.50
0.75
1.00
Ks
1.00
0.75
0.50
0.25
0.00
 
Primer osenčenih krogel :


 


Literatura

 

Back