1 / 56

3D, transformationer och visualisering Föreläsning 6

Innehåll 3D grunder och matematiska verktyg Lite om 3D-transformationer Introduktion till 3D-visualisering Algoritmer i objekt respektive bildrymden. 3D, transformationer och visualisering Föreläsning 6. Tredimensionella metoder. Kamerametafor

tawana
Download Presentation

3D, transformationer och visualisering Föreläsning 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Innehåll 3D grunder och matematiska verktyg Lite om 3D-transformationer Introduktion till 3D-visualisering Algoritmer i objekt respektive bildrymden 3D, transformationeroch visualiseringFöreläsning 6

  2. Tredimensionella metoder Kamerametafor • Man brukar använda en analogi med en kamera som placeras, riktas och flyttas i världen Visualisering • Vi kan visualisera "realistiskt" med texturer/material, belysning, reflektion, skuggor, borttagning av skymda ytor osv eller mha tex ståltrådsmodeller • Vi kan visa objekt i perspektiv- eller parallell projektion • Vid kan använda ledtrådar om avstånd genom att variera färgtonen • Vi kan visa spränskisser • Stereobilder kan användas • osv

  3. Grundläggande typer av objekt • I datorgrafik jobbar vi meddom grundläggandematematiska objekten(och datatyperna) • punkt • skalär • vektor

  4. Matematiska verktyg • Skalärprodukt • cosinus för vinkeln mellan två vektorer • Kryssprodukt • ger ortogonal vektor • Planets ekvation • Koplanära vektorer • Normal • ytans riktning

  5. ... • Matriser • vi använder matriser för att beskriva transformationer • Koordinatsystem • objekt definieras i förhållande till koordinatsystem

  6. Omslutande volymer • För att reducera arbetsmängden vid test av skärning • Två objekt och deras projektion på xy-planetdär normalisering och perspektivtransformation redan gjord • I bilden överlappar ej rektanglarna så inga vidaretester för skymda ytor behöver göras y x z Konvexa höljet

  7. forts • om omslutande rektanglarna överlappar finns två möjligheter • objekten skär varandra • objekten skär inte varandra

  8. Dom tredimensionella primitiverna • I tre dimensioner har vi flera olikaprimitiva objekt som: • kurvor och linjer • ytor av olika slag • olika typer av tredimensionella objekt • sfär, rätblock, pyramid, etc

  9. Exempel: konstruera roterande kub • Några distinkta steg som måste utföras • modellera • sätt upp kamera ochvisualiseringsvolym • klipp • projicera • ta bort skymda ytor • rastrera

  10. Definiera ytor och normaler • Högerhandsregeln • tummen i normalens riktning typedef point float[3]; point node[8] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}}; glBegin(GL_POLYGON); glVertex3fv(node[0]); glVertex3fv(node[3]); glVertex3fv(node[2]); glVertex3fv(node[1]); glEnd();

  11. Beskrivning av polyeder • Objektet beskrivet som en följd av ytor där var och en av ytorna beskrivna som ordnade listor med vertex. Högerhandsregeln ger normalen.

  12. Färg given för vissa vertex • Färgen på ytor mellan hörnen beräknas genom bilinjär interpolation GLfloat colors[][3] = {{0.0,0.0,0.0},{1.0,0.0,0.0}, {1.0,1.0,0.0}, {0.0,1.0,0.0},{0.0,0.0,1.0}, {1.0,0.0,1.0},{1.0,1.0,1.0}, {0.0,1.0,1.0}}; glBegin(GL_POLYGON); glColor3fv(colors[0]); glVertex3fv(node[0]); glColor3fv(colors[3]); glVertex3fv(node[3]); /* och så vidare ... glEnd();

  13. Ibland effektivt ”beräkna” färg vid utritningen • Vid varje sveplinje interpolerasaktuell färg fram från färgenpå hörnen och kanterna

  14. I tre dimensioner använder vi precis som i 2D homogena koordinater • Därmed kan vi behandla transformationer på ett uniformt sätt • Matrisen och representationen av punkterna i 3D blir i stil med

  15. Translation Som i 2D, fast en dimension till

  16. Rotation kring z-axeln kring x-axeln kring y-axeln

  17. Rotation kring fixpunkt 1. Flytta fixpunkt till origo 2. Rotera 3. Flytta tillbaks fixpunkt

  18. ...

  19. 1. Translatera objektet så att rotations-axeln passerar genom origo 2. Rotera objektet så att rotationsaxeln sammanfaller med önskad koordinataxel 3. Rotera specificerad vinkel runt axeln 4. Invertera rotationen från steg 2 5. Invertera translationen från steg 1 Generell rotation kring rotationsaxel

  20. ...

  21. På ungefär samma sätt som i 2D 1. Translatera fixpunkten till origo 2. Skala objektet 3. Invertera translationen från 1 Skalning med avseende på fixpunkt

  22. Visualiseringspipeline Modell koordinater Vytransformation Modelltrans- formation Världs-koordinater Vykoordinater Projektions- koordinater Transfomation till arbetstation Projektions- transformtion Enhets-koordinater

  23. Vi börjar med att ansätta ett koordinatsystem genom att: ange referenskoordinatsystem relativt världskoordinatsystemet definiera projektionsplan välja positiv riktning för projektionsplanet, genom att ange en normalvektor vi ger en vektor som anger vad som är uppåt Specificera utritningsplanet

  24. Exempel: Vi positionerar kameran i OpenGL • I OpenGL kan vi ange var ögat finns, vart vi tittar och vad som är uppåt

  25. Transformation från världs- till vykoordinater • Görs på liknande sätt som vid transformationer av enskilda objekt • dvs använd en transformationsmatris för att transformera det ena korrdinatsystemet till det andra

  26. Projektioner Perspektivprojektion projektionscentrum

  27. ... Parallellprojektion

  28. Parallella projektioner projektionsplan

  29. Perspektivprojektioner projektionscentrum

  30. ”Klassiska” visualiserinssätt

  31. Ortografisk projektion • Projektorerna vinkelräta mot projektionsplanet

  32. ... • Ett tempel och tre ortografiska projektioner av det

  33. Axonometrisk projektion • Projektorerna (fortfarande) ortogonala mot projektionsplanet, men projektionsplanet kan ha godtycklig orientering i förhållande till objektet

  34. Symmetriska projektioner • Om vinkel projektionsplanets normal bildar med koordinataxlarna uppfyller vissa villkor har projektionen eget namn Dimetrisksymmetrisk medavseende på två axlar Isometrisksymmetrisk medavseende på alla tre axlarna Trimetriskgenerella fallet

  35. Oblique projektion • Projektorerna parallella men ej ortogonala mot projektionsplanet • Specialfall Cabinet (med djupet = halva bredden)

  36. Perspektiv tvåpunkts trepunkts enpunkts

  37. Ortogonal projektion • z-komponenten sätts till noll

  38. Utritningsvolymer och generella projektionstransformationer • I OpenGL anger vi visualiseringsvolym • Objekt utanför denna volym klipps bort • Man talar om att kameran har en vinkel för visualiseringsplanet (angle of view)

  39. Vi anger klipplan • Den resulterandetrunkerade pyramidenbrukar kallas förfrustum

  40. Alternativa sätt att ange volymen • Vi kan istället angevyvolumen genom attange en vinkel och ettförhållande mellan breddoch höjd

  41. Perspektivtransformation • Punkter på samma projektionslinje • Två punkter på samma projektionslinje i perspektivprojektion om: • i parallellprojektion om: • Om vi normaliserar vyvolymen och (perspektiv-) transformerar projektionspunkten till oändligheten • så blir problemet med att avgöra om en punkt skymmer enannan detsamma som vid parallellprojektion • dvs enklare beräkningar p3 projektions- centrum p1 p2

  42. Normaliserade koordinater • Många algoritmer förenklas om tester utförs först efter transformation till normaliserade enhetskoordinater (kanonisk form)

  43. Borttagning av skymda ytor • Problem • Avgöra vad i scenen som syns från en given punkt • Alternativ formulering • Avgöra vilka delar av scenen som INTE syns

  44. Typer av algoritmer • Algoritmerna är av två olika huvudtyper som beror av om dom baseras direkt på objektens definition eller deras projektioner. • Nämligen om avgörandet sker i: • Objektrummet • Jämför objekt och delar av dem för att avgöra vad som syns • Bildrymden • Vad som syns avgörs pixel för pixel på projektionsplanet

  45. Algoritmer i objektrummet • Också kända som • objektprecisionsalgoritmer • Algoritm (principskiss) for (varje objekt i världen){hitta delar av objektet som inte är skymda av andra delar eller andra objekt; rita dessa delar} • Komplexitet • jämföra varje (n) objekt med varje annatn ** 2

  46. Sammanfattning: principer för att rita objekt • ”objektorienterade” • också kända som ”sortera först” • För varje objekt • rita objektet • ”avbildningsorienterade” • också kända som ”sortera sist” • för varje pixel • tildela en färg

  47. Olika fall • Ett objekt skymmer helt ett annat • Objekten skymmer inte varandra • Det ena objektet skymmer delvis det andra eller vice versa • Det sista fallet är mest komplicerat

  48. Borttagning av ytor med normalen riktad bort från betraktaren • Om projektionscentrum i (x’, y’, z’) är varje plan som uppfyller Ax’ + By’ + Cz’ + D < 0 bortriktat • Normalen för ett bortriktatplan bildar en icke negativskalärprodukt med vektornfrån projektionscentrum tillnågon punkt på planet B A C D E H F G

  49. ...forts • Om projektionsriktningen är längs z-axeln kan vi göra ett enklare test genom att enbart betrakta planets normalvektorer (A, B, C) • Om C < 0 så är normalen riktad bort från betraktaren och därmed är planet en “baksida” • Om världen endast består av en enda konvex polyeder så är testet tillräckligt annars kan “framsidor” som C och E i figuren ändå vara skymda och vi måste testa vidare • i medeltal elimineras i alla fall hälften av ytorna

  50. Algoritmer i bildrymden • Också kända som • bildprecisionsalgoritmer • Algoritm (principskiss) for (varje pixel i bilden){hitta det objekt som är närmast betraktaren på en projektionslinje genom pixeln; rita pixeln} • Komplexitet • (brutal metod) kräver att vi för varje pixel undersöker alla n objekt för att avgöra vilket som är närmast, dvsför p pixlar krävs np jämförelser

More Related