3D vattenanimering Joakim Julin Department of Computer Science Åbo Akademi University, FIN-20520 Åbo, Finland e-mail: jjulin@nojunk.abo.



Relevanta dokument
3 Rörelse och krafter 1

Om antal anpassningsbara parametrar i Murry Salbys ekvation

2 Laboration 2. Positionsmätning

3. Matematisk modellering

Hur simuleras Differential-Algebraiska Ekvationer?

FÖRDJUPNINGS-PM. Nr Räntekostnaders bidrag till KPI-inflationen. Av Marcus Widén

Föreläsning 8. Kap 7,1 7,2

bättre säljprognoser med hjälp av matematiska prognosmodeller!

Följande uttryck används ofta i olika problem som leder till differentialekvationer: Formell beskrivning

System med variabel massa

Realtidsuppdaterad fristation

Diskussion om rörelse på banan (ändras hastigheten, behövs någon kraft för att upprätthålla hastigheten, spelar massan på skytteln någon roll?

Genom att uttrycka y-koordinaten i x ser vi att kurvan är funktionsgrafen till y = x 2. Lektion 2, Flervariabelanalys den 19 januari 2000

Kursens innehåll. Ekonomin på kort sikt: IS-LM modellen. Varumarknaden, penningmarknaden

FREDAGEN DEN 21 AUGUSTI 2015, KL Ansvarig lärare: Helene Lidestam, tfn Salarna besöks ca kl 15.30

Följande uttryck används ofta i olika problem som leder till differentialekvationer: Formell beskrivning

TENTAMENSSKRIVNING ENDIMENSIONELL ANALYS DELKURS B2/A , arctan x x 2 +1

1 Elektromagnetisk induktion

Lösningar till Matematisk analys IV,

Strategiska möjligheter för skogssektorn i Ryssland med fokus på ekonomisk optimering, energi och uthållighet

Föreläsning 19: Fria svängningar I

Teknisk dokumentation

Reglerteknik AK, FRT010

Elektroniska skydd Micrologic 2.0 och 5.0 Lågspänningsutrustning. Användarmanual

Följande uttryck används ofta i olika problem som leder till differentialekvationer: A=kB. A= k (för ett tal k)

FAQ. frequently asked questions

Biomekanik, 5 poäng Kinetik Härledda lagar

Informationsteknologi

Finansiell Statistik (GN, 7,5 hp,, HT 2008) Föreläsning 9. Analys av Tidsserier (LLL kap 18) Tidsserie data

n Ekonomiska kommentarer

Analys och modellering av ljusbåglängdsregleringen i pulsad MIG/MAG-svetsning

Jobbflöden i svensk industri

{ } = F(s). Efter lång tid blir hastigheten lika med mg. SVAR: Föremålets hastighet efter lång tid är mg. Modul 2. y 1

Betalningsbalansen. Tredje kvartalet 2010

Från kap. 25: Man får alltid ett spänningsfall i strömmens riktning i ett motstånd.

Ingen återvändo TioHundra är inne på rätt spår men behöver styrning

Laboration 2. Minsta kvadratproblem

Skillnaden mellan KPI och KPIX

Objects First With Java A Practical Introduction Using BlueJ. 4. Grouping objects. Collections och iterators

Lektion 3 Projektplanering (PP) Fast position Projektplanering. Uppgift PP1.1. Uppgift PP1.2. Uppgift PP2.3. Nivå 1. Nivå 2

Glada barnröster kan bli för höga

Diverse 2(26) Laborationer 4(26)

Om exponentialfunktioner och logaritmer

Upphandlingar inom Sundsvalls kommun

Egenvärden och egenvektorer

KURVOR OCH PÅ PARAMETERFORM KURVOR I R 3. P(t)=(x(t),y(t),z(t)) T=(x (t),y (t),z (t)) r(t)=(x(t),y(t),z(t))

m Animering m Bilder m Grafik m Diskret representation -> kontinuerlig m En interpolerande funktion anvšnds fšr att

Tentamen: Miljö och Matematisk Modellering (MVE345) för TM Åk 3, VÖ13 klockan den 27:e augusti.

Tjänsteprisindex för detektiv- och bevakningstjänster; säkerhetstjänster

Betalningsbalansen. Andra kvartalet 2012

Konsumtion, försiktighetssparande och arbetslöshetsrisker

Laboration 3: Växelström och komponenter

Tunga lyft och lite skäll för den som fixar felen

Ordinära differentialekvationer,

Laboration D158. Sekvenskretsar. Namn: Datum: Kurs:

Modeller och projektioner för dödlighetsintensitet

DIGITALTEKNIK. Laboration D171. Grindar och vippor

KOLPULVER PÅ GAMLA FINGERAVTRYCK FUNGERAR DET?

Pensionsåldern och individens konsumtion och sparande

Om de trigonometriska funktionerna

1. Geometriskt om grafer

Kap a)-d), 4, 7 25, 26, 29, 33, 36, 44, 45, 49, 72, , 5.34, 5.38, 6.28, 8.47, 8.64, 8.94, 9.25, Kap.11ex.14, 11.54

Om exponentialfunktioner och logaritmer

Ha kul på jobbet är också arbetsmiljö

Föreläsning 3: Fler grafalgoritmer. Kortaste vägar mellan alla noder

Exempeltenta 3 SKRIV KLART OCH TYDLIGT! LYCKA TILL!

Truckar och trafik farligt för förare

Mät upp- och urladdning av kondensatorer

Miljörapport Marma Avloppsreningsverk. Söderhamns Kommun

Tentamensskrivning i Matematik IV, 5B1210.

Timmar, kapital och teknologi vad betyder mest? Bilaga till Långtidsutredningen SOU 2008:14

Rörelse. Hastighet. 166 Rörelse Författarna och Zenit AB

Betalningsbalansen. Fjärde kvartalet 2012

BETONGRÖR - EN PRISVÄRD OCH LÅNGSIKTIG LÖSNING

F5: Digital hårdvara. Digitala signaler. Fördelar med digitala system. Digital kontra Analog

Introduktion till Reglertekniken. Styr och Reglerteknik. Vad är Reglerteknik? Vad är Reglerteknik? Vad är Reglerteknik? Önskat värde Börvärde

Skattning av respirationshastighet (R) och syreöverföring (K LA ) i en aktivslamprocess Projektförslag

a) Beräkna arean av triangeln ABC då A= ( 3,2,2), B=(4,3,3) och C=( 5,4,3).

Jämställdhet och ekonomisk tillväxt En studie av kvinnlig sysselsättning och tillväxt i EU-15

LINJÄRA DIFFERENTIALEKVATIONER AV FÖRSTA ORDNINGEN

AMatematiska institutionen avd matematisk statistik

BASiQ. BASiQ. Tryckoberoende elektronisk flödesregulator

Repetition Kraft & Rörelse Heureka Fysik 1: kap. 4, version 2013

Damm och buller när avfall blir el

SIGNALER TILLÄMPAD FYSIK OCH ELEKTRONIK, UMEÅ UNIVERSITET 1

Text: Mikael Simovits & Tomas Forsberg Illustration: Jonas Englund. Stort test: Watchguard Halon Cronlab Symantec Microsoft Cleanmail

ByggeboNytt. Kenth. i hyresgästernas tjänst. Getingplåga Arbetsförmedlingen på plats i Alvarsberg. Nr Byggebo AB, Box 34, Oskarshamn

D-UPPSATS. Prisutvecklingen av järnmalm

Bandpassfilter inte så tydligt, skriv istället:

4.2 Sant: Utfört arbete är lika stort som den energi som omvandlas p.g.a. arbetet. Svar: Sant

Monetära modellers prognosförmåga för den svenska kronans utveckling

Laborationstillfälle 4 Numerisk lösning av ODE

Personlig assistans en billig och effektiv form av valfrihet, egenmakt och integritet

Utveckling av portföljstrategier baserade på svagt kointegrerade finansiella instrument med AdaBoosting. Helena Nilsson

Demodulering av digitalt modulerade signaler

Allmänt om korttidsplanering. Systemplanering Allmänt om korttidsplanering. Allmänt om vattenkraft. Det blir ett optimeringsproblem!

Livförsäkringsmatematik II

Funktionen som inte är en funktion

3 Rörelse och krafter 1

Transkript:

3D vaenanimering Joakim Julin Deparmen of Compuer Science Åbo Akademi Universiy, FIN-20520 Åbo, Finland e-mail: jjulin@nojunk.abo.fi Absrak Denna arikel kommer a presenera e anal olika algorimer för a åsadkomma real-ime animering av vaen på dagens grafikprocessorer. Den beskriver olika meoder a animera vaenyor, hur man räknar u olika ypers reflekioner för vaenyor och hur man kan flya över delar av beräkningarna ill grafikprocessorn. Klassificering ACM Compuing Classificaion Sysem: I.3.2 Picure/Image Generaion I.3.3 Graphics Uiliies I.3.7 Three-Dimensional Graphics and Realism ACM Special Ineres Groups: Compuer Graphics and Ineracive Techniques SIGGRAPH Innehåll

1. Inledning 2. Ljuses opiska egenskaper 2.1 Snell's lag 2.2 Fresnel ekvaioner 3. Olika ypers reflekioner 3.1 Globala reflekioner 3.2 Lokala reflekioner 4. Simulering av yan 4.1 Navier-Sokes basera sysem 4.2 Perlin brus 5 Animering av yan med perlin brus 5.1 Algorim 5.2 Heighmap generering 5.3 Generering av reflekionen 5.4 Rendering med hjälp av verex- och pixelprogram 5.5 Uvidgning av algorimen Appendix A - Bilder Referenser 1. Inledning Tackvare a dagens grafikprocessorers kraf har öka mycke och a man kan programmera

dessa kan man göra mera och mera invecklade operaioner på dessa. Man kan flya delar av beräkningarana för olika algorimer bor från daorns processor och göra dessa på grafikprocessorn i sälle. Förr har man ofa beraka vane som en plan ya med en färdig genererad exur, där man ej kan represenera reflekioner av den dynamiska världen. Med dagens hårdvara kan man göra vaenyorna mera realisiska, genom a.ex. räkna u ljuses bryning och inensie per pixel. Genom a flya operaioner bor från daorns processor kan man använde denna a räkna u mera realisiska simulaioner av vågor på vaenyan. 2. Ljuses opiska egenskaper 2.1 Snell's lag Om man vill a vaenyan har realisiska egenskaper måse man a i beakan hur ljuse beer sig då den går från e medium ill e anna, från e unnare ill e äare då de är fråga om luf och vaen. När ljus räffar vaenyan kommer en del av denna a reflekeras och en del a bryas. Snell's lag [1], n 1 sin(θ 1 ) = n 2 sin(θ 2 ), ger oss relaionen mellan vinklarna θ 1 och θ 2. Vinkel mellan ljussrålen P och ynormalen N är θ 1, som kallas infallsvinkeln och vinkeln mellan Q och ynormalen N är θ 2, och kallas bryningsvinkeln. Då ljussrålen P går från e unnare medium n 1 ill e äare medium n 2 kommer Q a vara närmare ynormalen än P. Vid beräkning av hur ljussrålen brys då den räffar vaenyan kan man anse a n 1 = 1.0 (bryningsindex för luf)och n 2 = 1.33 (bryningsindex för vaen). För exaka beräkningar borde man räkna u bryningsvinkeln för ljussrålen med hänsyn ill ljuses olika våglängder, dvs. för rö ljus borde n 2 = 1.331, för grön ljus n 2 = 1.336 och för blå ljus n 2 = 1.339. Men efersom vid daorgrafik represenerar man färger ofas med 24 biars precision, dvs. 8 biar per färgkanal (röd, grön och blå), blir skillnaderna mellan bryningsvinklarna mycke små och man kan därför approximera n 2 ill 1.33, eller någo anna lämplig värde. [J04] Då man använder Snell's lag vid beräkningar i daorgrafik ve man infallsvinkeln och ynormalen, och är för de mesa inresserad av θ 2. 2.2 Frensel evkaioner När ljussrålen går från e medium med bryningsindex n 1 ill e anna medium med bryningsindex n 2, kommer en del av ljuse a reflekera och en del a bryas. Då man ve

vinkeln mellan ljussrålen och ynormalen och har med hjälp Snell's lag räkna u bryningsvinkeln θ 2 kan man använde dea resula för a räkna u inensieen för dom delarna av ljusrålen som kommer a reflekeras respekive bryas. För a räkna u dea använder man Fresnel ekvaionerna [2], där θ 1 och θ 2 är infallsvinkeln respekive bryningsvinkeln. R 0.5 sin 1 2 sin 1 2 2 an 1 2 an 1 2 2 Resulae R ur Frensel ekvaionen säger hur sor del av ljussrålen, i procen, kommer a reflekeras. Hur sor del av ljuse som kommer a bryas fås ur T = 1 - R. Reflekions vinkeln är den samma som ljussrålens infallsvinkel. För daorgrafikens endamål kan man beräkna Fresnel ermerna i förväg, efersom dessa är endas beroende på vinkeln mellan ljusvekorn och ynormalen, och spara dessa i en i en räka som man sedan läser värdena från vid behov. Om man har illgång ill pixelprogram kan man spara Fresnel ermerna i en en-dimensionell exur, som man sedan kan indexera med hjälp av a räkna u skaläraproduken mellan ljusvekorn och ynormalen. [J04] 3. Olika ypers reflekioner 3.1 Globala reflekioner Reflekioner kan klassificeras i vå olika yper, globala och lokala [J04]. Globala ypens reflekioner är från objek som kan anses vara oändlig lång bora från öga. E bra exempel på globala reflekion är himmelen. Cube maps, som preseneras i [3], är e populär sä a åsadkomma globala reflekioner med dagens hårdvara. En cube map är en kub som besår en exur för varje sida (fig. 3.1), som sedan bildar en 360 graders bild se från kub mipunkens synvinkel. För a läsa e värde ur en cube map använder man en vekor med x, y och z komponener som index ill denna. Denna vekor kan räknas u med hjälp av ynormalen och synvekorn för denna pixel. De värde som man får ur denna operaion är ljuse som reflekeras ill denna punk. Cube maps används ofa för a få in reflekioner från saiska objek, som.ex. berg som är synliga lång bora vid horisonen men kan anses vara silla oavse hur kameran rör på sig. Man kan även använda cube maps för icke-saiska omgivningar genom a genererar cube map exurerna dynamisk. Dea innebär a man genererar en bild av världen se från sex sycken olika håll från reflekionspunken, så a dom resulerade sex bilderna bildar kubens sidor. Denna operaion kräver själv klar mycke mera beräkningar än saiska cube maps, som kan genereras en gång och är sedan konsana under resen av program exekveringen. [3]

3.2 Lokala reflekioner Lokala reflekioner är reflekioner där objeken kan ej olkas vara oändlig lång bora, så som.ex. en bå som kör förbi på 10 meers avsånd. Dessa reflekioner går a åsadkomma med hjälp av cube maps som uppdaeras dynamisk, men dea är mycke resurs krävande efersom alla sex sidor av cube mapen måse uppdaeras då e objek rör på sig. E alernaiv för a åsadkomma lokala reflekioner är olka vaenyan som e plan och spegla världen run denna med hjälp av en reflekionsmaris.[l04] Om man anar a a X och Z axlarna är parallella med mark yan, Y-axeln är uppå och a vaenyans ynormal är [0, 1, 0] och den är på en höjd h ovanför världens XZ-plane, är reflekionmarisen (Mr) så som nedan. Mr 1 0 0 0 0 1 0 2 h 0 0 1 0 0 0 0 1 Den sluliga marisen för operaionen är Mrv = Mk * Ms (*Mo), där Mk är kamera marisen och Mo är marisen som används a ransformera verexerna från objec rymden ill världs rymden. Genom a nu renderera världen normal, se från original synpunken, genom denna reflekionsmarix Ms, är den resulerande bilden så som om hela världen skulle ha speglas run vaenplane. Denna meod anar a vaenyan är en slä plan och är därför ej hel fysikalisk korrek men är en bra approximaion, där resurs kravena är direk sammanbundna med världens komplexie se via kameran i jus denna punk. [L04] Denna meod kräver mindre resurser än a använda dynamiska cube maps efersom den kräver endas en exra rendering pass per frame för a få reflekionerna. Den bilden som man får u genom denna reflekions operaion sparas sedan i en exur som

senare kan projiseras på vaenplane, med en så kallad projecive exuring meod. Projecive exuring är en meod för a projisera en vå dimensionell bild på e re dimensionell objek, man kan änka sig a de är fråga om en diaprojekor som projiserar en bild på en vägg.[5] Projecive exure mapping använder verex koordinaerna som index ill en exur, i sälle för vanliga exurkoordinaer. Meoden ransformera förs verex punke ill clip space med hjälp av view (kamera marisen) och projekions marisen. En clip space koordina c har e värde -1 < c < 1, i x och y rikningen. Men efersom denna koordina kommer a användas som en exurkoordina, som har e värde mellan 0 och 1, måse man ransformera clip space koordinaen genom en så kallad remapping marix (Mre), som kan ses nedan. 0.5 0 0 0.5 Mre 0 0.5 0 0.5 0 0 0.5 0.5 0 0 0 1 Då man muliplicerar en homogen punk (x,y,z,h) med Mre, är effeken den samma som a dividera varje koordina med 2 och addera 0.5, som leder ill a värde som idigare vari mellan -1 och 1 nu är mellan 0 och 1. Den reflekion man åsadkommer via denna meod (exempel på dea kan ses i A.1, under Appendix A) ar ine i beakan vågor på vaenyan. Dessa effeker kan göras senare, ackvare a man spara den speglade bilden i en exur, genom a flya på exurkoordinaerna aningen på verex eller pixel nivå. I följande kapile kommer de a preseneras några olika sä a åsadkomma vågeffeker på vaenyan. 4. Simulering av yan Dom reflekioner i vaenyan man åsadkommer med hjälp av dom idigare beskrivna meoderna resulerar endas i en slä vaenya. För a få denna ya nu a se mera verklighesrogen u måse man skapa vågor på denna på någo sä. För a få vågor på yan måse vane ha en volym. En sjö eller e hav kan represeneras av en så kallad heigh field. Heigh fields används ofa inom daorgrafiken erräng renderering och kan användas för a represenera vaen. En heigh field är en vå dimensionell daasrukur där varje index (x,y) represenerar höjden för denna punk [J04]. Då man använder en heigh field i kombinaion med vaenyor represenerar e index (x,y) i heigh field daasrukuren höjden på vaen pelaren i punken (x,y), man anser a havs- eller sjöbone är en slä ya. Till följande kommer de a preseneras vå olika algorimer för a generera dessa heigh fields. En är mera realisisk meod som använder e Navier-Sokes basera sysem och e anna som använder perlin brus. 4.1 Navier-Sokes basera sysem Navier-Sokes ekvaioner kan användas för a beskriva flöde i e väske sysem. [HO95] beskriver e sä a simulera en kropp av vaen som baserar sig på Navier-Sokes ekvaioner. Denna meod bygger på a dela upp väskekroppen i e anal lika sora kolumner. Väske flöde mellan kolumnerna sker via e sysem av viruella rör, där varje kolumn är ihop kopplad ill alla sina åa grannar via dessa viruella rör. Varje kolumn har e viss saisk

ryck H = h*p*g + p0, dår h är volymen för kolumnen dividera med kolumnens area, p är väskans densie, g graviaionskonsanen och p0 amosfärs rycke som påverkar denna kolumn. Flödes acceleraionen i e rör räknas u på basen av ryck skillnaderna mellan dom ihop kopplade kolumnerna. Flödes acceleraionen från kolumn [i,j] ill [k,l] fås ur: a ij kl pg h ij h kl E ij E kl pl där h i j är höjden på kolumn [i,j], h kl är höjden på kolumn [k,l], E ij är e exern ryck på kolumn [i,j], E kl är e exern ryck på kolumn [k,l], p är väskans densie och l längden på röre. Om man anar a denna acceleraion är konsa under en id, blir flöde i röre mellan kolumn [i,j] och [k,l] följande: Q ij kl Q ij kl ca ij kl och volym förändringen i kolumnen [i,j] V ij kl ij Q ij kl 2 Q ij kl För a bibehålla volymen i hela syseme måse man se ill a ingen kolumn får en negaiv volym, om dea händer vid en kolumn måse man minska på flöde u ur denna kolumn ills dessvolymen hålls posiiv. Man anar också a dom rör som leder u ur syseme, dvs. har bara en kolumn kopplad ill sig, har inge flöde. Genom a nu ändra öka eller minska på rycke E i kolumnen [i,j] kommer väskan a flöda genom dom viruella rörena från kolumn ill kolumn. Med denna meod kan man simulera.ex. hur yan beer sig då en sen kasas i vane. Exempel på dom resulerande heigh fields genererade ur simuleringar gjorda med denna meod kan hias i A.2 och A.3 under Appendix A. Denna meod som preseneras i [HO95] fungerar väl för små kroppar av väska. När kropparna blir sörre ar simuleringen längre efersom för varje idsinervall måse varje kolumn uppdaeras. Man kan dock använda denna meod a simulera mindredelar yan, kombinera med en annan model för resen av yan. [J04] 4.2 Perlin brus E snabbare sä a generera en heigh field är a använda Perlin brus [4]. Perlin brus funkionen är e populär sä a generera procedurella exurer, så ex. som marmor och moln. Perlin brus funkionen kombinerar flera okaver av brus, med olika ampliuder och frekvenser, ill mjuk brus. För a generera Perlin brus behöver man en brus funkion och en inerpolaions funkion. Brus funkionen är i sorsä en slumpals generaor, men den har e viss krav, den måse generera samma resula varje gång för samma inpu. Denna brus funkion ar som inpu e helal och som resula ger den u e reelal, ofas mellan 0 och 1.

Figur 4.2.1 nedanför visar e exempel på oupu från en brus funkion ill vänser och inerpolaion av dea ill högre. För a inerpolera mellan dessa värden som slumpals generaorn genererar för helal kan man använda flera olika inerpolaions funkioner. Den enklase och snabbase algorimen är linjär inerpolaion, men denna funkion ger ine så mjuka kurvor som resula. Den kan vara e bra alernaiv om man genererar sora yor av brus i realid. En bäre inerpolaions funkion är cosinus inerpolaion, den ger mjukare resula men kräver mera beräkningar. Man kan även använda kubisk inerpolaion, men skillnaderna mellan denna och cosinus inerpolaionen är ej sora. Skillnaderna mellan linjär och cosinus inerpolaions funkioner kan ses i bilden nedan. Genom a nu skapa flera okaver med en dimensionell brus och kombinera dessa får man frakal brus. De vanligase säe är a fördubbla frekvensen och minskar ampliuden ill hälfen för följande okaver. Sörre värden för ampliuden ger grovare brus, medan mindre värden ger mjukare brus. Om man nu uvidga Perlin brus funkionen ill vå dimensioner kan man skapa brus mönser, som kan ses i figur 4.2.3, som kan sedan användas som en heigh field. Denna heigh field kan sedan användas för a represenera vaenyan för en sjö eller e hav. Nackdelen med Perlin

brus är a man ej har sor konroll över hur sluliga bruse kommer a se u. Den enda konroll man egenligen har är a ändra på frekvensen och ampliuden. Man kan ej.ex. enkel simulera e senkas i vane, som man kunde göra med de Navier-Sokes baserade syseme som presenerades i 4.1. 5. Animering av yan med hjälp av Perlin brus 5.1 Algorimen Den ill följande presenerade meoden beskriven i [L04] (dels samma som [J04]) för a simulera en vaenya med hjälp av Perlin brus [4]. Algorimen resulerar i en reflekion på vaenyan där effeken av vågor har agis med. Denna algorim kan grov delas i re seg: 1. generering av en heigh field (även kallad heigh map) med hjälp av Perlin brus 2. generering av en reflekionsexuren 3. generering av den sluliga vaenyan med hjälp av reflekionsexuren Vaenyan i denna meod är e plan dela i e rumönser, där varje hörn punk för en rua har e mosvarande värde i heigh mapen. Denna algorim åsadkommer vågeffekerna på verex nivå genom a ändra på exurkoordinaerna för denna verex på basen av verex normalen. Vid beräkningarna anar vi a Y-axeln pekar uppå i koordinasyseme, dvs. upp i vekor form är [0, 1, 0]. 5.2 Generering av heighmap Heighmapen genereras med hjälp av vå dimensionell Perlin brus. Denna sparas som en vå dimensionell räka besående av 8 bis elemen, man kan även använda sörre precision för elemenerna om de krävs. Man kan åsadkomma rörelse för vågorna genom a generera flera heighmaps, där för varje eferföljande heighmap ändras inpuen ill Perlin brus funkionen med e seg,.ex om map1 besår av kolumnerna 0, 1 och 2 då kommer map2 a beså av kolumnerna 1, 2 och en ny kolumn 3, map3 av kolumn 2, 3 och 4 osv. Dea fungerar ackvare a Perlin brus funkionen allid ger samma resula för samma inpu värden. För a kunna åsadkomma vågeffeker på yan måse man ha illgång ill normalerna för varje verex på vaenplane. Normalerna kan räknas u med hjälp flera olika algorimer och daa ur heighmapen. 5.3 Generering av reflekionen Reflekionen genereras enlig meoden för lokala reflekioner beskriven i 3.2 och sedan sparas dea resula i en exur. Dea kräver en exra "rendering pass" för hela världen för a generera reflekionsexuren. När man genererar reflekionen genom a spegla världen run vaenplane kommer den del av geomerin för världen som är egenligen under vaenyan, då man ser på världen ej spegla, a vara ovanför denna. Dessa delar måse kapas bor, som kan göras med hjälp av en så kallad clip plane, om dea ine görs kommer dom a leda ill reflekioner på yan av objek som egenligen ligger under yan.

5.4 Rendering med hjälp av verex- och pixelprogram E verexprogram är e program som körs på grafikprocessorn och som arbear på verex nivå, dvs. den uför maemaiska operaioner på punkerna som beskriver världens geomeri. Pixelprogrammerna arbear på pixel nivå, dvs. varje pixel som finns i den sluliga bilden körs genom denna före den rias u. Efer a man nu har generera reflekionsexuren och har illgång ill verex normalerna kan man med hjälp av denna informaion skapa den sluliga vaenyan. För a få reflekionsexuren på vaenyan använder man en så kallad projecive exuring eknik. Denna meod använder verex punken själv som exurkoordina. Texurkoordinaen T räknas u på följande sä: T.x = V.x + d*n.x T.z = V.z + d*n.z där V är verex punkens posiion, N är normalen för V och d är en konsan som säger hur sark normalen påverkar. Genom a ändra på konsanen d kan man påverka hur sarka vågorna är. T kommer efer denna operaion a vara verex punken flyad en bi i normalens rikning. Efersom projecive exuring meoden använder denna som en exurkoordina leder dea ill a själva exuren som kommer på vaenyan flyas en bi i normalens rikning. När normalerna för varje verex pekar rak upp, dvs. har en vekor form [0, 1, 0], leder de ill a verex punken och exurkoordinaen för denna verex är lika, som mosvarar en vaenyan som är hel silla. 5.5 Uvidgning av algorimen Denna algorim räknar ej med bryningen av vaenyan. En möjlig uvidgning av denna algorim är a a med bryningen som händer på grund av vane och Fresnel effeken. Bryningen kunde hel enkel använda samma meod som reflekion med den skillnaden a i sälle för a skapa en reflekionsexur för objek ovanför yan skapar man en refrkaionsexur för objek som ligger under yan [J04]. En annan uvidgning på denna kunde vara a i sälle för a göra operaionerna på verex nivå kunde man göra dessa på pixel nivå. 6. Sammanfaning Den försa meoden för a generera vågor på vaenyan ger mycke goda resula om man vill simulera.ex. senkas i vane. Den fungerar bra för mindre kroppar av vaen, men då de är frågan om sörre vaen kroppar blir resurkraverna ganska höga efersom hela syseme måse uppdaeras vid varje idsinervall. Den senare meoden ger ej fysikalisk korreka resula men är relaiv enkel och snabb, och ger ändå mycke goda resula. De som är bra med denna meod är a man kan flya över delar av beräkningarna ill grafikprocessorn, och på dea sä har man mera processor kraf för a göra andra saker på själva daorns processor. Denna senare meod fungerar också bra för sörre vaenyor efersom man kan använda många av samma LOD (Level of Deail) ekniker som används för a renderera erränger, som går u på

a minska på dealjnivån ju längre bor från kameran man kommer. Appendix A - Bilder A.1: Exempel på resulae ur meoden för a åsadkomma lokala reflekioner A.2 & A.3: Exempel på heigh fields ur simuleringar gjorda med meoden i 4.1

A.4: Exempel på resula ur meoden i kap. Referenser [HO95] Dynamic simulaion of splashing fluids hp://www.cc.gaech.edu/gvu/animaion/papers/waer.pdf

[J04] Real-ime waer rendering graphics.cs.lh.se/heses/projecs/projgrid/projgrid-lq.pdf [L04] Realisic Naural Effec Rendering: Waer I hp://www.gamedev.ne/columns/hardcore/rnerwaer1/ [1] Snells lag hp://sv.wikipedia.org/wiki/snells_lag [2] Fresnel equaions hp://en.wikipedia.org/wiki/fresnel_equaions [3] OpenGL Cube Map Texuring hp://developer.nvidia.com/objec/cube_map_ogl_uorial.hml [4] Perlin noise hp://freespace.virgin.ne/hugo.elias/models/m_perlin.hm [5] Projecive exure mapping hp://developer.nvidia.com/objec/projecive_texure_mapping.hml