Strålföljning: Bildpunkt till värld 1(1) Strålföljning: Skärning stråle och polygon 1(1)

Relevanta dokument
Parametriska kurvor: Parametriska ytor

Kort introduktion till POV-Ray, del 5

TATM79: Föreläsning 5 Trigonometri

Kort introduktion till POV-Ray, del 1

Figur 5.1. En triangel där nedre högra hörnet har en rät vinkel (90 ).

Kort introduktion till POV-Ray, del 3

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation

Exempelsamling :: Vektorintro V0.95

Kurvor och ytor. Gustav Taxén

Ö D W & Ö Sida 1 (5) OBS! Figuren är bara principiell och beskriver inte alla rördetaljerna.

Vektorer En vektor anger en riktning i rummet (eller planet) och en längd (belopp). Vektorer brukar ritas som pilar, Vektoraddition

Bestäm den sida som är markerad med x.

Rotation Rotation 187

Svar och arbeta vidare med Cadetgy 2008

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Teori- och räkneuppgifter

1 av 9. vara en icke-nollvektor på linjen L och O en punkt på linjen. Då definierar punkten O och vektorn e ett koordinataxel.

LEDNINGAR TILL PROBLEM I KAPITEL 2 OBS! En fullständig lösning måste innehålla en figur!

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Extramaterial till Matematik Y

Undersökande arbetssätt i matematik 1 och 2

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Vektorgeometri för gymnasister

Säkerhetsavstånd i bilköer Rätt hastighet (och rätt förare) räddar liv!

Addition av hastigheter

Explorativ övning euklidisk geometri

Kurvlängd och geometri på en sfärisk yta

2+t = 4+s t = 2+s 2 t = s

4-8 Cirklar. Inledning

Arbetsblad 2:1. 1 a) Figuren ska vikas till en kub. Vilken av kuberna blir det? 2 Vilka av figurerna kan du vika till en kub?

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Extramaterial till Matematik Y

FUKTÄNDRINGAR. Lars-Olof Nilsson. En kvalitativ metod att skriva fukthistoria och förutsäga fuktförändringar i oventilerade konstruktionsdelar

Dagens ämnen. Linjära ekvationssystem: Successiv elimination Vektorer Definitionen Grundläggande räkneoperationer Bas och koordinater Ortsvektorer

Numerisk Analys, MMG410. Lecture 12. 1/24

Integraler av vektorfält Mats Persson

Om ellipsen och hyperbelns optiska egenskaper

LABORATION 1 AVBILDNING OCH FÖRSTORING

TANA17 Matematiska beräkningar med Matlab

Explorativ övning euklidisk geometri

x ( f u 2y + f v 2x) xy = 24 och C = f

Läsanvisningar till kapitel 4 i Naturlig matematik

Interpolation Modellfunktioner som satisfierar givna punkter

Vektorgeometri för gymnasister

Där a = (1, 2,0), b = (1, 1,2) och c = (0,3, 1) Problem 10. Vilket är det enda värdet hos x för vilket det finns a och b så att

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht Block 5, översikt

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Linjen P Q tangerar cirkeln i P och enligt en sats i geometrin är OP vinkelrät. tan u = OP. tan(180 v) = RS. cos v = sin v = tan v, tan v = RS.

Tentamen i mekanik TFYA kl. 8-13

MVE365, Geometriproblem

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

Massa, rörelsemängd och energi inom relativitetsteorin

Samlad effektbedömning av förslag till nationell plan och länsplaner för transportsystemet

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

Om plana och planära grafer

kan vi uttrycka med a, b och c. Avsnitt 2, Vektorer SA + AB = SB AB = SB SA = b a, Vi ritar först en figur av hur pyramiden måste se ut.

i=1 β i a i. (Rudolf Tabbe.) i=1 b i a i n

Polygoner. Trianglar på tre sätt

Figur 1: Figur 3.12 och 3.18 i Optics. Teckenkonventionen: ljus in från vänster, sträcka i ljusets riktning = positiv

EXPERIMENTELLT PROBLEM 2 DUBBELBRYTNING HOS GLIMMER

Laboration 1: Figurer i hierarki

Enzymkinetik. - En minskning i reaktantkoncentrationen per tidsenhet (v = - A/ t)

Linjer och plan (lösningar)

LotusLive. LotusLive Engage och LotusLive Connections Användarhandbok

Hur påverkar rymden och tiden varandra vid relativ rörelse?

Veckoblad 1, Linjär algebra IT, VT2010

Ellipsen. 1. Apollonius och ellipsen som kägelsnitt.

Kvalificeringstävling den 30 september 2008

2. Strömförstärkare: Både insignal och utsignal är strömmar. Förstärkarens inresistans

TATA44 ösningar till tentamen 13/01/ ) Paraboloiden z = 2 x 2 y 2 skär konen z = x 2 + y 2 då x 2 + y 2 = 2 x 2 y 2. Med

Föreläsning 3: Radiometri och fotometri

Banach-Tarskis paradox

Föreläsning 11: Beräkningsgeometri

Kompendium om. Mats Neymark

MÄTNING AV ELEKTRISKA STORHETER

Teckenkonventionen: ljus in från vänster, ljusets riktning = positiv

Figur 1: Figur 3.12 och 3.18 i Optics. Teckenkonventionen: ljus in från vänster, sträcka i ljusets riktning = positiv

Att räkna med mellanbilder genom ett system med många linser och gränsytor blir krångligt. Vi vill kunna avbilda genom alla ytor direkt.

TAIU07 Matematiska beräkningar med Matlab

Vågfysik. Vilka typer av vågor finns det? Fortskridande vågor. Mekaniska vågor Elektromagnetiska vågor Materievågor

Kurs: Datorstödd konstruktion fortsättningskurs, V15-3, TM051B. Provmoment: Tentamen 2,5 högskolepoäng. Personnummer:.. (Ifylles av student)

Tentamen i mekanik TFYA kl

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

TSBB31. En bild är en 2D signal. Exempel på färginnehåll i bilder p. 4. För en digital bild gäller. vitt. Fig. 1.1

FFM232, Klassisk fysik och vektorfält - Veckans tal

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Om plana och planära grafer

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Föreläsning 9-10 (kap i Optics)

Parabeln och vad man kan ha den till

Att verifiera Biot-Savarts lag för en platt spole samt att bestämma det jordmagnetiska fältets horisontalkomposant

Spiralkurvor på klot och Jacobis elliptiska funktioner

Tentamen SF1626, Analys i flera variabler, Svar och lösningsförslag. 2. en punkt på randkurvan förutom hörnen, eller

9. Magnetisk energi Magnetisk energi för en isolerad krets

Integraler av vektorfalt. Exempel: En partikel ror sig langs en kurva r( ) under inverkan av en kraft F(r). Vi vill

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

23 Konservativa fält i R 3 och rotation

Ett modelleringsprogram Blender

Integranden blir. Flödet ges alltså av = 3

Transkript:

Strålföljning: Bildpunkt till ärld () Med bildens beteckningar får i (för enkelhets skull antas att fönstret är kadratiskt och att synkoten är ) y y A rad A z N att en bildpunkt (kol,rad) motsarar i ykoordinatsystemet P = (x,y,z ) T, där Objekt Stråle Proj.plan -A -A A x = A(- + 2*kol/H), y = A(- + 2*rad/H), z = -N Uttryckt i ärldskoordinater blir punkten P w = P 0 Nz ˆ + x xˆ + y yˆ där P 0 är ögats placering i ärldskoordinatsystemet och xˆ etc aser de normerade ykoordinataxlarna uttryckta i ärldskoordinater (se Från ärld till skärm ). x HxH Fönstret kol Strålföljning: Skärning stråle och polygon () En plan polygon med hörn V,..., V N är gien. Vi ill eta om strålen med utgångspunkt i punkten S och riktningen D träffar polygonen. Vi kan som anligt lätt bestämma ekationen F(x,y,z)=Ax+By+Cz+D=0 för det plan i ilket polygonen ligger. Vi börjar med att leta efter eentuella skärningar mellan strålen och detta plan. I figurens fall skär båda strålarna planet, men bara den understa skär polygonen. Vi får ekationerna S Q = S + td F( Q) = 0 P=S+tD och efter insättning a den första i den andra AS + BS 2 + CS 3 + D t = ------------------------------------------------------- ( AD + BD 2 + CD 3 ) Q Som förut accepteras bara ärden t>0. Återstår sedan att kolla att punkten erkligen hamnat inom polygonen. Vi tar upp detta problem senare under Beräkningsgeometri. DATORGRAFIK 2005-05 DATORGRAFIK 2005-07 Strålföljning: Skärning stråle och sfär () En sfär med mittpunkt M och radie r är gien. Vi ill eta om strålen med utgångspunkt i punkten S och riktningen D (gärna normerad så att A nedan är ; då är t aståndet från utgångspunkten) träffar sfären. Vi kommer att bestämma t för att få ett sar på frågan. I figuren syns S P=S+tD Q tre olika fall. Notera att lösningar med t<0 saknar intresse (de ligger bakom betraktaren eller strålens utgångspunkt). Punkten Q skall ligga på både strålen och sfären, ds Q = S + td Q M = r 2 Insättning a första ekationen i andra ger S + td M = r 2. Med S=(S,S 2,S 3 ) etc och beteckningarna (ektornotation kortare) 3 3 3 2 A = D i B = ( S i M i )D i C = ( S i M i ) 2 r 2 får i andragradsekationen M DATORGRAFIK 2005-06 med lösningar t = --- B ± B 2 AC. Diskriminanten agör huruida det finns 0, A eller 2 lösningar. Vi accepterar bara t>0. r At 2 + 2Bt + C = 0 Strålföljning Detta ar en rask introduktion till strålföljning. Det finns åtskilliga andra problemställningar förknippade med strålföljning, som man inte anar omedelbart. Eftersom metoden i sig är långsam är det extra iktigt att kunna göra olika slag a effektiiseringar, som t ex hindrar att i försöker beräkna skärningar med objekt som ligger utanför synpyramiden. Realtidsförsök: Parallellism, algoritmer, lägre upplösning id rörelse, ny hårdara. Ett strålföljningsprogram PoRay (3) Finns i såäl UNIX- som PC-ersion (snyggare anändargränssnitt). Fritt. Det anänder sig a ett scenbeskriningsspråk. Parametrarna har namn som påminner om de i mött, men betydelsen är inte alltid lika. En utmärkt manual finns. Koordinatsystemet är änsterorienterat - och inte som hittills högerorienterat - om du börjar undra. Nu ersion 3.7. Om scenbeskriningen ligger i filen Ex3.po (i $DG/ EXEMPEL_MB) startar man programmet med poray +Ex3.po +X +D +W52 +H52 Då äxer en fotorealistisk bild fram i sakta mak. Den sparas automatiskt som Ex3.png (från 3.6; tidigare anändes det gammaldagsa formatet tga)). P g a rättighetsmekanismer bäst att ara i den mapp där po-filen finns. Vill man ha radiositet lägger man i ersion 3.7 till en rad radiosity{ i global_settings. Allt tar då längre tid. Exempel (nästa OH): Scen med tå klot på ett plan. Bild efter koden. DATORGRAFIK 2005-08

Ett strålföljningsprogram PoRay 2(3) > cat Ex3.po // En scen för PoRay #include "colors.inc" global_settings { assumed_gamma 2.2 // En kamera i (,,-7) som tittar mot (0,0,0) camera { location <,, -7> look_at <0, 0, 0> angle 56 // En it ljuskälla snett och långt bakom kameran light_source { <000, 000, -000> White // Ett oändligt gult plan med normalen (0,0,) // och 6 enheter i den riktningen plane { <0,0,>, 6 pigment {color rgb <,, 0> // Ett horisontellt plan -.5 under xy-planet // med ett schackrutemönster plane { <0,, 0>, -.5 pigment { checker Green, White // En röd sfär i origo med radien sphere { <0,0,0>, pigment { Red // En sfär med radien och materialegenskaper sphere { <2,0,0>, pigment { BrightGold finish { ambient. diffuse. specular roughness.00 reflection.75 metallic Fotorealism: Radiositetsmetoden (3) Vid strålföljning tar i hänsyn till spegelreflektionen, men struntar helt i den diffusa reflektionen mellan objekt. Detta är inte korrekt. T ex kan ett itt föremål placerat i ett rum med röda äggar få en rödaktig ton. Radiositetsmetoden tar hänsyn till den diffusa reflektionen mellan objekten och struntar i spegelreflektionen, men kan på olika sätt kombineras med strålföljning. Metoden i stora drag. Förutsättningar Φ Alla ljuskällor och alla ytor är diffusa (ds ingen spegelreflektion). Begreppet diffus innebär att ljuset sprids i de olika riktningarna med energin proportionell mot cos Φ, där Φ är inkeln mot ytans normal. Intensiteten blir därmed (se figur på OH om diffus reflektion) lika oberoende a riktning, som i antog i samband med belysningsmodell-resonemanget. Maximalt ljusflöde fås alltså i normalens riktning och inget alls längs ytan. Ljuskällorna kan ara utbredda. Ytorna kan ara krökta. Scenen skall ara sluten. 2. De olika stegen.samtliga ytor delas in i mindre delar A, A 2, A 3,..., A N. Intensi teten B i på en sådan yta A i antages ara konstant, ilket natur ligtis innebär en approximation och betyder att indelningen måste göras adaptit, ds så att delarna är små där intensiteten kan föräntas ariera raskt. DATORGRAFIK 2005-09 DATORGRAFIK 2005 - Bilden Ett strålföljningsprogram PoRay 3(3) Fotorealism: Radiositetsmetoden 2(3) 2.Nu beräknas alla B i genom att man först bestämmer N 2 formfaktorer F ij, i,j N, som ger ett rent geometriskt samband mellan ytorna A i och A j. sedan löser ett linjärt ekationssystem med N ekationer och N obekanta. 3.Nu kan obseratören placeras godtyckligt utan att beräkningarna i 3 behöer göras om. Man löser bara synlighetsproblemet. 4.Ytorna ritas upp med flat toning eller Gouraud-toning. 3. Ekationssystemet Intensiteten B j hos ytan A j mäts i W/m 2. Om A j får beteckna inte bara själa ytan utan äen dess area, betyder det att den totala ljuseffekten från ytan A j är B j A j. B j A j byggs upp a tå komponenter. Dels kan ytan ara en ljuskälla med den emitterande intensiteten E j (också med sorten W/m 2 ). Dels reflekterar den diffust ljus som når ytan A j från andra ytor. Reflektionskoefficienten, som är en materialkonstant och antages ara konstant öer A j, betecknar i med ρ j. Detta innebär att N B j A j = E j A j + ρ j EnerginSomNar A j FranA i Termen innanför summatecknet kan skrias F ij B i A i, där F ij anger hur stor del a den totala energin från A i som når A j. Vi kommer senare att isa att A i F ij /A j = F ji, ara N B j = E j + ρ j F ji B i Exempel: Ett itt ägg på ett bord med och utan radiositet (Ex4R.po resp Ex4.po i samma mapp). DATORGRAFIK 2005-0 Detta är årt ekationssystem (kallas radiositetsekationen), som kan lösas med t ex gausselimination eller något iteratit förfarande (Gauss-Seidel brukar nämnas; systemet är diagonaldominant ds den DATORGRAFIK 2005-2

Fotorealism: Radiositetsmetoden 3(3) metoden konergerar; diagonaldominansen följer a att Man kan ange komplicerade formler för formfaktorerna, t ex cosφ i cosφ j F ij = -------- H πa ij -------------------------------da i r 2 i da A A j i j men i praktiken måste de ändå approximeras. 4. Ett exempel A 2 A A 2 A 3 F ij j I båda fallen är ytorna i praktiken för stora och borde delats in i mindre. Men i ill bara få ett begrepp om ad formfaktorerna innebär. I änstra fallet når allt ljuset från ytan A ytan A 2, ds F 2 = och F =0. Sambandet mellan de båda formfaktorerna F ij och F ji ger sedan F 2 =A F 2 /A 2 =A /A 2 (där nu A i betecknar area, arid A =ytan a en enhetscirkel=π och A 2 =ytan a en enhetshemisfär=2π). Resten a ljuset från A 2 måste nå A 2 själ, arför F 22 =-A /A 2. I högra fallet ger symmetrin att F 2 =F 3 =/2 och som förut är F =0. Härur får i som förut F 2 =A F 2 /A 2 =0.5A /A 2. Men att bestämma F 22 och F 23 (och därmed F 32 och F 33 ) förefaller inte helt lätt, så i ger upp. Radiositetsmetoden är en dyr metod, arför många system, bl a Po- Ray, anänder en approximati metod, som innebär att det från arje bildpunkt skickas strålar i olika riktningar som undersöker om det finns näraliggande ytor som skall ge ett diffust bidrag. A Giet: n+ punkter P 0,,..., P n. B-splines: Sammanfattning (2) Approximera med en kura som interpolerar startpunkten P 0 och slutpunkten P n och styrs a öriga punkter. Kuran skall ara styckeis sammansatt a tredjegradskuror. Resultatet blir en kura med kontinuerlig andraderiata. Allmänt behös n-2 kursegment P i (t), t i t t i+, i=,..., n-2. Segmenten P i- (t) och P i (t) går ihop id t=t i, som kallas skar (eng knot). Speciellt sätter i t =0 (första segmentets start) och id likformiga B- splines t i =i-2, ds t n- =n-2 (sista segmentets slut). Man kan skria P i t = ( ) B i ( t)p i + B i ( t)p i + B i + ( t)p i + + B i + 2 ( t)p i + 2 I inre punkter gäller i likformiga fallet B i (t) = B(t-t i ), där B( t) -- ( 2 t ) 3 t 2 6 = -- [ + 3( t ) + 3( t ) 2 3( t ) 3 ] t 6 0 2 t DATORGRAFIK 2005-3 DATORGRAFIK 2005-5 B-splines: Sammanfattning 2(2) Kuror och ytor Det finns tå huudmetoder för konstruktion a kuror och ytor: Olika former a splines, framför allt B-splines och NURBS. Utgående från ett antal punkter sätts ett uttryck för kuran eller ytan upp på parameterform. Kuran ritas utifrån denna parameterframställning. Upples a de flesta som rätt matematiskt och krångligt. Stöds a OpenGL. Behandlas i det separata pappret Kur- och ytapproximation, samt i OpenGL-häftet, asnitt 24. Sammanfattas och kompletteras med ett antal följande OH. Uppdelningsmetoder (eng. subdiision). Ytligt sett mera praktiskt. Utgående från ett antal punkter inför man successit nya punkter och modifierar samtidigt de gamla. Därefter ritas kuran genom ett polygontåg genom punkterna. Man får automatiskt sina objekt i flera upplösningar. Att analysera metoderna matematiskt är däremot inte lätt. Inget direkt stöd i OpenGL. Liksom alla kommersiella modelleringsprogram har Blender och Art Of Illusion erktyg (om än begränsade) för uppdelning. Anändningsområdet är ytor. Ble populära i slutet a 990-talet. Vi ger en kort introduktion i form a några OH. I båda fallen skiljer man på interpolerande kuror/ ytor och approximerande kuror/ytor. Vi ägnar oss mest åt den senare typen. Kuran/ytan går då inte säkert igenom de olika styrpunkter som man utgår ifrån. Allmänt är basfunktionen B i (t), 0 i n, bestämd a skarföljden (eng. knot ector) [t i-2,t i-,t i,t i+,t i+2 ]. Den är "centrerad" kring t i (i likformiga fallet t i =i-) och 0 utanför interallet [t i-2,t i+2 ]. För detta behös dock 3 extra skarar t -2 = t - = t 0 = 0 före de andra och 3 extra t n = t n+ = t n+2 =n-2 i slutet. B 0 (t) bestäms då a [0,0,0,0,], medan B (t) bestäms a [0,0,0,,2] (om antalet punkter är minst 5) och B 2 (t) bestäms a [0,0,,2,3]. På motsarande sätt i den andra änden. Den ursprungliga skarföljden om n- ärden [t,t 2,...,t n- ] utökas på detta is med 6 skarar, ds omfattar totalt (n+)+4 skarar eller 4 mer än antalet punkter. För interpolation i ändpunkterna skall de fyra första och de fyra sista i den nya följden ara sinsemellan lika. Motsarande NURBS-approximation är P i ( t) i + 2 w j B j ( t)p j = ------------------------------------------- j = i i + 2 w j B ( t) j j = i Ett annat allmännare sätt att uttrycka basfunktionerna är med en rekursionsformel (detaljer i småskriften Kur- och ytapproximation) öer gradtalet (åra B i är B 3,i, B 0,i (t) = för t i- t<t i och 0 för örigt). t t t h t B k, i ( t) = ---------------------B t + k t k, r ( t) + ---------------------B t h t k, r + ( t) h k Med denna klaras godtyckligt gradtal och godtyckliga interall-längder bekämt, men det blir ju litet mer att göra för datorn. Och i har inte härlett formeln. DATORGRAFIK 2005-4 DATORGRAFIK 2005-6

OpenGL: Kubiska B-Splines och NURBS OpenGL (snarare GLU) har stöd för B-splines med godtyckligt gradtal och de allmännare NURBS=Non-Uniform Rational B-Splines (skämtsamt Nobody Understands Rational B-Splines). OBS! Alla ektorer skall ara a float-typ (double duger inte). Arbetsarea: GLUnurbsObj* thenurb; (Jaa: long thenurb) thenurb = glunewnurbsrenderer(); Styrpunkter:(3->4 om NURBS) GLfloat styrpunkter[antal_pkter][3]; // alt. GLfloat styrpunkter[3*antal_pkter]; Skarar: int antal_skar_punkter = antal_punkter+4; GLfloat skarar[antal_skar_punkter] = {0,0,0,0,,.. ; Vikter i NURBS-fallet: GLfloat ikter[antal_pkter]; Uppritning: glubegincure(thenurb); glunurbscure(thenurb, antal_skar_punkter, skarar, 3, // astånd i GLfloats mellan styrpunkter, // ds 4 i NURBS-fallet styrpunkter, 4, // gradtalet+ GL_MAP_VERTEX_3 // eller mots ); gluendcure(thenurb); Exempel 20 i OGL-häftet. NURBS i OpenGL (2) Se OpenGL-häftet och kurskriften. Här litet till. P 5 W 5 =4 2 P 6 NURBSkuror P 4 P 0 Styrpolygon P P 8 7 Kubiska NURBS-kuror. Alla ikter W i = utom W 5 som arierar. Större ärde ökar punktens attraktionskraft. Samplingspunkterna (se separat OH) råkade komma med för W 5 =. P 3 Råkade ta med s- punkterna för W 5 = DATORGRAFIK 2005-7 DATORGRAFIK 2005-9 NURBS i OpenGL 2(2) Exempel 20 i OGL-häftet med JOGL JOGL har a någon anledning missat stödet för B-splines/NURBS, arför jag inte bifogar någon kod. Fungerade däremot i en a föregångarna, nämligen OpenGL for Jaa. Officiellt anges att man kommer att skria om den del a GLU-koden som behös i Jaa, i stället för att försöka anropa motsarande kod skrien i C. Men man har inte lyckats hitta någon som är illig att göra jobbet. Att skria en klass för sådana kuror och ytor är inte sårt, men skall den ha lika många metoder som i GLU och utnyttja det stöd som OpenGL har för Bezierkuror blir det ärre. F ö frodas JOGL och i kombination med kommande Jaa 6.0 (åren 2006 kanske; betaersion går att hämta) fungerar OpenGL bra i Swing-fönster (GLJPanel; se sid 52 Anmärkningar i OpenGL-häftet). C#/Tao erkar inte heller klara B-splines/NURBS. Det går isserligen att kompilera program med sådana, men id körningen skapas inte de objekt som behös utan man får nollreferenser. Tao tycks för örigt stå still just nu. Utdrag ur koden Point PV[50]; // 2D-punkter int Nr_Of_Points=9; GLfloat CtrlPoint[Nr_Of_Points][4]; GLfloat W[] = {.0,.0,.0,.0,.0,.0,.0,.0,.0; GLfloat t[] = {0,0,0,0,,2,3,4,5,6,6,6,6; // Bilda 3D-data i homogena koordinater for (i=0; i<nr_of_points; i++) { CtrlPoint[i][0]=W[i]*PV[i].x; CtrlPoint[i][]=W[i]*PV[i].y; CtrlPoint[i][2]=0.0; CtrlPoint[i][3]=W[i]; // Ritningen (när alla ikterna lika) glubegincure(thenurb); glunurbscure(thenurb,nr_of_points+4,t,4, (GLfloat*)CtrlPoint,4,GL_MAP_VERTEX_4); gluendcure(thenurb); // Ändra en a ikterna W[5] = 2; // Upprepa Att notera betr parametrarna till glunurbscure: 4:e parametern är nu 4 eftersom arje punkt består a 4 floats. I 5:e parametern står (GLfloat*) enbart för att hindra en arning från kompilatorn. 6:e parametern är som anligt gradtalet + (gradtalet=3 eftersom det handlar om kubiska NURBS). 7:e parametern är GL_MAP_VERTEX_4 eftersom i nu arbetar med homogena koordinater. DATORGRAFIK 2005-8 DATORGRAFIK 2005-20

Cirkelapproximation med B-splines i OpenGL Vi äljer 2 (3) punkter ekidistant belägna på cirkelns omkrets. Dessa är markerade med större (gröna) fyrkanter. Approximation med kubiska B-splines (med interpolation i start- och slutpunkt) ger en kura som a) är spetsig b) ligger innanför den riktiga cirkeln B-Splineskura Styrpolygon t=t 3 (t) t=t 2 t=t 0 (t) 0 (t) P 0 2 t=t t=t Uppdelningsmetoder (7) Vi börjar med att nämna de Casteljau s geometriska metod för konstruktion a en enstaka Bezier-kura. I figuren (GL_BEZIER2005.c) C har i fyra punkter A, B, C och b D och är alltså ute efter en B kubisk Bezier-kura P(t). Vi e konstruera punkten f, som är d f P(0.5), genom att först införa c mittpunkter a, b och c på tre a a styrpolygonens sidor. Därefter punkterna d och e som mittpunkter på linjerna ab respektie bc. Slutligen f som mittpunkt på linjen de. Processen A D kan upprepas. T ex för att beräkna P(0.25) arbetar i på samma sätt på styrpolygonen Aadf. En fördel med metoder a detta slag är att i har geometrisk kontroll. Hade t ex polygonen Aadf arit mycket smal hade i kanske kunnat nöja oss med ett streck från A till f. I själa erket kan man med metoden konstruera ilken som helst punkt på kuran genom att göra delningen litet annorlunda. En motsarighet till detta för B-splines är de Boor s metod, som dock är mycket omständligare. Spetsen kan förbättras genom att man t ex inför flera identiska startoch slutpunkter. Med NURBS (se följande OH) kan man beskria cirkeln exakt. DATORGRAFIK 2005-2. Paul de Casteljau och Pierre Bezier ar bilingenjörer. Den förre id Peugot och den andre id Renault. Båda jobbade med Bezier-kuror utan att känna till arandras arbete. DATORGRAFIK 2005-23 Cirkelapproximation med NURBS i OpenGL Uppdelningsmetoder 2(7) P 5 P 6 P 4 Kubisk B-Spline Kadratisk B-Spline Cirkel och NURBSkura (kadratisk) Notera i koden att issa skarar dubbla. Gör att ej C 2 men G 2. P 3 Låt oss nu titta på en uppdelningsmetod för kuror. Precis som i splines-fallet startar i med n+ punkter P 0,,..., P n. och ill ha en kura som interpolerar första och sista punkten och går i närheten a de andra. Mittpunktsmetoden innebär ett upprepande a följande steg:. Inför nya punkter Q 2i+, i =0,,..., mittemellan de tidigare, ds Q 2i+ = (P i+ + P i )/2. 2. Modifiera de ursprungliga punkterna nu kallade Q 2i, i = 0,,..., enligt Q 2i = (P i- + (M-2)P i + P i+ )/M 3. Låt P beteckna den nya punktektorn Q. För arje steg närmar sig punkterna alltmer en kura (kan beisas). Dock inte i allmänhet i ett ändligt antal steg. P 7 P 8,P 0 De tå stegen är typiska för alla uppdelningsmetoder. Först har man ett förfiningssteg, där nya punkter tillförs och sedan ett utjämningssteg som innebär att issa punkter modifieras. GLfloat t[] = {0,0,0,,,2,2,3,3,4,4,4; GLfloat w =.0/sqrt(2.0); GLfloat W[] = {.0, w,.0, w,.0, w,.0, w,.0; // Som förut och sedan ritning med kadratiska NURBS glubegincure(thenurb); glunurbscure(thenurb,nr_of_points+3,t,4, (GLfloat*)CtrlPoint,3,GL_MAP_VERTEX_4); gluendcure(thenurb); Det finns flera andra sätt att älja punkter. Man kan klara sig utan ett par a de i alt. Se t ex Les Piegl: The Nurbs Book, Springer 997. DATORGRAFIK 2005-22 I figuren (med programmet GL_BSPLINES_2005.c) nedan har i en kubisk B-splineskura (röd) hörande till styrpunkterna (6 st) som är markerade med en (grön) styrpolygon. Vi har dessutom en sart kura från mittpunktsmetoden med olika M-ärden. I samtliga fall lika många ar i mittpunktsmetoden. För M=6 noterar i att kuran ser ut att sammanfalla med B-splines-kuran. Att det är så kan beisas (jag känner mig personligen inte helt öertygad om den isuella beisningen i figuren). DATORGRAFIK 2005-24

M=2 Uppdelningsmetoder 3(7) Grön styrpolygon Röd B-splineskura M=3 Uppdelningsmetoder 5(7) Förfiningssteget: För arje styrpunkt P inför ytterligare styrpunkter Q i som bestäms a dels P, dels de punkter P i som P är förbunden med. Om P är förbunden med 6 punkter: Q i = (3P + 3P i + P i- + P i+ )/8, arid P - = P 5, P 6 = P 0. Utjämningssteget: Varje styrpunkt P (ej de nya) modifieras enligt (fallet 6 äen nu) P = (0*P + P 0 +... + P 5 )/6 P 3 M=6 Ett ar M=6 Q 2 Q 3 nyp Q P Q 4 P 4 Längst ner till höger isas ett enda ar för metoden. På adressen http://www.multires.caltech.edu/teaching/demos/ hittar du Jaa-appletar som beskrier och demonstrerar tå andra uppdelningsmetoder för kuror: Chaikin (approximerande) och 4-punktsmetoden (interpolerande). P 0 Q 0 Q 5 Vi inser att specialåtgärder måste idtas id kanterna och när styrpunkterna inte har 6 förbundna. I figuren har i med streckade linjer markerade delar a ett par trianglar som punkten ger uppho till. P 5 DATORGRAFIK 2005-25 DATORGRAFIK 2005-27 Uppdelningsmetoder 4(7) Vi öergår nu till yt-fallet för ilket det finns en uppsjö metoder. Först en bild hämtad från SIGGRAPHS kurs 998 om Subdiision (asnittet Subdiision Surfaces in Character Animation a Tony DeRose m fl från Pixar Animation Studios). Uppdelningsmetoder 6(7) Ett exempel (kunde arit roligare om de boolska operationerna fungerat som de borde) med Art Of Illusion. Vi startar med en kub. Väljer den. Konerterar till triangelnät med Object/Conert to Triangle Mesh. Påbörjar redigering a kuben med Object/Edit Object, som isar upp ett nytt fönster med enbart år kub. Väljer FACE längst ned till änster i det fönstret. Markerar med MK3 de fyra trianglarna på oansidan. Nu ser det ut som i figur. Gör Mesh/Beel/Extrude Selection tå gånger. Därefter äljer i med Mesh/Smoothing Method Approximate (som - inbillar jag mig - ger en approximerande uppdelning; metoden anges ej). Nu enligt figur 2. Metoden i figuren kallas Catmull-Clark och arbetar med fyrhörningar och är approximerande. Låt oss se på en metod Loop (upphosmannen heter Loop), som arbetar med trianglar i anslutning till följande figur. Fig. Fig. 2 Vi lämnar kubredigeringen och ser då i det anliga fönstret något som liknar figur 3 eller figur 4 (beroende på isningssättet i Scene/Display Mode). Med File/Export/VRML (älj bort komprimeringen) får i en massa triangeldata för det skapade objektet i en fil. DATORGRAFIK 2005-26 DATORGRAFIK 2005-28