Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Del 1 Introduksjon til VTK

Liknende presentasjoner


Presentasjon om: "Del 1 Introduksjon til VTK"— Utskrift av presentasjonen:

1 Del 1 Introduksjon til VTK

2 VTK - The Visualization Toolkit
Objekt-orientert bibliotek for visualisering Fordeler: Fritt tilgjengelig Stor brukergruppe Godt designet, testet og dokumentert (se VTK brukermanual på kurs-siden!) Rik funksjonalitet, fleksibelt Pedagogisk! Portabelt (MS Windows, SGI, Sun, Linux ...) Kan brukes fra flere vertsspråk (C++ , Tcl/Tk, Python, Java, ...) Mulighet for utvidelser med egne C++ klasser INF2340 / V05

3 VTK Ulemper: Dårlig ytelse (i mange tilfeller)
Utnytter ikke visse typer maskinvare for grafikk ... Til dels dårlig dokumentasjon... INF2340 / V05

4 Objektorientering (OO) i C++
En klasse er en datatype med tilstand (variable, data, datastrukturer, ...) algoritmer for å endre tilstanden (prosedyrer, funksjoner, metoder, operasjoner, ...) Et objekt er en instansiert klasse (instans av en klasse) INF2340 / V05

5 Eksempel class Adder { public: void Add(int x, int y) {sum = x + y;}
GetSum() {return sum;} private: int sum; }; Adder a1; a1.Add(3, 4); cout << a1.GetSum() << ‘\n’; Adder* a2 = new Adder; a2->Add(5, 6); cout << a2->GetSum() << ‘\n’; INF2340 / V05

6 Litt notasjon for OO-modellering
En klasse Et objekt (instans av klassen A) A A A er en generalisering av B (A er en superklasse (baseklasse) av B) B A B er et spesialtilfelle av A (B er en subklasse (avledet klasse) av A) A har kjennskap til B (assosiasjon) (Egentlig: A har behov for å kjenne til B!) A B A og B har kjennskap til hverandre (toveis assosiasjon) A B A består av B, B er en del av A (aggregering - spesiell form for assosiasjon) A B INF2340 / V05

7 Litt OO notasjon (forts.)
A består av nøyaktig én instans av B A B 1 A består av null eller én instans av B A B 0..1 A består av null eller flere instanser av B A B 0..* osv. Tilsvarende for assosiasjon! INF2340 / V05

8 VTK - Overordnet Arkitektur
1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty INF2340 / V05

9 vtkRenderWindowInteractor
1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Ansvarlig for opptegning av all grafikk i et “hovedvindu”. INF2340 / V05

10 vtkRenderWindowInteractor
1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Håndterer mus- og tastatur-hendelser (“events”). Gir vtkRenderWindow-objektet beskjed om ny opptegning der typisk verdier i vtkCamera objektene er endret. INF2340 / V05

11 vtkRenderWindowInteractor
vtkActor 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Representerer et geometrisk objekt i en 3D “scene”. Mange operasjoner utføres på en 3D “aktør” som helhet, bl.a. skjuling, deformering og rotasjon. INF2340 / V05

12 vtkRenderWindowInteractor
vtkProperty 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Definerer egenskaper for flaten til en 3D “aktør”, deriblant farge hvordan lys reflekteres representasjonsform ((fylte) polygoner, linjer eller punkter) transparens INF2340 / V05

13 vtkRenderWindowInteractor
vtkMapper 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Representerer “sluttproduktet” i “Visualization Pipeline” i form av et sett med grafiske primitiver. Flere detaljer om vtkMapper kommer senere! INF2340 / V05

14 vtkRenderWindowInteractor
vtkRenderer 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Ansvarlig for å lage et 2D bilde av 3D ”aktørene” ... ... eller 2D “aktørene” 1..* 1..* vtkViewport vtkActor2D vtkRenderer INF2340 / V05

15 vtkRenderWindowInteractor
vtkLight 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Definerer en lyskilde for belysning av 3D “aktørene”. En lyskilde kan bl.a. ha farge og plassering. INF2340 / V05

16 vtkRenderWindowInteractor
vtkCamera 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 1..* 1..* vtkRenderer 1..* vtkActor 1..* 1..* 1 1..* vtkMapper 1 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Definerer synsvinkelen vi betrakter 3D ”aktørene” med. Bl.a. kan graden av perspektiv manipuleres. INF2340 / V05

17 Instansiering av objekter
VTK-objekter skal alltid instansieres med New og slettes med Delete! vtkRenderer* rdr = vtkRenderer::New(); rdr->Delete(); Pga. Dynamisk minnehåndtering “garbage collection” Korrekt instansiering av subklasser (se kap i VTK-boka) ... INF2340 / V05

18 Sammenkobling av objekter
SetRenderWindow 1 0..1 vtkRenderWindow vtkRenderWindowInteractor 1 AddRenderer 1..* 1..* AddActor vtkRenderer 1..* vtkActor SetMapper 1..* 1..* AddLight 1 1..* vtkMapper SetActiveCamera 1 SetProperty 0..* 1 1 “Visualization Pipeline” vtkLight vtkCamera vtkProperty Disse instansieres (og kobles opp) automatisk INF2340 / V05

19 Sammenkobling av objekter i “Visualization Pipeline”
vtkMapper vtkSphereSource SetInput GetOutput vtkSphereSource* sSphere = vtkSphereSource::New(); vtkPolyDataMapper* mSphere = vtkPolyDataMapper::New(); mSphere->SetInput(sSphere->GetOutput()); Mer om dette senere! INF2340 / V05

20 Typisk hovedstruktur i et C++/VTK program i INF2340
// Inkludering av nødvendige filer // *** Hovedprogram *** main() { // - Instansiér og koble sammen vtkRenderWindow, vtkRenderer og // evt. vtkRenderWindowInteractor objekter. // - Instansiér “aktør” objekter og deres tilhørende “visualization // pipelines” // - Koble “aktør” objektene til vtkRenderer objektet/objektene // - Sett opp vinduet og start evt. mus/tastatur interaksjon } INF2340 / V05

21 VTK så langt Nok informasjon til å lage enkle programmer der fokus ikke er på “visualization pipeline” Bruk manualsidene! INF2340 / V05

22 Del 2 Grafisk databehandling

23 Lys Elektromagnetisk energi med bølgelengde i intervallet 400- til 700 nm (10-9 m) (nm) 10-6 10-3 10-1 10 103 106 109 1012 Kosmisk stråling Gamma stråling Røntgen Ultrafiolett Infrarødt Mikrobølge Radar Radio Synlig lys 400 450 500 550 600 650 700 (nm) INF2340 / V05

24 Fargen til et objekt Definert som bølgelengdene det reflekterer eller transmitterer (genererer selv) INF2340 / V05

25 Fargeoppfattelse Defineres typisk vha. tre størrelser:
dominerende bølgelengde metning (“avstand” fra grått) intensitet (“lyshet”) INF2340 / V05

26 Akromatisk lys (gråtoner)
Ingen dominerende bølgelengde Metning lik null INF2340 / V05

27 Øyet To typer fotoreseptorer: staver (“rods”) tapper (“cones”)
aktive ved svakt lys (om natten etc.) oppfatter mest gråtoner tapper (“cones”) aktive ved normalt lys oppfatter “alle” farger (inkl. gråtoner) INF2340 / V05

28 tre typer - mest sensitive for hhv. blått, grønt og rødt
400 700 Bølgelengde (nm)  fiolett! INF2340 / V05

29 Fargesyntese Additiv Subtraktiv kombinasjon av farget lys dataskjermer
totalfargen lysere (mer intens) og mer mettet enn enkelt-komponentene modeller: RGB, HSV Subtraktiv refleksjon fra kombinasjon av fargede “pigmenter” printere totalfargen mørkere (mindre intens) og mindre mettet enn enkelt-komponentene modeller: CMY(K) INF2340 / V05

30 Fargemodeller (-rom) RGB-kuben Red (1, 0, 0) Yellow (1, 1, 0)
Green (0, 1, 0) Blue (0, 0, 1) Black (0, 0, 0) Cyan (0, 1, 1) Magenta (1, 0, 1) White (1, 1, 1) Gråtoner INF2340 / V05

31 Basiskomponenter: R (red), G (green) og B (blue) Additiv syntese
Fargeskjermer Fargen oppfattes som hvit når hver komponent har full intensitet Fargen oppfattes som sort når hver komponent har null intensitet INF2340 / V05

32 CMY(K)-kuben Yellow (0, 0, 1) Red (0, 1, 1) Green (1, 0, 1)
Black (1, 1, 1) Gråtoner White (0, 0, 0) Magenta (0, 1, 0) Cyan (1, 0, 0) Blue (1, 1, 0) INF2340 / V05

33 Basiskomponenter: C (cyan), M (magenta) og Y (yellow)
Subtraktiv syntese Printere Fargen oppfattes som sort når hver komponent har full intensitet Fargen oppfattes som hvit når hver komponent har null intensitet I praksis (trykkeribransjen) brukes en fire-farge teknikk med sort (K) som en fjerde farge INF2340 / V05

34 Fordeler med kubemodellene
Enkel geometri Korresponderer direkte med maskinvare (RGB-kanonene i skjermen  effektiv! INF2340 / V05

35 Ulemper med kubemodellen
En gitt RGB-verdi vil ikke nødvendigvis gi samme farge på andre skjermer! RGB kan i praksis ikke overføres direkte til CMY kun ved å ta inversen (R = 1 - C) Sammenhengen mellom forskjell i fargeoppfattelse og geometrisk avstand mellom to “fargepunkter” varierer med hvor i kuben man er (f.eks. enklere å skille farger i det “lyse” hjørnet!) Representerer styrken på RGB-kanonene i skjermen i større grad enn hvordan fotoreseptorene i øyet oppfatter farge Ikke spesielt intuitiv! INF2340 / V05

36 HSV-modellen Basert på “kunstmaler-modell” Ren farge
Blanding med hvitt Ren farge Blanding med både hvitt og sort Gråtoner Blanding med sort INF2340 / V05

37 HSV = generalisert kunstmaler-modell:
Red 0° Yellow 60° Green 120° Cyan 180° Blue 240° Magenta 300° Black 0.0 White 1.0 Basiskomponenter: H (hue), S (saturation) og V (value) Additiv syntese Fargeskjermer INF2340 / V05

38 Fordeler med HSV-modellen
Intuitiv! Enkel geometri (nesten like enkel som RGB) Enkel algoritme for å konvertere til RGB INF2340 / V05

39 Ulemper med HSV-modellen
En gitt HSV-verdi vil ikke nødvendigvis gi samme farge på andre skjermer! Sammenhengen mellom forskjell i fargeoppfattelse og geometrisk avstand mellom to “fargepunkter” varierer med hvor man er (spesielt langs “hue”-dimensjonen: langsommere endringer ved RGB-vinklene) Aksene oppfattes ikke som helt ortogonale (uavhengige). F.eks. vil ulike punkter i HS-planet kunne gi litt ulik intensitet selv om V er numerisk konstant. INF2340 / V05

40 RGB vs HSV RGB (red, green, blue) and HSV (hue, saturation, value)
colour systems. INF2340 / V05

41 Basal Maskinarkitektur for Rastergrafikk
Grensesnitt mot vertsmaskin Grafikk kommandoer Interaksjons data Mus / Tastatur Pixel (picture element) Display controller Video controller “Frame buffer” INF2340 / V05

42 Skjermoppløsning vs. pixeldybde
Skjermoppløsning = antall pixler Pixeldybde = antall bit pr pixel F.eks. en skjerm med oppløsning 1280x1024 og pixeldybde 24, krever 3.75 MB RAM Skjermoppløsning Pixeldybde INF2340 / V05

43 24 bits fargebuffer (28)3 = 16,777,216 ulike farger i et enkelt pixel
Video controller 8 bit Red Green Blue (28)3 = 16,777,216 ulike farger i et enkelt pixel “ubegrenset” antall ulike pixler (med dagens skjermoppløsning!) INF2340 / V05

44 8 bits fargebuffer - alternativ 1
Video controller 2 bit 3 bit 8 bit 3 bit 8 bit 28 = 256 ulike farger i et enkelt pixel 28 = 256 ulike pixler INF2340 / V05

45 8 bits fargebuffer - alternativ 2 (bedre)
Video controller Colormap (Lookup Table) 1 8 bit 8 bit 255 24 bit 24 bit (28)3 = 16,777,216 ulike farger å velge mellom 28 = 256 ulike pixler INF2340 / V05

46 Annen bruk av frame buffer’et
Bl.a. “Dobbeltbuffering” (animasjon etc.) Z-verdi (skjulte flater) Alpha-verdi (transparens) Mer om dette senere! INF2340 / V05

47 Grafiske primitiver Fundamentale Punkt (node) Linje (kant)
Mer komplekse Polylinje Polygon INF2340 / V05

48 Linje og triangel-polygon i VTK
vtkActor vtkActor vtkPolyDataMapper vtkPolyData vtkPolyDataMapper vtkLineSource vtkFloatPoints vtkCellArray vtkIdList (x, y, z) ID = 2 (x, y, z) ID = 0 vtkPolyData (x, y, z) ID = 1 INF2340 / V05

49 Rasterisering Å avgjøre hvilke pixler som blir dekket av et 3D primitiv (“scan-konvertering”) Å utføre diverse operasjoner relatert til enkelt-pixler (f.eks. korrekt fargelegging i forhold til belysning) 3D primitiv Projisering Rasterisering 2D primitiv Rasterisert 2D primitiv INF2340 / V05

50 Aliasing (kap. 7.15 VTK-boka)
Rasteriserte primitiver ser generelt “taggete” ut 5 5 4 4 3 3 2 2 1 1 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 Ideelt I praksis INF2340 / V05

51 Antialiasing La primitivet ha tykkelse lik en pixelbredde.
La bidraget w til forgrunnsfargen i et pixel være proporsjonal med arealet som dekkes av primitivet: % dekning  w = Resultatfargen i pixelet er da essensielt gitt ved wf + (1-w)b, der f og b er hhv. for- og bakgrunnsfargen. 70% av pixel-areal  w = 0.7 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 Det finnes også andre metoder INF2340 / V05

52 Objekt- og bilderom (kap 3.6 i VTK-boka)
Objektrom Modell-koordinater (model-) Verdens-koordinater (world-) Bilderom Syns-koordinater (view-) Skjerm-koordinater (display-) INF2340 / V05

53 Bilde (f.eks. en PC-skjerm)
Bilderom y Bildeplan Transformasjon Objektrom x z y z x Bilde (f.eks. en PC-skjerm) Objekt (f.eks. en VTK “actor”) INF2340 / V05

54 Syns-koordinater Verdens-koordinater Modell- Skjerm-koordinater
Transformasjon y Transformasjon Syns-koordinater Verdens-koordinater x y z z y x z y x Transformasjon x z z Modell- koordinater y Skjerm-koordinater x INF2340 / V05

55 Objekt- og bilderekkefølge (kap. 3.1 i VTK-boka)
Klassifikasjon av algoritmer som avbilder informasjon i objektrommet på bildeplanet: Objektrekkefølge Kontstruer bildet ved å gå systematisk gjennom ett og ett objekt. Bilderekkefølge Konstruer bildet ved å gå systematisk gjennom ett og ett pixel. INF2340 / V05

56 Scanning av CRT (Cathode Ray Tube)
Frame buffer Scan linje Video controller Elektronkanoner mot rødt, grønt og blått fosfor Vertikal “retrace” Horisontal “retrace” INF2340 / V05


Laste ned ppt "Del 1 Introduksjon til VTK"

Liknende presentasjoner


Annonser fra Google