Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Del 1 Introduksjon til VTK. INF2340 / V052 VTK - The Visualization Toolkit Objekt-orientert bibliotek for visualisering Fordeler: –Fritt tilgjengelig.

Liknende presentasjoner


Presentasjon om: "Del 1 Introduksjon til VTK. INF2340 / V052 VTK - The Visualization Toolkit Objekt-orientert bibliotek for visualisering Fordeler: –Fritt tilgjengelig."— Utskrift av presentasjonen:

1 Del 1 Introduksjon til VTK

2 INF2340 / V052 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...) C++ –Kan brukes fra flere vertsspråk (C++, Tcl/Tk, Python, Java,...) –Mulighet for utvidelser med egne C++ klasser

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

4 INF2340 / V054 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)

5 INF2340 / V055 Eksempel class Adder { public: void Add(int x, int y) {sum = x + y;} int 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 GetSum() << ‘\n’;

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

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

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

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

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

11 INF2340 / V0511 vtkActor vtkRenderWindow vtkRenderWindowInteractor vtkRenderer vtkLightvtkCamera vtkActor vtkProperty vtkMapper 1..* 1 0..*1 1..* 1 1 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 * 1 “Visualization Pipeline”

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

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

14 INF2340 / V0514 vtkRenderer vtkRenderWindow vtkRenderWindowInteractor vtkRenderer vtkLightvtkCamera vtkActor vtkProperty vtkMapper Ansvarlig for å lage et 2D bilde av 3D ”aktørene” eller 2D “aktørene” vtkRenderer vtkViewportvtkActor2D 1..* 1 0..*1 1..* * 1 “Visualization Pipeline”

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

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

17 INF2340 / V0517 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) –...

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

19 INF2340 / V0519 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!

20 INF2340 / V0520 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 }

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

22 Del 2 Grafisk databehandling

23 INF2340 / V0523 Lys Elektromagnetisk energi med bølgelengde i intervallet 400- til 700 nm (10 -9 m) Kosmisk stråling Gamma stråling RøntgenUltrafiolettInfrarødtMikrobølgeRadarRadio (nm) Synlig lys (nm)

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

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

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

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

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

29 INF2340 / V0529 Fargesyntese Additiv –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)

30 INF2340 / V0530 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

31 INF2340 / V0531 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

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

33 INF2340 / V0533 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

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

35 INF2340 / V0535 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!

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

37 INF2340 / V0537 H S V 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 HSV = generalisert kunstmaler-modell:

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

39 INF2340 / V0539 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.

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

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

42 INF2340 / V0542 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 Pixeldybde Skjermoppløsning

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

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

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

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

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

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

49 INF2340 / V0549 3D primitiv Projisering 2D primitivRasterisert 2D primitiv 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)

50 INF2340 / V0550 Aliasing (kap VTK-boka) Rasteriserte primitiver ser generelt “taggete” ut IdeeltI praksis

51 INF2340 / V0551 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 % av pixel-areal  w = 0.7 Det finnes også andre metoder

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

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

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

55 INF2340 / V0555 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.

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


Laste ned ppt "Del 1 Introduksjon til VTK. INF2340 / V052 VTK - The Visualization Toolkit Objekt-orientert bibliotek for visualisering Fordeler: –Fritt tilgjengelig."

Liknende presentasjoner


Annonser fra Google