• No results found

Mörkerkörning: Realtidssimulering och visualisering av fordonsbelysning för mörkerkörning i körsimulator

N/A
N/A
Protected

Academic year: 2021

Share "Mörkerkörning: Realtidssimulering och visualisering av fordonsbelysning för mörkerkörning i körsimulator"

Copied!
92
0
0

Loading.... (view fulltext now)

Full text

(1)

orkerk¨

orning

Realtidssimulering och visualisering av fordonsbelysning

or m¨

orkerk¨

orning i k¨

orsimulator

Examensarbete utf¨

ort i Bildkodning

av

Erik H¨

aggmark

LITH-ISY-EX–04/3676–SE

(2)
(3)

Link¨

opings Universitet

orkerk¨

orning

Realtidssimulering och visualisering av fordonsbelysning

or m¨

orkerk¨

orning i k¨

orsimulator

Examensarbete utf¨

ort i Bildkodning

av

Erik H¨

aggmark

Examinator: Ingemar Ragnemalm

Handledare: Mikael Adlers, VTI

LITH-ISY-EX–04/3676–SE

Institutionen f¨

or systemteknik

Link¨

opings universitet, SE-581 83 Link¨

oping, Sweden

(4)
(5)

Avdelning, Institution Division, Department

Institutionen för systemteknik

581 83 LINKÖPING

Datum Date 2004-12-17 Språk

Language Rapporttyp Report category ISBN X Svenska/Swedish

Engelska/English Licentiatavhandling X Examensarbete ISRN LITH-ISY-EX--04/3676--SE

C-uppsats

D-uppsats Serietitel och serienummer Title of series, numbering ISSN Övrig rapport

____

URL för elektronisk version

http://www.ep.liu.se/exjobb/isy/2004/3676/

Titel

Title Mörkerkörning: Realtidssimulering och visualisering av fordonsbelysning för mörkerkörning i körsimulator Nighttime Driving: Real-time Simulation and Visualization of Vehicle Illumination for Nighttime Driving in a Simulator

Författare

Author Erik Häggmark

Sammanfattning

Abstract

To give a realistic impression in a driving simulator for nighttime driving, there are many challenging aspects to consider. One of the most important aspects is the illumination caused by the headlights of the own vehicle. To give a realistic impression there is the need to consider the characteristics of the headlight in use to be able to represent main and dipped beam, but also to represent different models and types of headlights.

Another important aspect is the dazzling effects caused by the light cast by other vehicles upon the driver. These effects are not only important to give a realistic and visually appealing simulation, but also to simulate blinding effects which may affect the drivers ability to perceive the traffic environment to a large degree.

This thesis describes methods to simulate these vital aspects of night-drive simulation in real-time using the capabilities of today's graphics cards.

Nyckelord

Keyword

Datorgrafik, 3D-grafik, simulering, mörkerkörning, körsimulator, fordonsbelysning, bländning Computer graphics, 3D-graphics, simulation, nighttime driving, driving simulator, vehicle lighting, dazzling, shader

(6)
(7)

Abstract

English To give a realistic impression in a driving simulator for nighttime driving, there are many challenging aspects to consider. One of the most important aspects is the illumination caused by the headlights of the own vehicle. To give a realistic impression there is the need to consider the cha-racteristics of the headlight in use to be able to represent main and dipped beam, but also to represent different models and types of headlights. Another important aspect is the dazzling effects caused by the light cast by other vehicles upon the driver. These effects are not only important to give a realistic and visually appealing simulation, but also to simulate blinding effects which may affect the drivers ability to perceive the traffic environment to a large degree.

This thesis describes methods to simulate these vital aspects of night-drive simulation in real-time using the capabilities of today’s graphics cards.

Svenska F¨or att ge ett realistiskt intryck av m¨orkerk¨orning i en k¨orsimulator ¨

ar det mycket som det m˚aste tas h¨ansyn till. En av de viktigaste mo-menten vid simulering av m¨orkerk¨orning ¨ar att belysningen fr˚an det egna fordonet upplevs realistisk. F¨or detta kr¨avs att str˚alkastarnas karakteristik ˚aterspeglas i simuleringen, b˚ade vad g¨aller hel- och halvljus.

En annan viktig del av simulering av m¨orkerk¨orning ¨ar effekterna som medtrafikanternas belysning orsakar f¨oraren. Dessa effekter ¨ar inte bara viktiga f¨or att ge ett tillfredst¨allande visuellt resultat, utan ¨aven f¨or att simulera belysningens p˚averkan p˚a f¨orarens f¨orm˚aga att uppfatta den tra-fiksituation som r˚ader.

Denna rapport beskriver metoder f¨or att i realtid simulera dessa, f¨or m¨orkerk¨orning mycket viktiga, moment med hj¨alp av funktionaliteten som erbjuds av dagens grafikkort.

(8)
(9)

orord

Denna rapport dokumenterar ett examensarbete utf¨ort som en del i civilin-genj¨orsutbildningen Datateknik vid Link¨opings Universitet. Arbetet ¨ar utf¨ort p˚a VTI, Statens v¨ag- och Transportforskningsinstitut i Link¨oping. Ett speciellt tack g˚ar till f¨oljande personer:

Mikael Adlers vid VTI, handledare f¨or examensarbetet. F¨or all hj¨alp, st¨od och alla goda r˚ad.

Ingemar Ragnemalm vid institutionen f¨or systemteknik, Link¨opings univer-sitet, f¨or sina synpunkter och kommentarer.

Fredrik Gr¨ondahl min opponent. F¨or diskussioner och kommentarer. Enheten MFT p˚a VTI f¨or att de tog s˚a v¨al hand om mig.

Tomas Karlsson vid NBB, Nordisk Bilbelysning AB, f¨or tillhandah˚allande av str˚alkastardata.

(10)
(11)

Inneh˚

all

1 Inledning 1 1.1 Bakgrund . . . 1 1.2 Syfte . . . 1 1.3 Oversikt . . . .¨ 2 2 Problembeskrivning 3 2.1 Str˚alkastarplacering . . . 3 2.2 Ljusbilder . . . 3

2.3 H¨ogintensiva ljusk¨allor . . . 4

3 Ljusmodell 6 3.1 Storheter och m˚attenheter f¨or ljus . . . 6

3.2 Belysningstyper och deras egenskaper . . . 8

3.3 F¨arger och material . . . 12

3.4 Retroreflexiva material . . . 13 3.4.1 V¨agskyltar . . . 14 3.4.2 V¨agmarkeringar . . . 15 3.5 Diffraktion . . . 16 3.6 Spridning . . . 18 3.7 Effekter i ¨ogat . . . 19 3.7.1 Diffraktion i ¨ogat . . . 19 3.7.2 Spridning i ¨ogat . . . 21 4 Relaterat arbete 24 4.1 Klassificering av v¨agytor . . . 24

4.2 Simulering av starka ljusk¨allor . . . 24

4.3 Projicering av ljusbilder . . . 25

4.4 K¨orsimulatorer . . . 25

5 Visualisering 27 5.1 Belysning fr˚an det egna fordonet . . . 27

5.1.1 Introduktion . . . 27

5.1.2 Restriktioner . . . 27

(12)

5.1.4 Shaderl¨osningar . . . 34 5.1.5 J¨amf¨orelse . . . 38 5.1.6 Retroreflexiva objekt . . . 39 5.2 Belysning fr˚an medtrafikanter . . . 41 5.2.1 Introduktion . . . 41 5.2.2 Restriktioner . . . 41 5.2.3 Belysningsstyrka . . . 41 5.2.4 Occlusion query . . . 42

5.2.5 Regnb˚agsf¨argad ljusaura . . . 42

5.2.6 Ljusskimmer och ljusfransar . . . 43

5.2.7 Skymda ljusk¨allor . . . 45

5.2.8 Sammanslagning av effekter fr˚an flera ljusk¨allor . . . 46

5.2.9 Ljuseffekterna i sin helhet . . . 47

6 Prestandam¨atningar 49 7 Sammanfattning 52 7.1 Resultat . . . 52 7.2 Slutsatser . . . 55 A Grafiksystemet 60 A.1 Om OpenGL . . . 60

A.1.1 Transformer och matriser . . . 60

A.2 Grafikprocessorn . . . 61

A.2.1 Grafikprocessorns historia . . . 61

A.2.2 Grafikprocessorns steg . . . 62

A.3 Shaders . . . 63

A.3.1 OpenGL Shading Language (OGLSL eller GLSlang) . . . 64

A.3.2 C for Graphics (Cg) . . . 65

(13)

Figurer

2.1 Str˚alkastarnas placering relativt f¨orarens ¨ogon. . . 4

2.2 Isoluxdiagram f¨or ett halvljus (med ben¨aget tillst˚and av Nordisk Bilbelysning AB). . . 5

3.1 Ljusstyrkan I f¨or ett fl¨ode genom en area med rymdvinkel ω. . . 7

3.2 Yta och den projicerade ytan f¨or ber¨akning av luminans. . . 7

3.3 Yta riktad mot ljusk¨allan (v¨anster), och yta vriden fr˚an ljusk¨allan (h¨oger). . . 9

3.4 Vektorer vid ber¨akning av belysning i punkten P. . . 10

3.5 Ljusstr˚alar som tr¨affar ett icke gl¨ansande material. . . 10

3.6 Reflektionsdistributionsfunktion f¨or ett idealt icke gl¨ansande (lam-bertianskt) material. . . 11

3.7 Ljusstr˚alar som tr¨affar ett gl¨ansande material. . . 11

3.8 Reflektionsdistributionsfunktion f¨or ett gl¨ansande material. . . . 12

3.9 F¨argspektrum. . . 13

3.10 Reflektionsdistributionsfunktion f¨or ett retroreflexivt material. . 14

3.11 Reflexfolie f¨or v¨agskyltar baserad p˚a glaskulor. . . 14

3.12 Belysning av v¨agskylt. . . 15

3.13 Belysning av v¨agmarkering. . . 16

3.14 Material f¨or v¨agmarkeringar baserad p˚a glaskulor. . . 16

3.15 Diffraktion p.g.a. skiva med ett h˚al med storlek n¨ara v˚agfrontens v˚agl¨angd. . . 17

3.16 Diffraktion p.g.a. skiva med ett h˚al med storlek st¨orre ¨an v˚agfrontens v˚agl¨angd. . . 17

3.17 Diffraktion p.g.a. skiva med tv˚a identiska h˚al. . . 18

3.18 Ljusets spridning i partikelmoln. . . 19

3.19 Regnb˚agsf¨argade ljusaura fr˚an ljusk¨alla. . . 20

3.20 Ljusfransar som str¨acker sig ut fr˚an en ljusk¨alla. . . 22

3.21 Spridning vid tre delar av ¨ogat. . . 23

3.22 ¨Overstr˚alning fr˚an ljusk¨allan L. . . 23

5.1 Isocandeladiagram f¨or ett helljus. . . 28

5.2 Isocandeladiagram f¨or ett halvljus. . . 28

5.3 Str˚alkastarens frustum. . . 29

(14)

5.5 Projicering av helljustextur p˚a omgivningen. . . 31

5.6 Texturdata f¨or belysningsstyrkans avst˚andsberoende. . . 32

5.7 Sk¨armdump av resultatet efter det f¨orsta renderingspasset. . . . 33

5.8 Sk¨armdump av resultatet efter det andra renderingspasset. . . . 33

5.9 Testapplikation med belysning fr˚an halvljus. . . 34

5.10 Testapplikation med belysning fr˚an helljus. . . 35

5.11 Reflexiviteten som funktion av observationsvinkeln f¨or m¨atdata och approximationen C · cos(x)35000. M¨atv¨arden ¨ar direkt tagna fr˚an Frank och Ewald [14]. . . 40

5.12 Textur f¨or den regnb˚agsf¨argade ljusauran. . . 43

5.13 Textur f¨or ljusskimmer. . . 44

5.14 Textur f¨or ljusfransar. . . 45

7.1 Sk¨armdump med belysning fr˚an helljus. . . 53

7.2 Sk¨armdump med belysning fr˚an halvljus. . . 53

7.3 Sk¨armdump med retroreflexiva skyltar och v¨agmarkeringar. . . . 54

7.4 Sk¨armdump med bl¨andningseffekt orsakad av m¨otande trafik. . . 54

7.5 Sk¨armdump med en bromsande bil. . . 55

7.6 Sk¨armdump med tv˚a icke skymda ljusk¨allor. . . 56

7.7 Sk¨armdump med tv˚a ljusk¨allor varav den ena ¨ar helt skymd och den andra ¨ar delvis skymd. . . 56

7.8 En helhetsbild av simuleringen. . . 57

(15)

Tabeller

3.1 Storheter och m˚attenheter f¨or ljus. . . 8 6.1 Resultat fr˚an prestandam¨atning av shaderl¨osning A, B och C. . . 49 6.2 Resultat fr˚an prestandam¨atning av metodens olika delmoment. . 50 6.3 Resultat fr˚an prestandam¨atning av antalet medtrafikanters p˚averkan

(16)

Kapitel 1

Inledning

1.1

Bakgrund

K¨orsimulatorer har ett brett anv¨andningsomr˚ade. Ett exempel ¨ar studier kring k¨orprestationens p˚averkan av saker som tr¨otthet, droger, buller och vibrationer. Ett annat ¨ar projekt som r¨or milj¨ofr˚agor, tunneldesign, v¨ag- och landskaps-utformning. De kan ocks˚a anv¨andas f¨or att unders¨oka hur den nya tekniken p˚averkar k¨orningen i form av till exempel anv¨andningen av mobiltelefoner, eller utv¨ardering av nya navigationssystem i fordon.

F¨or att g¨ora vetenskapliga studier kring f¨orarbeteende kr¨avs att ett an-tal f¨ors¨okspersoner kan uts¨attas f¨or likv¨ardiga situationer. Detta ¨ar sv˚art att ˚astadkomma i en verklig trafikmilj¨o eftersom v¨ader, ljus och trafik varierar hela tiden. I k¨orsimulatorer kan den trafiksituation man vill studera ˚aterskapas hur m˚anga g˚anger som helst, p˚a ett effektivt, riskfritt och kostnadseffektivt s¨att.

Ett scenario kan inneb¨ara att f¨oraren k¨or p˚a landsbygden, n¨ar ett stort djur pl¨otsligt springer ut framf¨or bilen. Ett annat scenario kan utspela sig i stadsmilj¨o med t¨at trafik, d¨ar bilar ov¨antat korsar v¨agbanan. Ett visst scenario kan ocks˚a ˚aterskapas under olika f¨oruts¨attningar, till exempel f¨or att studera skillnaderna mellan att k¨ora p˚a natten och under dagsljus eller under tidspress och utan tidspress.

1.2

Syfte

F¨or att simulera m¨orkerk¨orning i k¨orsimulatorerna utvecklade av VTI, Statens v¨ag- och transportforskningsinstitut, beskrivs och implementeras i detta arbe-te ett flertal olika metoder f¨or att simulera det egna fordonets belysning av omgivningen i OpenGL. F¨or att f˚a en ¨overblick p˚a vilken metod som ¨ar mest l¨ampad under vissa f¨oruts¨attningar presenteras metodernas f¨or- och nackdelar med avseende p˚a visuell kvalitet och renderingshastighet.

Under simulering av m¨orkerk¨orning ¨ar det ¨aven viktigt att medtrafikanter-nas belysning ger ett realistiskt intryck. D¨arf¨or beskrivs ¨aven en metod f¨or att

(17)

simulera de effekter som medtrafikanternas belysning uts¨atter f¨oraren f¨or.

1.3

Oversikt

¨

H¨ar f¨oljer en beskrivning av rapportens disposition.

Kapitel 2 beskriver problemen som ska l¨osas och element som l¨osningen m˚aste ta h¨ansyn till.

Kapitel 3 f¨orklarar den teori som ligger till grund f¨or den l¨osning som senare presenteras. Detta inkluderar en beskrivning av hur ljus kvantiseras och hanteras inom 3D-grafik, hur ljus samverkar med olika material samt hur en grupp f¨or arbetet relevanta optiska fenomen uppst˚ar.

Kapitel 4 redog¨or vad som tidigare gjorts inom omr˚adet.

Kapitel 5 beskriver l¨osningarna p˚a problemen som presenterats. H¨ar ing˚ar en praktiskt beskrivning av hur belysningen fr˚an det egna fordonet hanteras, och ¨aven hur effekterna fr˚an medtrafikanters fordon simuleras.

Kapitel 6 utreder ber¨akningskostnanden f¨or hela l¨osningen och ger ¨aven en bild av ber¨akningskostnaderna f¨or de tv˚a dell¨osningarna var f¨or sig, d.v.s. ber¨akningskostanden f¨or simuleringen av belysningen fr˚an de egna str˚alkastarna och effekterna av belysningen fr˚an medtrafikanter.

(18)

Kapitel 2

Problembeskrivning

Varje str˚alkastartyp har olika egenskaper och ger d¨armed ifr˚an sig olika ljusbil-der. Att analytiskt beskriva dessa ljusbilder i realtid ¨ar i dag mer eller mindre om¨ojligt. Eftersom m¨ojligheten att simulera olika str˚alkastartyper ¨ar av stort intresse ¨ar det viktigt att ett alternativt angreppss¨att p˚a problemet tas fram och metoder f¨or denna utvecklas.

Olika material reflekterar ljus p˚a olika s¨att. Det ¨ar av stor vikt att objekt som v¨agskyltar och v¨agmarkeringar kan simuleras p˚a ett s˚adant s¨att att de-ras reflexivitet upplevs naturlig. P˚a samma s¨att ska icke reflekterande objekt, som t.ex. en ¨alg vid v¨agkanten absorbera ljus. Detta ¨ar ett m˚aste f¨or att en verklighetstrogen simulering av m¨orkerk¨orning ska vara m¨ojlig.

Under m¨orkerk¨orning spelar medtrafikanternas str˚alkastare en stor roll, spe-ciellt m¨otande trafik. N¨ar f¨oraren i sitt synf¨alt har starka ljusk¨allor p˚averkas upp-fattningsf¨orm˚agan hos f¨oraren beroende p˚a ljusk¨allornas egenskaper. Eftersom dessa effekter i h¨og grad p˚averkar k¨oregenskaperna hos f¨oraren ¨ar det viktigt att dessa simuleras p˚a ett realistiskt s¨att.

2.1

Str˚

alkastarplacering

Str˚alkastarnas placering har stor inverkan p˚a belysningen given fr˚an bilen. F¨or att simulera bilens str˚alkastare p˚a ett ¨overtygande s¨att ¨ar det viktigt att h¨ansyn tas till str˚alkastarnas placering relativt f¨orarens ¨ogon, se Figur 2.1. Dessa m˚att variera n˚agot beroende p˚a f¨orarens m˚att och sittst¨allning.

H ¨ar allts˚a avst˚andet i h¨ojdled mellan f¨orarens ¨ogon och de b˚ada str˚alkastarna, D ¨ar avst˚andet fram˚at i bilens riktning och Bh och Bv ¨ar avst˚andet i sidled till h¨oger respektive v¨anster str˚alkastare.

2.2

Ljusbilder

Ljusk¨allor har olika egenskaper. Att analytiskt beskriva dessa egenskaper ¨ar mycket ber¨akningstungt och ¨ar f¨or m˚anga till¨ampningar on¨odigt. Ett betydligt

(19)

Figur 2.1: Str˚alkastarnas placering relativt f¨orarens ¨ogon.

enklare s¨att att erh˚alla ljusk¨allans egenskaper ¨ar att p˚a n˚agot s¨att m¨ata upp det ljus som en ljusk¨alla ger ifr˚an sig. Goesele m.fl beskriver olika metoder f¨or detta i [16]. En str˚alkastare skulle kunna m¨atas upp genom att helt enkelt rikta str˚alkastaren mot en v¨agg p˚a ett givet avst˚and och d¨arefter m¨ata upp den be-lysning som str˚alkastaren ger. Resultatet av detta kan lagras som ett s˚a kallat isocandeladiagram d¨ar intensiteten fr˚an ljuset lagras f¨or de vinklar som anses intressanta. Ett annat vanligt s¨att att lagra ljusbilden ¨ar ett isoluxdiagram d¨ar illuminansen lagras f¨or ett givet avst˚and fr˚an ljusk¨allan. Ett isoluxdiagram be-skriver allts˚a illuminansen som funktion av avst˚anden i vertikal- och horisontal-led fr˚an str˚alkastark¨aglans centrum p˚a ett specifikt avst˚and fr˚an str˚alkastaren, medan ett isocandeladiagram beskriver intensiteten som funktion av vinklarna i vertikal- och horisontalled. Figur 2.2 ¨ar ett exempel p˚a ett isoluxdiagram.

2.3

ogintensiva ljusk¨

allor

Att simulera h¨ogintensiva ljusk¨allor som t.ex. medtrafikanternas str˚alkastare ¨ar inte trivialt. N¨ar man i verkligheten tittar p˚a en s˚adan ljusk¨alla uppst˚ar vissa effekter i ¨ogat som g¨or att vi upplever ljusk¨allan som v¨aldigt stark och kanske bl¨andande. Om man skulle p˚a vanligt vis simulera ljusk¨allan genom att helt enkelt rita ljusk¨allan s˚a stor som den ¨ar med den maximala intensiteten som monitorn, eller vad som nu anv¨ands f¨or att presentera resultatet, klarar av s˚a skulle den intensitet som monitorn ger inte vara tillr¨acklig f¨or att orsaka de

(20)

effek-Figur 2.2: Isoluxdiagram f¨or ett halvljus (med ben¨aget tillst˚and av Nordisk Bilbelysning AB).

ter som uppst˚ar i ¨ogat n¨ar vi i verkligheten ser en h¨ogintensiv ljusk¨alla. D¨armed skulle inte heller simuleringen av ljusk¨allan ge ett intryck av en stark ljusk¨alla. Eftersom en realistisk simulering av h¨ogintensiva ljusk¨allor ¨ar en v¨asentlig del av simulering av m¨orkerk¨orning ¨ar det viktigt att en metod f¨or att simulera h¨ogintensiva ljusk¨allor med den begr¨ansade representation som monitorer och projektorer erbjuder tas fram och presenteras.

(21)

Kapitel 3

Ljusmodell

Detta kapitel inneh˚aller en genomg˚ang av grundl¨aggande optik och presente-rar den teori som beskriver de effekter som ¨ar v¨asentliga f¨or simulering av m¨orkerk¨orning. Dessutom beskrivs hur belysning vanligen representeras och hanteras inom 3D-grafik.

3.1

Storheter och m˚

attenheter f¨

or ljus

Ljus kan beskrivas p˚a flera olika s¨att. F¨or att beskriva hur mycket ljus som tr¨affar en given yta, vilket kallas ljusstr¨ommen eller ljusfl¨odet, anv¨ands enheten lumen (lm). Detta ¨ar allts˚a ett m˚att p˚a ljuseffekt och kan d¨arf¨or inom vissa omr˚aden m¨atas i watt (W). Ljusfl¨odet betecknas Φ.

Ljusenergi eller ljusm¨angd beskrivs i lumensekunder (lms) och betecknas Q. Det ljusfl¨ode som en ljusk¨alla ger ifr˚an sig i en viss riktning kallas ljusstyrka och betecknas I. Ljusstyrka m¨ats i enheten candela (cd ) och ¨ar allts˚a ett m˚att p˚a ljusfl¨ode per rymdvinkel allts˚a (lm/sr). Se Figur 3.1.

Luminans ¨ar ett m˚att p˚a ljusstyrka betraktad fr˚an en viss position. Om en punkt p˚a en infinitesmal yta betraktas fr˚an en riktning s˚a ¨ar luminansen ljusstyrkan genom arean av projektionen av ytan p˚a ett plan som ¨ar ortogonalt mot riktningen punkten betraktas ifr˚an. Se Figur 3.2. Luminans betecknas L och har enheten candela per kvadratmeter (cd/m2).

Belysningsstyrka eller illuminansen ¨ar ljusfl¨odet per area, d.v.s. ljusfl¨odet som tr¨affar en yta dividerat med ytans area. Belysningsstyrka betecknas E och har enheten lux (lx ).

Om en yta projicerad p˚a en sf¨ar koncentrerad runt en ljusk¨alla har arean A, s˚a kan rymdvinkeln som ytan upptar beskrivas som f¨orh˚allandet mellan arean av den projicerade ytan och sf¨arens area multiplicerat med 4π, enligt Ekvation 3.1.

ω =4π · projicerad area sf arens area = 4πA 4πr2 = A r2 (3.1)

(22)

Figur 3.1: Ljusstyrkan I f¨or ett fl¨ode genom en area med rymdvinkel ω.

(23)

Storhet Beteckning Enhet Ljusfl¨ode Φ lm Ljusm¨angd Q lms Ljusstyrka I cd Luminans L cd/m2 Belysningsstyrka E lx

Tabell 3.1: Storheter och m˚attenheter f¨or ljus.

F = ωI (3.2)

Belysningsstyrkan ¨ar ljusfl¨odet genom arean, dvs: E = F

A (3.3)

Med Ekvation 3.1, Ekvation 3.2 och Ekvation 3.3 kan f¨orh˚allandet mellan ljusfl¨odet och belysningsstyrkan skrivas som:

E = I

r2 (3.4)

Belysningsstyrkan fr˚an en ljusk¨alla med ljusstyrkan I avtar allts˚a med kvadra-ten p˚a avst˚andet fr˚an ljusk¨allan.

F¨or vidare beskrivning av ljus och dess storheter se Andersson [3] samt Bergman och Schaefer [4].

3.2

Belysningstyper och deras egenskaper

Ett vanligt och enkelt s¨att att beskriva belysning inom 3D-grafik ¨ar att dela upp det i tre typer. Dessa ¨ar allm¨ant ljus (eng. ambient), diffust ljus (eng. diffuse) och ˚aterfalland ljus (eng. specular).

Det allm¨anna ljuset representerar ljus som studsat och spridits s˚a mycket att det inte g˚ar att uppfatta fr˚an vilken riktning det ursprungligen kommer ifr˚an. Ett objekt som i en milj¨o ligger i skugga fr˚an de tillg¨angliga ljusk¨allorna g˚ar fortfarande att se eftersom det allm¨anna ljuset fortfarande n˚ar och lyser upp objektet. F¨orutsatt att det allm¨anna ljuset ¨ar tillr¨ackligt starkt. Att ber¨akna hur det allm¨anna ljuset studsat fr˚an yta till yta i realtid ¨ar mycket kr¨avande och ofta on¨odigt. F¨or de flesta till¨ampningar r¨acker det gott att l˚ata det allm¨anna ljuset vara konstant i hela milj¨on, vilket ocks˚a ¨ar den representation som anv¨ands i OpenGL, se Shreiner m.fl. [23].

Det diffusa ljuset motsvarar ljus som kommer fr˚an en specifik riktning, t.ex. solen eller en lampa. Ljuset tr¨affar objekt p˚a en sida, dvs den sida som ¨ar riktad mot ljusk¨allan. Detta ger en belysning som beror p˚a ytans riktning till ljusk¨allan. Om en yta p˚a ett objekt som belyses ¨ar riktad rakt mot ljusk¨allan, dvs ytans normal ¨ar riktad mot ljusk¨allan, s˚a lyses ytan upp maximalt. Om ytans normal

(24)

Figur 3.3: Yta riktad mot ljusk¨allan (v¨anster), och yta vriden fr˚an ljusk¨allan (h¨oger).

d¨aremot ¨ar ortogonal mot ljusk¨allans riktning relativt ytan, lyses inte ytan upp alls av ljusk¨allan. Ljusstyrkan fr˚an det diffusa ljuset beror s˚aledes p˚a f¨orh˚allandet mellan arean p˚a ytan sett fr˚an ljusk¨allan och den egentliga arean, se Figur 3.3. Detta f¨orh˚allande kan beskrivas med hj¨alp av vinkeln α mellan ytans normal och riktningsvektorn fr˚an ytan till ljusk¨allan samt den inkommande ljusstyrkan Id. Den diffusa ljusstyrkan I kan d˚a skrivas enligt Ekvation 3.5.

I = Id· cos(α) (3.5)

Vilket ¨ar ekvivalent med Idmultiplicerat med skal¨arprodukten mellan ytans

normal N och riktningsvektorn L fr˚an ytan till ljusk¨allan (b˚ada normerade) enligt Ekvation 3.6.

I = Id· (N · L) (3.6)

Figur 3.4 beskriver vektorerna N och L n¨armare. Det b¨or observeras att ytor v¨anda bort fr˚an ljusk¨allan f˚ar en negativ ljusstyrka vilket inte ¨ar korrekt. Detta l¨oses genom att ers¨atta negativa v¨arden med noll.

Det ˚aterfallande ljuset representerar den typ av ljus som g¨or att vissa objekt uppfattas som gl¨ansande. Om den reflekterande ytan ¨ar av ett gl¨ansande mate-rial, s¨ag polerat silver, sprids ljuset mycket lite n¨ar det studsar p˚a ytan och en koncentrerad ljusstr˚ale n˚ar betraktaren, vilket illustreras av Figur 3.7 och syns ¨

aven i reflektionsdistributionsfunktionen Figur 3.8. Denna brist p˚a spridning, ger upphov till att ytan uppfattas som gl¨ansande. Om materialet ¨ar av grovt ylletyg d¨aremot hade ljuset vid studs spridits i alla m¨ojliga riktningar vilket kan ses i Figur 3.5 och i reflektionsdistributionsfunktionen Figur 3.6.

De tv˚a vanligaste modellerna f¨or att beskriva det ˚aterfallande ljuset ¨ar Blinns modell och Phongs modell, se Blythe [5]. L˚at N vara ytans normalvektor och H vara vektorn mellan V, riktningsvektorn mot ¨ogat, och L, riktningsvektorn

(25)

Figur 3.4: Vektorer vid ber¨akning av belysning i punkten P.

(26)

Figur 3.6: Reflektionsdistributionsfunktion f¨or ett idealt icke gl¨ansande (lam-bertianskt) material.

(27)

Figur 3.8: Reflektionsdistributionsfunktion f¨or ett gl¨ansande material.

mot ljusk¨allan, se Figur 3.4. L˚at n beskriva hur gl¨ansande ytans material ¨ar. D˚a kan Blinns modell skrivas som Ekvation 3.7. L˚at ¨aven R beteckna ljusets reflek-tionsvektor i ytan. D˚a kan Phongs modell skrivas som Ekvation 3.8. OpenGL anv¨ander Blinns modell.

I = Is· (N · H)n (3.7)

I = Is· (V · R) n

(3.8) Den totala ljusstyrkan som en punkt ger ifr˚an sig kan tillslut skrivas som sum-man av den allm¨anna ljusstyrkan, den diffusa ljusstyrkan och den ˚aterfallande ljusstyrkan enligt Ekvation 3.9.

Itotalt= Iomgivande+ Idif f ust· (N · L) + Iaterf allande· (N · H)n (3.9)

3.3

arger och material

Ljus best˚ar av fotoner. Dessa fotoner r¨or sig inte l¨angs en rak linje utan var och en vibrerar med olika frekvenser under dess framfart. Den frekvens en foton vibrerar med avg¨or dess egenskaper. Ofta klassificeras fotoner med hj¨alp av dess v˚agl¨angd ist¨allet f¨or dess frekvens. Dessa f¨orh˚aller sig enligt Ekvation 3.10.

vaglangd = ljushastighet

f rekvens (3.10)

En foton med v˚agl¨angden 720 nm uppfattas av v˚ara ¨ogon som r¨od, en annan med v˚agl¨angd 610 nm som orange och s˚a vidare, se Figur 3.9. V˚ara ¨ogon upp-fattar dessa f¨arger med hj¨alp av celler som registrerar n¨ar de tr¨affas av fotoner

(28)

Figur 3.9: F¨argspektrum.

av en viss v˚agl¨angd. En normal m¨anniska har tre olika typer av dessa celler. En typ som b¨ast registrerar fotoner med v˚agl¨angd omkring 720 nm (r¨ott ljus), en som registrerar fotoner med v˚agl¨angd omkring 530 nm (gr¨ont ljus) och en som registrerar fotoner med v˚agl¨angd omkring 470 nm (bl˚att ljus). En f¨argblind person har ont av eller saknar n˚agon eller n˚agra av dessa typer av celler.

Eftersom det m¨anskliga ¨ogat bara anv¨ander dessa tre typer av celler r¨acker det att anv¨anda en kombination av r¨ott, gr¨ont och bl˚att f¨or att ˚aterskapa f¨arger. Detta utnyttjas i det s˚a kallade RGB-systemet som ¨ar mycket vanligt inom datorgrafik och ¨ar ocks˚a det som i regel anv¨ands i monitorer och TV-apparater. H¨ar anv¨ands just kombinationer av r¨ott (R), gr¨ont (G) och bl˚att (B). F¨or att t.ex. ˚aterskapa gul f¨arg anv¨ands mycket av den r¨oda komponenten, lika mycket av den gr¨on men inget av den bl˚a.

Olika material ¨ar olika bra p˚a att absorbera fotoner av en viss v˚agl¨angd. Det ¨ar detta som g¨or att olika material f˚ar olika f¨arg. Ett idealt bl˚att material absorberar allt r¨ott och allt gr¨ont ljus, men reflekterar allt bl˚att ljus. Detta in-neb¨ar att om materialet belyses med r¨ott eller gr¨ont ljus, upplevs materialet som svart eftersom allt ljus absorberas, men om det belyses med ljus inneh˚allande bl˚att ljus reflekteras detta ljus och materialet upplevs som bl˚att. Denna ma-teriella egenskap representeras ofta inom datorgrafik med ett trippelv¨arde som representerar materialets f¨orm˚aga att reflektera r¨ott, gr¨ont respektive bl˚att ljus. I OpenGL representeras dessa komponenter i intervallet [0, 1]. Om vi l˚ater materialet m, som reflekterar mr, mg, mb av r¨ott, gr¨ont respektive bl˚att ljus,

tr¨affas av ljuset l, som inneh˚aller lr, lg, lbav r¨ott, gr¨ont respektive bl˚att ljus s˚a

reflekterar materialet mr· lr r¨ott ljus, mg· lg gr¨ont ljus och mb· lb bl˚att ljus i

OpenGL. Allt detta beskrivs ¨aven av Shreiner m.fl. i [23].

3.4

Retroreflexiva material

F¨or att objekt som v¨agmarkeringar och v¨agskyltar ska synas bra ¨aven i m¨orker konstrueras dessa av speciella material. Dessa material har f¨orm˚agan att re-flektera ljus tillbaka i den riktning som ljuset kommer ifr˚an och har d¨armed en reflektionsdistributionsfunktion som liknar Figur 3.10. Under m¨orkerk¨orning f˚ar det effekten att ljuset fr˚an fordonets str˚alkastare reflekteras fr˚an objektet tillbaka till f¨orarens ¨ogon. Detta g¨or att skyltar och v¨agmarkeringar syns bra med endast belysning fr˚an det egna fordonet.

(29)

Figur 3.10: Reflektionsdistributionsfunktion f¨or ett retroreflexivt material.

Figur 3.11: Reflexfolie f¨or v¨agskyltar baserad p˚a glaskulor.

3.4.1

agskyltar

F¨or v¨agskyltar anv¨ands en reflexfolie som vanligen ¨ar baserad p˚a sm˚a glaskulor eller glasprismor. Figur 3.11 visar reflexfolie med glaskulor. Folien best˚ar av en genomskinlig yta som fixerar glaskulorna p˚a specifikt avst˚and fr˚an den bakom-liggande reflexiva ytan. Glaskulorna bryter ljuset n¨ar det kommer in mot den reflexiva ytan och ¨aven n¨ar den sedan reflekteras tillbaka p˚a s˚a s¨att att ljuset skickas tillbaka i samma riktning som det kom ifr˚an.

N¨ar egenskaperna hos reflexfolie f¨or v¨agskyltar utv¨arderas ¨ar det fr¨amst tv˚a vinklar som man fokuserar p˚a. Dessa ¨ar observationsvinkeln α och infallsvinkeln β, se Figur 3.12. Observationsvinkeln ¨ar vinkeln mellan vektorn fr˚an betraktaren till den belysta punkten p˚a skylten och vektorn fr˚an ljusk¨allan till den belysta punkten p˚a skylten. Infallsvinkeln ¨ar vinkeln mellan vektorn fr˚an ljusk¨allan till den belysta punkten p˚a skylten och normalvektorn till ytan den belysta punkten

(30)

Figur 3.12: Belysning av v¨agskylt.

befinner sig p˚a, vanligen normalvektorn till skylten.

Vad som ¨ar karakteristiskt f¨or reflexfolie som anv¨ands i tillverkningen av v¨agskyltar ¨ar att de reflekterar ljuset koncentrerat i den riktning som det ur-sprungligen kom ifr˚an. N¨ar observationsvinkeln α ¨okar minskar det reflekterade ljuset som n˚ar betraktaren mycket drastiskt. Vanligen reflekteras i princip allt ljus tillbaka inom en observationsvinkel p˚a en grad. Detta g¨or i praktiken att mycket ljus reflekteras till f¨oraren som f˚ar l¨att att l¨asa skylten ¨aven i m¨orker. Reflexfolien ¨ar inte k¨anslig f¨or stora ing˚angsvinklar p˚a samma s¨att. Det reflek-terade ljuset avtar visserligen n¨ar infallsvinkeln β ¨okar, men inte lika snabbt. Inom en infallsvinkel p˚a 50 grader reflekteras fortfarande en v¨asentlig del av ljuset tillbaka till betraktaren. En unders¨okning av dessa material presenteras av Frank och Ewald i [14].

3.4.2

agmarkeringar

F¨or att v¨agmarkeringar ska synas bra under m¨orkerk¨orning m˚aste de reflektera det ljus som kommer fr˚an fordonets belysning till f¨orarens ¨ogon. Detta m˚aste g¨oras n¨ar ljuset faller in mot ytan under en stor infallsvinkel. Infallsvinkeln α syftar p˚a vinkeln mellan vektorn fr˚an ljusk¨allan till den belysta ytan och ytans normal, se Figur 3.13.

F¨or att f˚a ljus att reflekteras tillbaka till f¨oraren anv¨ands en vit reflekteran-de massa vari sm˚a glaskulor sprids ut. Glaskulorna ska f¨or optimal reflektion vara till h¨alften nedtryckta i massan, d.v.s. glaskulornas centrum b¨or ligga vid massans yta. N¨ar ljus skickas mot v¨agmarkeringen bryter den ¨ovre delen av glaskulorna ljuset ned mot den i massan begravda delen av glaskulan. N¨ar lju-set sedan tr¨affar massan som glaskulan ¨ar till h¨alften begravd i reflekteras och sprids ljuset. Stora delar av ljuset reflekteras tillbaka mot den ¨ovre delen av glas-kulan vilken i s˚a fall bryter ljuset tillbaka mot den riktning det ursprungligen kom ifr˚an, se Figur 3.14. Detta beskrivs ¨aven i [20] av Lundkvist m.fl.

(31)

Figur 3.13: Belysning av v¨agmarkering.

Figur 3.14: Material f¨or v¨agmarkeringar baserad p˚a glaskulor.

Denna konstruktion g¨or att ljus reflekteras tillbaka mot f¨oraren ¨aven under stora infallsvinklar, vilket g¨or att v¨agmarkeringarna ¨ar synliga under m¨orkerk¨orning med belysning endast fr˚an det egna fordonet.

3.5

Diffraktion

Diffraktion uppst˚ar n¨ar en del av en v˚agfront av n˚agot slag st¨ors av ett hin-der och p˚a grund av detta f¨or¨andras v˚agfrontens fortsatta propagering. N¨ar v˚agfronten n˚ar hindret b¨ojer den sig runt hindret. V˚agfrontens v˚agl¨angd och frekvens bibeh˚alls, men sj¨alva formen b¨ojs beroende p˚a hindrets utformning. Det kanske mest illustrativa och vanligast f¨orekommande exemplet f¨or att be-skriva fenomenet ¨ar en vattentank d¨ar en v˚agfront skickas mot en skiva med ett h˚al i. Se Figur 3.15 och Figur 3.16. N¨ar v˚agfronten n˚ar h˚alet b¨ojer sig v˚agorna runt h˚alets kanter. N¨ar h˚alets bredd ligger n¨ara v˚agfrontens v˚agl¨angd kan h˚alet ses som en punktk¨alla som v˚agorna utbreder sig ifr˚an, se Figur 3.15. N¨ar h˚alet ¨

ar st¨orre och kanterna ¨ar l¨angre ifr˚an varandra kan kanterna ses som tv˚a skilda punktk¨allor som v˚agorna utbreder sig ifr˚an, se Figur 3.16. Det g¨aller allts˚a att ju n¨armare h˚alets bredd ¨ar v˚agfrontens v˚agl¨angd, desto st¨orre blir diffraktionen, d.v.s. desto mer b¨ojs v˚agfronten n¨ar den passerar h˚alet.

(32)

Figur 3.15: Diffraktion p.g.a. skiva med ett h˚al med storlek n¨ara v˚agfrontens v˚agl¨angd.

Figur 3.16: Diffraktion p.g.a. skiva med ett h˚al med storlek st¨orre ¨an v˚agfrontens v˚agl¨angd.

(33)

Figur 3.17: Diffraktion p.g.a. skiva med tv˚a identiska h˚al.

andra ord, de b¨ojda v˚agorna fr˚an de olika k¨allorna samverkar och motverkar varandra omvartannat. Ett exempel som illustrerar detta ¨ar en skiva med flera identiska h˚al p˚a lika avst˚and fr˚an varandra. En s˚adan skiva ¨ar ett exempel p˚a ett diffraktionsgitter. F¨or enkelhetens skull illustrerar Figur 3.17 effekten men med en skiva med endast tv˚a identiska h˚al. H¨ar syns hur v˚agtopparna samverkar i vissa punkter och v˚agdalarna i andra. Det sker ocks˚a att en v˚agtopp och en v˚agdal sammanfaller och tar ut varandra.

En skiva med en m¨angd lika stora h˚al p˚a lika avst˚and fr˚an varandra utg¨or ett diffraktionsgitter vars maxima, dvs d¨ar v˚agtopparnas samverkan, g˚ar att beskriva enligt Ekvation 3.11.

sin (ϕk) =

s (k = 0, 1, 2, ...) (3.11) H¨ar ¨ar ϕk den avb¨ojande vinkeln fr˚an v˚agfrontens ursprungliga riktning, λ

v˚agl¨angden hos fronten och s avst˚andet mellan punkterna i diffraktionsgittret. F¨or vidare beskrivning av diffraktion se Hecht [18], Bergman och Schaefer [4] samt Alonso och Finn [2].

3.6

Spridning

Spridning ¨ar mycket n¨arbesl¨aktat med diffraktion, se Stycke 3.5. Spridning be-skriver precis som diffraktion effekten att en v˚agfront p.g.a. hinder i dess v¨ag avviker fr˚an den ursprungliga f¨ardriktningen. I regel kallas detta fenomen f¨or spridning n¨ar hindret i fr˚aga ¨ar av storleksordning mindre eller i n¨arheten av v˚agfrontens v˚agl¨angd och annars f¨or diffraktion, men det finns undantag.

(34)

Figur 3.18: Ljusets spridning i partikelmoln.

F¨or att beskriva spridning av t.ex. ljus ¨ar det enklast att betrakta ljus i form av ljusstr˚alar och inte som elektromagnetiska v˚agor. Spridning uppst˚ar n¨ar ljusstr˚alar tr¨affar partiklar av n˚agot slag och d¨armed byter riktning. Ett exempel p˚a detta ¨ar n¨ar vi betraktar ett moln av vatten˚anga som tr¨affas av solljus. N¨ar ljusstr˚alarna n˚ar molnet studsar dessa p˚a partiklarna i molnet. Det ljus som till slut n˚ar ¨ogat kan ha studsat flera g˚anger i molnet av vatten˚anga innan det n˚att fram. Se Figur 3.18.

Hecht [18] samt Bergman och Schaefer [4] beskriver spridning mer ing˚aende.

3.7

Effekter i ¨

ogat

3.7.1

Diffraktion i ¨

ogat

N¨ar ¨ogat n˚as av ljus fr˚an en stark ljusk¨alla uppst˚ar vissa effekter i ¨ogat. En av dessa ¨ar den regnb˚agsf¨argade ljusaura (eng. lenticular halo) som uppst˚ar runt en stark ljusk¨alla i omgivande m¨orker. Denna effekt uppst˚ar av diffraktion i ¨ogats lins. Diffraktionen orsakas av de l˚anga radiella fiber som bygger upp linsens yttre.

Fiberstrukturen i linsen p˚aminner mycket om fiberstrukturen i en l¨ok d¨ar fibrerna bygger upp tunna lager. I centrum p˚a linsen ¨ar den mycket klar och p˚averkar d¨armed inte ljuset n¨amnv¨art, men ut˚at kanterna utg¨or lagren ett diff-raktionsgitter. F¨or beskrivning av linsen se Cronley-Dillon [11]. Detta inneb¨ar att n¨ar pupillen ¨ar tillr¨ackligt utvidgad s˚a uppst˚ar diffraktionsfenomen i linsen, se Stycke 3.5. Ljus bryts olika beroende p˚a dess v˚agl¨angd och d¨armed skapas effekten av den regnb˚agsf¨argade ljusauran som kan ses runt starka ljusk¨allor i en m¨ork omgivning. Figur 3.19 illustrerar ljusaurans f¨argsammans¨attning.

Eftersom effekten uppst˚ar i ¨ogat och beror p˚a linsens form och storlek s˚a upptar ljusauran lika stor del av synf¨altet oberoende av var ljuset ¨ar placerat i f¨orh˚allande till ¨ogat. Aurans styrka beror dock p˚a den ljusstyrka som n˚ar ¨ogat.

(35)
(36)

Detta f¨or med sig att en ljusk¨alla som ¨ar placerad l˚angt ifr˚an ¨ogat skapar en ljusaura som upplevs st¨orre, men svagare ¨an den ljusaura som skapas av en ljusk¨alla med samma storlek men placerad n¨armare ¨ogat. Detta beskrivs av Spencer m.fl. i [24].

3.7.2

Spridning i ¨

ogat

N¨ar ¨ogat under m¨orker n˚as av ljus fr˚an starka ljusk¨allor uppst˚ar ¨aven andra effekter. Tv˚a av de mest framtr¨adande effekterna orsakas av spridning (se Styc-ke 3.6) i ¨ogat.

Om ljusk¨allan upptar en liten rymdvinkel i synf¨altet g˚ar det att urskil-ja ljusfransar (eng. ciliary corona) som str¨acker sig ut fr˚an ljusk¨allan, se Fi-gur 3.20. Dessa uppst˚ar p.g.a. fram˚atspridning orsakad av sm˚a densitetsskill-nader i ¨ogonlinsens k¨arna. Ljuset sprids oberoende av v˚agl¨angd, vilket g¨or att ljusfransarna har samma f¨arg som ljusk¨allan. N¨ar en ljusk¨alla tar upp allt st¨orre rymdvinkel i synf¨altet f¨orminskas och suddas ljusfransarna ut till dess att de helt sm¨alter samman med effekterna fr˚an ¨overstr˚alning (beskrivning f¨oljer). Experi-ment har visat att ljusk¨allor som tar upp en st¨orre vinkel ¨an 1/3 grad inte ger n˚agra urskiljbara ljusfransar. Detta f¨orklaras av Spencer m.fl. i [24].

En annan effekt av att ha en stark ljusk¨alla i synf¨altet med omgivande m¨orker ¨

ar ¨overstr˚alning (eng. bloom). ¨Overstr˚alning har den effekten att ¨ogats f¨orm˚aga att uppfatta objekt som befinner sig i n¨arheten av ljusk¨allan f¨ors¨amras och ter sig som det radielt avtagande skimmer som kan ses runt ljusk¨allan. Liksom ljusfransarna uppst˚ar effekten av spridning i ¨ogat. I detta fall orsakas det av spridning fr˚an tre olika delar av ¨ogat. Dessa delar ¨ar hornhinnan, linsen och n¨athinnan, se Figur 3.21. Vad som orsakar att ¨ogat har sv˚arare att uppfat-ta omgivande objekt ¨ar att ljus fr˚an ljusk¨allan avviker fr˚an den ursprungliga riktningen genom spridning och blandar sig med ljuset fr˚an de n¨arliggande ob-jekten. I Figur 3.22 blandas ljus fr˚an ljusk¨allan L som sprids vid hornhinnan och linsen med ljuset fr˚an objektet P. D¨armed adderas en luminans till b˚ade de m¨orka och ljusa delarna av objektet P vilket minskar kontrasten, dvs kvoten mellan de ljusa och m¨orka delarna. Effekten avtar i grova drag med en Gaussisk f¨ordelning.

F¨or b˚ada dessa effekter g¨aller att ljusstyrkan som n˚ar ¨ogat best¨ammer stor-leken p˚a effekten, d.v.s. en stark ljusk¨alla ger l¨angre ljusfransar och ett st¨orre skimmer runt ljusk¨allan. Rymdvinkeln som ljusk¨allan upptar av synf¨altet avg¨or f¨orh˚allandet mellan l¨angden p˚a ljusfransarna och storleken p˚a ljusskimret p˚a s˚a s¨att att en ljusk¨alla som upptar en liten rymdvinkel har l˚anga ljusfransar och litet skimmer, medan en ljusk¨alla som upptar en stor rymdvinkel har sm˚a ljusfransar men stort skimmer. F¨or vidare beskrivning se Spencer m.fl [24].

(37)
(38)

Figur 3.21: Spridning vid tre delar av ¨ogat.

(39)

Kapitel 4

Relaterat arbete

Att i realtid simulera fordonsbelysning f¨or att i k¨orsimulatorer simulera m¨orkerk¨orning ¨

ar ett omr˚ade som ¨ar f¨orh˚allandevis outforskat. Mycket att det arbete som gjorts inom omr˚adet ¨ar inte tillg¨angligt f¨or allm¨anheten. H¨ar f¨oljer en beskrivning av relaterat arbete som dock ¨ar tillg¨angligt.

4.1

Klassificering av v¨

agytor

Nakamae m.fl. beskriver i [21] en ljusmodell f¨or k¨orsimulatorer som koncentrerar sig p˚a effekter av str˚alkastare under olika v¨aglag. Nedfallande nederb¨ord tas inte upp, utan ist¨allet fokuseras det p˚a str˚alkastarnas effekter p˚a olika v˚ata v¨agytor. Med hj¨alp av v¨agdata och nederb¨ordsdata klassificeras v¨agytor med avseende p˚a m¨ojligheten f¨or vattnet att dr¨aneras bort, samlas i p¨olar eller dunsta. Med hj¨alp av en raytracingmetod renderas v¨agytorna sedan olika beroende p˚a ytans klas-sificering. Om t.ex. en v¨agyta ¨ar klassificerad som en vattenp¨ol m˚aste refraktion och reflektion v¨agas in i renderingen.

4.2

Simulering av starka ljusk¨

allor

N¨ar ¨ogat n˚as av starkt ljus fr˚an en ljusk¨alla inom synf¨altet upplevs under vissa f¨orh˚allanden att ljusstr˚ak str¨acker sig ut fr˚an ljusk¨allans centrum i olika rikt-ningar, och att ljusk¨allan omges av en ljusaura.

Detta beror enligt Nakamae m.fl. i regel p˚a att diffraktion uppst˚att n¨ar ljuset passerat ¨ogats ¨ogonfransar respektive pupill. Se Stycke 3.5. Simulering av detta beskriver Nakamae m.fl. i [21]. De b˚ada effekterna behandlas var f¨or sig, d¨ar pupillen hanteras som ett litet h˚al ljuset passerar genom, medan ¨ogonfransarna hanteras som ett diffraktionsgitter. Detta implementeras sedan med hj¨alp av en raytracing metod. Genom att analysera den diffraktion som sker n¨ar ljus passerar ett h˚al med pupillens diameter kan den uppfattade effekten efterliknas p˚a bild. P˚a liknande s¨att analyseras effekten av att ljus passerar ¨ogonfransarna innan det n˚ar n¨athinnan.

(40)

Spencer m.fl. bygger vidare p˚a dessa effekter i [24] men koncentrerar sig till effekterna skapade i sj¨alva ¨ogongloben. H¨ar f¨orklaras djupare hur och varf¨or effekterna uppst˚ar i ¨ogat. Effekterna av de starka ljusk¨allorna delas upp i tv˚a delar. Den ena delen best˚ar av den regnb˚agsf¨argade ljusauran, och de skim-rande ljusfransarna som tycks omge ljusk¨allan. Den andra ¨ar den ¨overstr˚alning som g¨or att skenet fr˚an ljusk¨allan minskar uppfattningsf¨orm˚agan av objekt i ljusk¨allans n¨arhet. Artikeln beskriver ocks˚a effekternas p˚averkan av pupillens storlek, avst˚andet och den rymdvinkel ljusk¨allan upptar av synf¨altet.

Akenine-M¨oller och Haines [1] beskriver ¨aven de fenomenen bakom de ef-fekter starka ljusk¨allor skapar, dock mycket kortfattat. Fokus ligger snarare p˚a effekter skapade i en kameralins snarare ¨an det m¨anskliga ¨ogat. Vidare beskrivs kortfattat hur effekterna kan implementeras genom att kombinera en grupp enk-la texturer riktade mot betraktaren.

4.3

Projicering av ljusbilder

Eftersom varje ljusk¨alla har olika egenskaper och d¨armed producerar olika ljus-bilder ¨ar det f¨or realismen viktigt att kunna ˚aterskapa ljusk¨allans karakteristiska ljusbild. Goesele m.fl. presenterar i [16] en metod f¨or att m¨ata upp ljusbilder p˚a ett effektivt s¨att utan att riskera att artefakt som vikningsdistorsion uppst˚ar. Vidare beskrivs tv˚a olika praktiska tillv¨agag˚angss¨att f¨or att m¨ata upp ljusbil-den. Slutligen beskrivs ocks˚a hur resultatet anv¨ants vid rendering. Den metod som anv¨andes ¨ar dock inte anpassad f¨or rendering i realtid.

Berssenbr¨ugge m.fl. beskriver i [15] hur de anv¨ander ljusbilder i form av tex-turer f¨or att simulera bilstr˚alkastare i en k¨orsimulator. Texturen projiceras av en vertex shader p˚a den omgivande scenen f¨or att simulera str˚alkastarbelysning i m¨orker. Detta system anv¨ands f¨or att p˚a ett snabbt s¨att utv¨ardera str˚alkastarprototyper ˚at tillverkare, vilket snabbar upp utvecklingen och minskar

utvecklingskostna-derna. Det g˚ar tyv¨arr inte att av artikeln utr¨ona p˚a vilket s¨att ljusbildens data anv¨ands i sj¨alva ljusber¨akningarna.

4.4

orsimulatorer

Det finns m˚anga k¨orsimulatorer p˚a olika niv˚aer. Fr˚an enkla simuleringar p˚a en vanlig PC till m˚angmiljonprojekt med r¨orelsesystem och avancerade visua-liseringssystem. Bland de mer avancerade finns ut¨over VTI:s simulatorer Fords simulator VIRTTEX, Hella KG Hueck & Co och universitetet i Paderborns simu-lator Nightdriver samt Renaults Ultimate Driving Simusimu-lator. Renault har till-sammans med Oktal skapat ett kommersiellt mjukvarupaket f¨or k¨orsimulatorer kallat SCANeR II, vilket anv¨ands i ett flertal k¨orsimulatorer, bl.a. Renaults tidigare n¨amnda.

Eftersom dessa simulatorer ¨ar ¨amnade f¨or intern forskning och utveckling eller ¨ar kommersiella produkter ¨ar det sv˚art att f˚a tillg˚ang till beskrivande do-kumentation eller p˚a annat s¨att f˚a en insyn i hur dessa fungerar och vilken

(41)

funk-tionalitet som de tillhandah˚aller. Av den information som dock finns tillg¨anglig att d¨oma s˚a klarar mjukvarupaketet SCANeR II och simulatorn Nightdriver av att simulera m¨orkerk¨orning. SCANeR II klarar ocks˚a av att simulera dimma samt effekter av medtrafikanters str˚alkastare under m¨orkerk¨orning. B˚ada dessa simulatorer anv¨ander ljusbilder, se Stycke 2.2, av n˚agon form f¨or att represente-ra den belysning som ges fr˚an de egna str˚alkastarna, men det ¨ar sv˚art att s¨aga hur dessa sedan anv¨ands. Tyv¨arr ¨ar det ocks˚a sv˚art att s¨aga mycket mer om funktionaliteten hos dessa b˚ada p˚a grund av bristen av tillg¨anlig information.

(42)

Kapitel 5

Visualisering

F¨or att ge ett realistiskt intryck b¨or en simulering av m¨orkerk¨orning ta h¨ansyn till en rad olika aspekter. I detta kapitel beskrivs metoder f¨or att p˚a ett re-alistiskt s¨att simulera belysningen av omgivningen fr˚an f¨orarens egna fordon, hur belysning av objekt av speciella reflexiva material s˚a som v¨agskyltar och v¨agmarkeringar simuleras samt f¨orarens p˚averkan av medtrafikanternas belys-ning.

5.1

Belysning fr˚

an det egna fordonet

5.1.1

Introduktion

F¨or att hitta en bra l¨osning f¨or simulering av belysningen fr˚an det egna fordo-net b˚ade med avseende p˚a renderingshastighet och visuell kvalitet under olika f¨orh˚allanden beskrivs flera olika metoder. Detta g¨or det m¨ojligt att v¨alja den metod som balanserar prestanda mot kvalitet p˚a f¨or den aktuella till¨ampningen l¨ampligaste s¨att.

Metoderna delas upp i tv˚a grupper, d¨ar den ena endast utnyttjar OpenGL:s fixa pipeline, medan den andra utnyttjar den programmerbara pipelinen genom shaders.

5.1.2

Restriktioner

F¨or att ¨oka prestanda inf¨ors begr¨ansningen att str˚alkastarna fr˚an det egna for-donet inte ger ifr˚an sig n˚agra skuggor. Motivieringen ¨ar att skuggorna skulle dels bli mycket ber¨akningskr¨avande, och de skulle ocks˚a ge ett litet visuellt utslag eftersom betraktaren ¨ar placerad n¨ara str˚alkastarna, och d¨armed blir delen av skuggorna som fr˚an f¨orarens placering ¨ar synliga liten.

(43)

Figur 5.1: Isocandeladiagram f¨or ett helljus.

Figur 5.2: Isocandeladiagram f¨or ett halvljus.

5.1.3

Projicerade texturer i den fixa pipelinen

H¨ar presenteras en metod f¨or att simulera belysningen fr˚an det egna fordonet genom att endast anv¨anda OpenGLs fixa pipelinen. Metoden har f¨ordelen att den ¨ar enkel och inte kr¨aver n˚agon funktionalitet ut¨over vad som ing˚ar i OpenGL version 1.4, se Shreiner m.fl. [23]. F¨orsta steget ¨ar att l¨asa in ett isocandeladi-agram, se Stycke 2.2, som en textur i OpenGL. Den resulterande texturen re-presenterar str˚alkastarens ljusstyrka i olika vinklar runt str˚alkastarens riktning, d.v.s. hur ljuset utbreder sig fr˚an str˚alkastaren. Figur 5.1 visar ett exempel p˚a ett isocandeladiagram som beskriver ett helljus utbredning och Figur 5.2 ett halvljus utbredning. De resulterande texturerna kallas h¨armed f¨or utbrednings-texturer.

Det ¨ar viktigt att dessa texturer har en stor f¨argskala s˚a att inte ¨overg˚angen mellan ljusstyrkorna blir blockig. Den interna representationen som anv¨ands i OpenGL ¨arGL LUMINANCE16, vilket ger en f¨argkanal med 16 bitars uppl¨osning om h˚ardvaran och OpenGL-implementationen till˚ater det. P˚a ett Geforce4 Ti4200 erh¨olls endast 8 bitars uppl¨osning, men ett GeForceFX 5900 gav 16 bitars uppl¨osning.

Dessa texturer projiceras sedan fr˚an str˚alkastarna ned p˚a omgivningen. Pro-jiceringen fungerar precis som n¨ar en projektor projicerar bilder p˚a en duk. Detta

(44)

Figur 5.3: Str˚alkastarens frustum.

kan g¨oras med n˚agra f˚a steg i OpenGL. F¨orst aktiveras OpenGL:s automatiska texturkoordinatgenerering. Eftersom texturkoordinaterna ska f¨olja med betrak-tarens riktning g˚ar det inte att anv¨anda geometrins fixerade koordinater. Ist¨allet st¨alls OpenGL in p˚a att generera texturkoordinater i str˚alkastarens koordinat-system, se Figur 5.3. Detta inneb¨ar att f¨orsta texturkoordinaten ber¨aknas som den aktuella punktens avst˚and till str˚alkastarens frustums v¨anstra plan, planet A i Figur 5.3, andra texturkoordinaten som punktens avst˚and till str˚alkastarens frustums nedre plan, planet B i Figur 5.3. En tredje texturkoordinat genereras ¨

aven, vilken tillsammans med de tv˚a f¨orsta koordinaterna beskriver en punkt i tv˚a dimensioner i homogena koordinater. Homogena koordinater beskrivs av Hearn och Baker i [17]. Den tredje koordinaten anv¨ands som en skalfaktor var-med de tv˚a f¨orsta koordinaterna divideras. Denna tredje koordinat genereras p˚a s˚a s¨att att n¨ar de tv˚a f¨orsta koordinaterna divideras med den tredje str¨acks tex-turen beroende p˚a avst˚andet fr˚an str˚alkastaren i djupled. Det ¨ar detta som g¨or att vi f˚ar en projektion av texturen som utbreder sig med avst˚andet i djupled som en pyramid och inte som ett r¨atblock, se Figur 5.3.

Ett s¨att att hitta planen A och B i Figur 5.3 ¨ar att anv¨anda str˚alkastarens projektionsmatris och modelviewmatris. Projektionsmatrisen beskriver str˚alkastarens frustum och modelviewmatrisen beskriver str˚alkastarens rotation och transla-tion, se Shreiner m.fl. [23]. Tillsammans beskriver de str˚alkastarens frustum med dess rotation och translation. Ur projektionsmatrisen och modelviewmatrisen kan planen A’, B’ respektive C’ i Figur 5.4 enkelt plockas ut som matrisrad ett, tv˚a respektive tre. Att ber¨akna texturkoordinaterna som avst˚andet till pla-nen A’ och B’ i Figur 5.4 ger koordinater i intervallet [-1, 1] d˚a intervallet [0, 1] ¨ar det som s¨oks, eftersom det ¨ar det intervall OpenGL anv¨ander f¨or tex-turuppslagning. D¨arf¨or kr¨avs en transformation fr˚an intervallet [-1, 1] till [0,

(45)

1], vilket erh˚alls genom att multiplicera den sammanslagna projektionsmatrisen och modelviewmatrisen med f¨oljande matris:

   0.5 0.0 0.0 0.5 0.0 0.5 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.0 0.0 1.0   

Att uppdatera str˚alkastarens modelviewmatris vid varje transformation som g¨ors kan vara ganska besv¨arande. Ett s¨att att beskriva matrisen ¨ar transfor-mationen fr˚an modellens koordinatsystem till betraktarens koordinatsystem till v¨arldskoordinatsystemet och sedan d¨arifr˚an till str˚alkastarens koordinatsystem. Transformationen fr˚an v¨arldskoordinatsystemet till str˚alkastarens koordinatsy-stem ¨ar enkelt att h˚alla reda p˚a d˚a allt som kr¨avs f¨or att ber¨akna detta ¨ar str˚alkastarens ackumulerade rotation och translation. Transformationen fr˚an be-traktarens koordinatsystem till v¨arldskoordinatsystemet ¨ar samma sak som den inversa transformationen fr˚an v¨arldskoordinatsystemet till betraktarens koordi-natsystem. Detta kan OpenGL hj¨alpa till med.

N¨ar OpenGL instrueras att generera texturkoordinater i betraktarens ko-ordinatsystem(GL EYE LINEAR)multiplicerar OpenGL de angivna planen med inversen av den aktuella modelviewmatrisen. Allt som kr¨avs ¨ar s˚aledes att se till att modelviewmatrisen inneh˚aller transformationen fr˚an v¨arldskoordinatsystemet till betraktarens koordinatsystem d˚a dessa plan anges. Med andra ord ¨ar allt som kr¨avs att koordinatsystemet ej flyttas mellan det att betraktaren placerats och dess att texturplanen definieras. Slutligen beh¨ovs transformationen fr˚an model-lens koordinatsystem till betraktarens koordinatsystem. Detta sk¨oter OpenGL helt automatiskt eftersom alla vertexpositioner multipliceras med den aktuella modelviewmatrisen. Observera att detta g¨ors n¨ar vertexkoordinaten specificeras och inte n¨ar texturplanen definieras. Detta beh¨over och ¨ar vanligen allts˚a inte samma version av modelviewmatrisen som texturplanen multiplicerades med.

Kodlistning B.1 s¨atter upp genereringen av texturkoordinater, s˚a som be-skrivits, i OpenGL.

Figur 5.5 visar hur helljustexturen projiceras p˚a ytan under. Eftersom tex-turen ¨ar av typGL LUMINANCE ¨ar ytan under svart f¨or att texturen ska synas s˚a bra som m¨ojligt. Everitt [12] f¨orklarar projicerad texturmappning vidare.

Metoden har hittills inte tagit h¨ansyn till att belysningsstyrkan given av en intensitet avtar med avst˚andet i kvadrat. Detta kan g¨oras med en endi-mensionell textur d¨ar belysningsstyrkans f¨orh˚allande till avst˚andet lagras, se Figur 5.6. P˚a liknande s¨att som texturkoordinaterna till texturen som beskriver ljusets utbredning genererades automatiskt kan den endimensionella texturens texturkoordinater genereras automatiskt. I det h¨ar fallet ska den genererade texturkoordinaten vara avst˚andet fr˚an ljusk¨allan s˚a att r¨att faktor sl˚as upp i texturen. Ett enkelt s¨att att g¨ora detta ¨ar att l˚ata texturkoordinaten genereras som den aktuella punktens avst˚and till planet C i Figur 5.3. Texturkoordina-ten blir inte korrekt f¨or punkter l˚angt fr˚an str˚alkastark¨aglans centrum eftersom avst˚and endast ber¨aknas i djupled sett fr˚an str˚alkastaren, men ber¨akningen blir

(46)

Figur 5.4: Str˚alkastarens frustums uppsp¨annande plan.

(47)

Figur 5.6: Texturdata f¨or belysningsstyrkans avst˚andsberoende.

enkel och resultatet blir gott nog f¨or denna enklare metod. Denna typ av textur kallas h¨armed avst˚andstextur.

Kodlistning B.2 s¨atter upp texturkoordinatgenerering f¨or den endimensio-nella texturen s˚a som tidigare beskrivits.

F¨or att slutligen s¨atta samman alltsammans renderas scenen tv˚a g˚anger. I f¨orsta passet ritas alla objekt med vanliga texturer och utan skuggning. Det allm¨anna ljuset ¨ar maximalt och ingen p˚averkan av diffust eller ˚aterfallande ljus till˚ats. Detta pass representerar scenen i maximal belysning. Resultatet efter det f¨orsta passet illustreras i Figur 5.7. F¨or att f˚a den korrekt belysta scenen ska allts˚a resultatet skuggas p˚a r¨att st¨allen. Detta g¨ors i det andra passet. Med hj¨alp av multitexturering, se Shreiner m.fl. [23], och flera texturenheter sl˚as den vanliga skuggningen fr˚an OpenGL, given av andra ljusk¨allor (t.ex. solen), sam-man med skuggningen. Resultatet fr˚an andra passet moduleras (komponentvis multiplikation) med resultatet fr˚an det f¨orsta passet. Resultatet efter det andra passet illustreras i Figur 5.8.

Att g¨ora detta f¨or b˚ada str˚alkastarna p˚a bilen i endast tv˚a pass ¨ar m¨ojligt med hj¨alp av en s˚a kallad extension, dvs en ut¨okning av OpenGL som heter

NV texture env combine4, se [8]. Det kr¨avs att grafikkortet har minst fyra

textu-renheter. Kodlistning B.3 f¨orbereder OpenGL f¨or det andra renderingspasset.

leftLight −>setupLighting()binder utbredningstexturen till texturenhet noll och

avst˚andstexturen till texturenhet ett, samt aktiverar texturkoordinatgenerering som tidigare beskrivits f¨or de b˚ada texturenheterna med avseende p˚a v¨anster str˚alkastare. rightLight−>setupLighting() g¨or motsvarande f¨or h¨oger str˚alkastare fast anv¨ander texturenhet tv˚a respektive tre ist¨allet f¨or texturenhet noll och ett.

(48)

Figur 5.7: Sk¨armdump av resultatet efter det f¨orsta renderingspasset.

(49)

Figur 5.9: Testapplikation med belysning fr˚an halvljus.

vilken till˚ater att fyra texturer, A, B, C resp D kombineras enligt A ∗ B + C ∗ D. Om A ¨ar utbredningstexturen och B ¨ar avst˚andstexturen f¨or v¨anster str˚alkastare blir A ∗ B utbredningstexturen A med avtagande belysningsstyrka enligt av-st˚andstexturen B. Med texturkoordinatsgenerering uppsatt som tidigare be-skrivits bildar detta s˚aledes den v¨anstra str˚alkastarens belysning. C ∗ D blir p˚a samma s¨att den h¨ogra str˚alkastarens belysning. A ∗ B + C ∗ D blir d˚a b˚ada str˚alkastarnas belysning. Texturenhet tre tar sedan resultatet (GL PREVIOUS)

och l¨agger till belysningen fr˚an andra ljusk¨allor, dvs resultatet fr˚an OpenGL:s fragmentber¨akningar innan texturering (GL PRIMARY COLOR).

Denna metod implementerades endast i en testapplikation f¨or att utv¨ardera metodens potential. Den visuella kvaliteten ¨ar dock inte tillr¨acklig f¨or att me-toden ska implementeras i sj¨alva simulatorn. Den fr¨amsta bristen ¨ar att be-lysningen ¨ar oberoende av ytans orientering relativt str˚alkastarna. Figur 5.9 visar resultatet i testapplikationen med belysning fr˚an halvljus och Figur 5.10 resultatet med belysning fr˚an helljus.

5.1.4

Shaderl¨

osningar

Den texturbaserade l¨osningen tog ingen h¨ansyn till varken material eller ytans orientering i f¨orh˚allande till str˚alkastaren vid luminansber¨akningen. Den lyste allts˚a upp allt som tr¨affas av k¨aglan p˚a samma s¨att, vilket naturligtvis ¨ar en stor f¨orenkling som ger diskutabelt resultat. Om t.ex. en yta ¨ar riktad rakt mot str˚alkastarna borde den bli starkare belyst ¨an om den ¨ar riktad bort fr˚an str˚alkastarna, som beskrivs i Stycke 3.2. Likas˚a ska en yta som reflekterar myc-ket ljus bli starkare belyst ¨an en yta som absorberar st¨orre delen av det infal-lande ljuset, som beskrivs i Stycke 3.3 Inget av detta tar den texturbaserade l¨osningen h¨ansyn till. Denna f¨orenkling ¨ar med en shader inte n¨odv¨andig utan samma ber¨akningar som utf¨ors vid OpenGL:s egna ljusk¨allor, eller till och med noggrannare, kan g¨oras ¨aven f¨or str˚alkastarna.

(50)

Figur 5.10: Testapplikation med belysning fr˚an helljus.

Den stora f¨ordelen med en shaderl¨osning j¨amf¨ort med den tidigare n¨amnda texturbaserade l¨osningen ¨ar flexibiliteten, se Stycke A.2. Ett exempel p˚a detta ¨

ar att texturer kan kombineras godtyckligt och inte bara enligt de m¨ojligheter som erbjuds av den fixa pipelinen. Det ¨ar med en shader ¨aven m¨ojligt att p˚a ett enkelt s¨att ber¨akna luminansen fr˚an str˚alkastarna p˚a en m¨angd olika s¨att.

S˚avida inte applikationen kr¨aver allt f¨or mycket resurser i form av textu-renheter och liknande, ger denna frihet som shaders inneb¨ar ocks˚a m¨ojligheten att genomf¨ora hela renderingen i ett enda pass. Detta kan inneb¨ara en stor f¨orb¨attring i renderingshastighet.

Shaderl¨osning i OGLSL eller Cg

De tv˚a f¨orsta shaderl¨osningarna bygger mycket p˚a den texturbaserade l¨osningen. Den stora skillnaden fr˚an den texturbaserade l¨osningen ¨ar att luminansen ber¨aknas f¨or str˚alkastarna p˚a samma s¨att som vanliga ljusk¨allor i OpenGL. Utbrednings-texturerna och avst˚andstexturen projiceras p˚a samma s¨att som den texturba-serade l¨osningen. F¨or att j¨amf¨ora Cg och OGLSL gjordes i m¨ojligaste grad tv˚a funktionellt s¨att identiska l¨osningar i de olika shadingspr˚aken.

Eftersom en vertexshader anv¨ands ¨ar det upp till shadern att utf¨ora tex-turkoordinatgenereringen. Ett enkelt s¨att ¨ar att i applikationen ber¨akna he-la transformationsmatrisen och sedan skicka denna till vertexshadern genom en uniform-variabel. Den transformation som ska g¨oras ¨ar allts˚a fr˚an model-lens koordinatsystem, i vilken alla vertexpositioner som anges ¨ar definierade, till str˚alkastarens projicerade koordinatsystem. D¨arefter transformeras koordi-naterna fr˚an intervallet [-1, 1] till [0, 1] precis som tidigare. Den enda skill-naden i det h¨ar fallet j¨amf¨ort med den tidigare l¨osningen blir att OpenGL inte hj¨alper till med transformationen fr˚an betraktarens koordinatsystem till v¨arldskoordinatsystemet. Denna transformation m˚aste allts˚a ber¨aknas. D¨aremot finns fortfarande transformationen fr˚an modellens koordinatsystem till

(51)

betrak-tarens koordinatsystem till hands ¨aven i vertexshadern i form av modelviewma-trisen. Kodlistning B.4 f¨orbereder shadern f¨or rendering.

F¨or ett g¨ora ljusber¨akningarna enkla i shadern skickas ¨aven str˚alkastarnas positioner i betraktarens koordinatsystem med som uniforms. Ut¨over det anges ¨

aven vilka texturer som ska anv¨andas f¨or att sl˚a upp avst˚ands- och utbred-ningsdata. Kodlistning B.5 listar vertexshadern och Kodlistning B.6 listar frag-mentshadern i Cg. Kodlistning B.7 respektive Kodlistning B.8 ¨ar motsvarande shaders i OGLSL.

V¨art att n¨amnas ¨ar att metoden anv¨ander, precis som den texturbaserade metoden, tv˚a pass, d¨ar det f¨orsta ritar scenen ljus och med texturer varefter det andra passet ritar scenen utan texturer och med belysning. D¨arefter moduleras de b˚ada passen samman s˚a att belysta omr˚aden f¨orblir ljusa och icke belysta omr˚aden skuggas. En begr¨ansning med detta uppl¨agg ¨ar att slutresultatet aldrig kan bli ljusare ¨an resultatet fr˚an det f¨orsta passet.

Skillnaden i renderingshastighet mellan versionen som anv¨ander Cg och den som anv¨ander OGLSL var mycket liten. OGLSL uppm¨attes till att vara omkring 4% snabbare i detta fall. Det b¨or dock till¨aggas att Cg tillhandah˚aller en funk-tion f¨or ljusber¨akning (lit) som g¨or n˚agot mer tester f¨or att f¨orhindra felaktig belysning f¨or bort˚atv¨anda normaler ¨an de motsvarande ber¨akningar som ist¨allet anv¨andes i OGLSL. N˚agon skillnad i bildkvalitet har inte noterats metoderna emellan.

Ljusber¨akningarna som g¨ors bygger p˚a samma modell som OpenGL anv¨ander i sin fixa pipeline. I vertexshadern g¨ors st¨orre delen av ljusber¨akningarna, d.v.s. h¨ar ber¨aknas det diffusa och spekul¨ara bidraget med avseende p˚a objektets position och orientering i f¨orh˚allande till ljusk¨allan varefter produkten av ljus-komponenterna och materialen f¨or objekten ber¨aknas f¨or det allm¨anna, diffusa och ˚aterfallande ljuset, se Stycke 3.2. Dessa komponenter summeras sedan, men resultatet beh˚alls f¨or varje ljusk¨alla var f¨or sig tills vidare. Det b¨or noteras att det ˚aterfallande ljuset adderas med de ¨ovriga komponenterna direkt. F¨or scener med starkt bl¨ankande objekt s¨arbehandlas ofta det ˚aterfallande ljuset och dess bidrag adderas d˚a efter de vanliga ljusber¨akningarna och texturuppslagningar-na. Detta anses inte n¨odv¨andigt vid denna till¨ampning vilket ¨ar anledningen till att det ˚aterfallande ljuset behandlas precis som det diffusa och allm¨anna. I vertexshadern ber¨aknas ocks˚a den aktuella vertexens position i str˚alkastarnas koordinatsystem genom de transformationsmatriser som skickats till shadern. Vertexens avst˚and till ljusk¨allan ber¨aknas ¨aven.

De i vertexshadern ber¨aknade v¨ardena interpoleras s˚a att v¨arden f¨or det aktuella fragmentet som behandlas i fragmentshadern finns till hands, se Styc-ke A.3. I fragmentshadern anv¨ands de transformerade vertexkoordinaterna f¨or att g¨ora texturuppslagningar i utbredningstexturerna. Resultaten av texturupp-slagningarna representerar str˚alkastarnas intensiteter i riktning mot det aktuella fragmentet. Fragmentets avst˚and till str˚alkastarna som ber¨aknades i vertexsha-dern anv¨ands f¨or att g¨ora texturuppslagningar i avst˚andstexturen. D¨arefter ber¨aknas ett slutligt ljusv¨arde f¨or vardera str˚alkastare som produkten av v¨ardena fr˚an de tv˚a texturerna samt ljusber¨akningen fr˚an vertexshadern. De b˚ada str˚alkastarnas ljusv¨arden adderas sedan ihop med ljusber¨akningen f¨or ¨ovriga ljusk¨allor.

(52)

Ett renderingspass (Shaderl¨osning A)

Steget fr˚an metoden i Stycke 5.1.4 ¨ar inte l˚angt. Om begr¨ansningen att endast en textur anv¨ands f¨or rendering av den vanliga scenen inf¨ors, d.v.s. ingen mul-titexturering anv¨ands, s˚a ¨ar det enda som kr¨avs f¨or att rendera allting i ett enda pass att en texturuppslagning till g¨ors i fragmentshadern vars resultat multipli-ceras med resultatet fr˚an ljusber¨akningarna. De texturkoordinater som anv¨ands f¨or denna texturuppslagning ¨ar de texturkoordinater som vid vanlig texturering anges till OpenGL i applikationen, se Stycke A.3. OpenGL skickar sedan dessa vidare till vertexshadern som i sin tur skickar dessa vidare till fragmenshadern som g¨or texturuppslagningen.

P.g.a. begr¨ansningar i h˚ardvara blir det lite besv¨ar om fler ¨an en textur beh¨ovs vid renderingen av den vanliga scenen. Ett s¨att att till˚ata att flera tex-turer anv¨ands p˚a vissa objekt ¨ar att v¨axla mellan olika shaders, d¨ar varje shader ¨

ar l¨ampad f¨or ett visst antal texturer. Det finns dock begr¨ansningen att sj¨alva shadern beh¨over ett visst antal texturer f¨or sina str˚alkastarber¨akningar. Det b¨or observeras att texturuppslagningar kostar tid och kan i korta fragmentsha-ders vara den stora flaskhalsen. Med b˚ade prestanda och bekv¨amlighet i ˚atanke anv¨ands bara en textur i den vanliga scenen.

En av nackdelarna med att rendera f¨orst scenen obelyst och sedan i ett andra pass tills¨atta belysningen enligt metoden i Stycke 5.1.4 ¨ar att ingen punkt kan bli ljusare ¨an det f¨orsta renderingspasset. Detta problem l¨oses i denna metod genom att inf¨ora en skalfaktor i form av en uniform variabel, se Stycke A.3. Den-na skalfaktor s¨atts i applikationen och motsvarar en skalning av str˚alkastarnas ljusstyrka. Ju st¨orre denna variabel s¨atts till desto starkare lyser str˚alkastarna upp omgivningen.

F¨orenklad ljusber¨akning (Shaderl¨osning B)

Metoden i Stycke 5.1.4 gav ett bra resultat med avseende p˚a visuell kvalitet. Metodens effektivitet kan d¨aremot diskuteras. Det kan ifr˚agas¨attas om det ¨ar f¨orsvarbart att g¨ora ljusber¨akningarna f¨or tv˚a str˚alkastare som sitter s˚a n¨ara varandra var f¨or sig. Denna metod g¨or vissa f¨orenklingar f¨or att ¨oka renderings-hastigheten.

F¨orst och fr¨amst g¨ors ljusber¨akningarna i vertexshadern f¨or endast en str˚alkastare som i ber¨akningarna befinner sig mellan de b˚ada ursprungliga str˚alkastarna. I fragmentshadern anv¨ands ocks˚a denna position f¨or att ber¨akna avst˚andet och d¨armed ljusets avtagande till det aktuella fragmentet. Detta betyder att endast en texturuppslagning beh¨over g¨oras i avst˚andstexturen. Med dessa f¨orenklingar ¨

okade prestandan utan att n˚agra f¨ors¨amringar av den visuella kvaliteten kunde urskiljas. Koden f¨or vertex- och fragmentshader listas i Kodlistning B.9 respek-tive Kodlistning B.10.

Sammanslagna str˚alkastare (Shaderl¨osning C)

F¨or att ¨oka prestandan ytterligare gjordes f¨ors¨ok att minska antalet texturupp-slagningar genom att sl˚a samman utbredningstexturerna f¨or de b˚ada str˚alkastarna.

(53)

Detta ¨ar ingen trivial uppgift, fr¨amst eftersom de b˚ada str˚alkastark¨aglorna utg˚ar fr˚an tv˚a skilda punkter och sedan i och med att avst˚andet ¨okar s˚a utbreder sig ljuset. Detta g¨or att ljusbilderna n¨armar sig varandra allt mer ju l¨angre ifr˚an str˚alkastarna man befinner sig. Sammanslaget f˚as allts˚a olika ljusbilder p˚a olika avst˚and fr˚an str˚alkastarna.

Det f¨orsta f¨ors¨oket anv¨ander sig av en 3D-textur f¨or att representera de sammanslagna utbredningstexturerna p˚a olika avst˚and fr˚an str˚alkastarna. Detta inneb¨ar att de b˚ada texturuppslagningarna i utbredningstexturen kan ers¨attas av en texturuppslagning i en 3D-textur. Tyv¨arr visade det sig snabbt att denna metod inte gav n˚agon ¨okning i renderinghastighet utan snarare en f¨ors¨amring. Detta f¨orklaras fr¨amst av att h˚ardvaran inte i f¨orsta hand ¨ar anpassad f¨or 3D-texturer vilket troligen lett till att en 3D-textur mer eller mindre inneb¨ar tv˚a texturuppslagningar i de tv˚a n¨armsta 2D-skivorna i 3D-texturen och d¨arefter en interpolation mellan dessa tv˚a v¨arden.

Efter en analysering av ljusbilden fr˚an de b˚ada str˚alkastarna p˚a olika avst˚and fr˚an str˚alkastarna och p˚a resultatet fr˚an metoden i Stycke 5.1.4 g˚ar det att notera tv˚a saker. Den f¨orsta ¨ar att efter bara n˚agra meter har ljusk¨aglorna n¨armat sig varandra s˚a mycket att det d¨arefter ¨ar sv˚art att se n˚agon st¨orre f¨or¨andring av ljusbilden. N˚agonstans mellan 10 och 15 meter fram ¨ar ljusbilderna ganska lika varandra, och efter 20 meter ¨ar det sv˚art att se skillnad ¨aven i ett kurvdiagram. Den andra saken ¨ar att den mest kritiska delen av belysningen, i alla fall med h¨ansyn till k¨anslan av att tv˚a str˚alkastare anv¨ands, ¨ar belysningen av v¨agbanan fr˚an halvljuset. Det ¨ar v¨agbanan som oftast belyses n¨ara nog f¨or att det ska g˚a att urskilja tv˚a str˚alkastark¨aglor, samt best˚ar av en plan och stor nog yta f¨or att ljusbildens m¨onster ska g˚a att urskilja. Denna belysning sker p.g.a. av str˚alkastarnas lutning n˚agra meter fram.

Dessa noteringar leder till att med ett v¨al valt avst˚and borde det g˚a att ap-proximera de b˚ada str˚alkastarnas ljusbild med en enda sammanslagen 2D-textur med relativt bra visuellt resultat. Ljusber¨akningarna i denna metod anv¨ander allts˚a bara en texturuppslagning i en sammanslagen utbredningstextur som ¨ar skapad f¨or ett l¨ampligt valt avst˚and fr˚an str˚alkastarna. Dessutom ber¨aknas lju-sets avtagande i fragmentshadern ist¨allet f¨or att sl˚a upp dess avtagande i en 1D-textur f¨or att minska antalet texturuppslagningar ytterligare. Med dessa f¨orenklingar kvarst˚ar totalt tv˚a texturuppslagningar.

5.1.5

amf¨

orelse

L¨osningen som bara anv¨ande den fixa pipelinen var den med avseende p˚a pre-standa b¨asta l¨osningen, men ocks˚a den l¨osning med s¨amst visuell kvalitet. Ef-tersom ingen h¨ansyn togs till den upplysta ytans material eller orientering re-lativt ljusk¨allan blir belysningen stel och livl¨os.

De shaderbaserade l¨osningarna gav mycket h¨ogre visuell kvalitet p.g.a. att de kan ta h¨ansyn till just material och ytornas orientering realtivt ljusk¨allan. De ber¨akningar som g¨ors kostar ocks˚a i form av renderingstid, vilket g¨or opti-meringar och f¨orenklingar attraktiva.

References

Related documents

Eftersom elcertifikat inte kommer att tilldelas efter 2021 innebär detta dock inte att ytterligare via elcertifikatsystemet subventionerad elproduktion tillförs kraftsystemet

I dagsläget är priset på elcertifikat väldigt låga och om priserna på elcertifikat blir varaktigt låga och närmar sig administrationskostnaderna anser branschföreningen Svensk

Dock anser Chalmers att det inte bara är uppfyllandet av målet för elcertifikatsystemet som ska beaktas vid ett stopp utan även balansen mellan tillgång och efterfrågan av

Missa inte vårt politiska nyhetsbrev som varje vecka sammanfattar de viktigaste nyheterna om företagspolitik. Anmäl

Till följd av en miss i hanteringen uppmärksammades igår att Havs- och vattenmyndigheten inte inkommit med något remissvar på Promemorian Elcertifikat stoppregel och

Adress 103 85 Stockholm Besbksadress Ringviigen 100 Tele/on 08-7001600 konkurrensverket@kkv.se.

Om så blir fallet bör systemet avslutas i förtid med besparande av ytterligare administrativa kostnader för både staten, företagen och konsumenterna. Stockholm den 8

Denna utsl¨appta v¨atgas skulle kunna anv¨andas till att driva br¨anslecellsbilar, vilket eventuellt skulle kunna minska utsl¨appen fr˚ an transportindustrin utan att n˚ agon