Del 1 introduksjon til vtk
Download
1 / 56

Del 1 Introduksjon til VTK - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

Del 1 Introduksjon til VTK. VTK - The V isualization T ool k it. 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!

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Del 1 Introduksjon til VTK' - ronni


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Del 1 introduksjon til vtk

Del 1Introduksjon til VTK


Vtk the v isualization t ool k it
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


VTK

  • Ulemper:

    • Dårlig ytelse (i mange tilfeller)

      • Utnytter ikke visse typer maskinvare for grafikk

      • ...

    • Til dels dårlig dokumentasjon...

INF2340 / V05


Objektorientering oo i c
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


Eksempel
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 << a2->GetSum() << ‘\n’;

INF2340 / V05


Litt notasjon for oo modellering

A

B

A

B

A

B

A

B

Litt notasjon for OO-modellering

En klasse

Et objekt (instans av klassenA)

A

A

A er en generalisering av B (A er en superklasse (baseklasse) av B)

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 og B har kjennskap til hverandre (toveis assosiasjon)

A består av B, B er en del av A (aggregering - spesiell form for

assosiasjon)

INF2340 / V05


Litt oo notasjon forts

1

A består av nøyaktig én instans av B

A

B

0..1

A består av null eller én instans av B

A

B

0..*

A består av null eller flere instanser av B

A

B

Litt OO notasjon (forts.)

osv.

Tilsvarende for assosiasjon!

INF2340 / V05


Vtk overordnet arkitektur

“Visualization

Pipeline”

VTK - Overordnet Arkitektur

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkrenderwindow

“Visualization

Pipeline”

vtkRenderWindow

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Ansvarlig for opptegning av all grafikk i et “hovedvindu”.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkrenderwindowinteractor

“Visualization

Pipeline”

vtkRenderWindowInteractor

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Håndterer mus- og tastatur-hendelser (“events”).

  • Gir vtkRenderWindow-objektet beskjed om ny opptegning der typisk verdier i vtkCamera objektene er endret.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkactor

“Visualization

Pipeline”

vtkActor

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

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.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkproperty

“Visualization

Pipeline”

vtkProperty

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Definerer egenskaper for flaten til en 3D “aktør”, deriblant

    • farge

    • hvordan lys reflekteres

    • representasjonsform ((fylte) polygoner, linjer eller punkter)

    • transparens

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkmapper

“Visualization

Pipeline”

vtkMapper

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Representerer “sluttproduktet” i “Visualization Pipeline” i form av et sett med grafiske primitiver.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

Flere detaljer om vtkMapper kommer senere!

INF2340 / V05


Vtkrenderer

“Visualization

Pipeline”

vtkRenderer

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Ansvarlig for å lage et 2D bilde av 3D ”aktørene” ...

  • ... eller 2D “aktørene”

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

1..*

1..*

vtkViewport

vtkActor2D

vtkRenderer

INF2340 / V05


Vtklight

“Visualization

Pipeline”

vtkLight

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Definerer en lyskilde for belysning av 3D “aktørene”.

  • En lyskilde kan bl.a. ha farge og plassering.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Vtkcamera

“Visualization

Pipeline”

vtkCamera

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

1..*

1..*

  • Definerer synsvinkelen vi betrakter 3D ”aktørene” med.

  • Bl.a. kan graden av perspektiv manipuleres.

vtkRenderer

1..*

vtkActor

1..*

1..*

1

1..*

vtkMapper

1

0..*

1

1

vtkLight

vtkCamera

vtkProperty

INF2340 / V05


Instansiering av objekter
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. 3.10 i VTK-boka)

    • ...

INF2340 / V05


Sammenkobling av objekter

“Visualization

Pipeline”

Sammenkobling av objekter

SetRenderWindow

1

0..1

vtkRenderWindowInteractor

vtkRenderWindow

1

AddRenderer

1..*

AddActor

1..*

vtkRenderer

1..*

SetMapper

vtkActor

1..*

1..*

1

AddLight

1..*

vtkMapper

SetActiveCamera

1

SetProperty

0..*

1

1

vtkLight

vtkCamera

vtkProperty

Disse instansieres (og kobles opp)

automatisk

INF2340 / V05


Sammenkobling av objekter i visualization pipeline

vtkMapper

SetInput

GetOutput

vtkSphereSource

Sammenkobling av objekter i “Visualization Pipeline”

vtkSphereSource* sSphere = vtkSphereSource::New();

vtkPolyDataMapper* mSphere = vtkPolyDataMapper::New();

mSphere->SetInput(sSphere->GetOutput());

Mer om dette senere!

INF2340 / V05


Typisk hovedstruktur i et c vtk program i inf2340
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


Vtk s langt
VTK så langt

  • Nok informasjon til å lage enkle programmer der fokus ikke er på “visualization pipeline”

  • Bruk manualsidene!

INF2340 / V05


Del 2 grafisk databehandling

Del 2Grafisk databehandling


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


Fargen til et objekt
Fargen til et objekt

  • Definert som bølgelengdene det reflekterer eller transmitterer (genererer selv)

INF2340 / V05


Fargeoppfattelse
Fargeoppfattelse

  • Defineres typisk vha. tre størrelser:

    • dominerende bølgelengde

    • metning (“avstand” fra grått)

    • intensitet (“lyshet”)

INF2340 / V05


Akromatisk lys gr toner
Akromatisk lys (gråtoner)

  • Ingen dominerende bølgelengde

  • Metning lik null

INF2340 / V05


Ø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)

INF2340 / V05


400

700

Bølgelengde (nm)

 fiolett!

INF2340 / V05


Fargesyntese
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)

INF2340 / V05


Fargemodeller rom

Blue (0, 0, 1)

Cyan (0, 1, 1)

Magenta (1, 0, 1)

White (1, 1, 1)

Gråtoner

Black (0, 0, 0)

Green (0, 1, 0)

Red (1, 0, 0)

Yellow (1, 1, 0)

Fargemodeller (-rom)

RGB-kuben

INF2340 / V05


INF2340 / V05


Cmy k kuben
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


  • 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


Fordeler med kubemodellene
Fordeler med kubemodellene

  • Enkel geometri

  • Korresponderer direkte med maskinvare (RGB-kanonene i skjermen

  •  effektiv!

INF2340 / V05


Ulemper med kubemodellen
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


Hsv modellen
HSV-modellen

  • Basert på “kunstmaler-modell”

Blanding med hvitt

Ren farge

Blanding med både hvitt og sort

Gråtoner

Blanding med sort

INF2340 / V05


Hsv generalisert kunstmaler modell

V

Yellow 60°

Green 120°

Cyan 180°

White 1.0

Red 0°

Magenta 300°

Blue 240°

H

S

Black 0.0

HSV = generalisert kunstmaler-modell:

  • Basiskomponenter: H (hue), S (saturation) og V (value)

  • Additiv syntese

  • Fargeskjermer

INF2340 / V05


Fordeler med hsv modellen
Fordeler med HSV-modellen

  • Intuitiv!

  • Enkel geometri (nesten like enkel som RGB)

  • Enkel algoritme for å konvertere til RGB

INF2340 / V05


Ulemper med hsv modellen
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


Rgb vs hsv
RGB vs HSV

RGB (red, green, blue) and

HSV (hue, saturation, value)

colour systems.

INF2340 / V05


Basal maskinarkitektur for rastergrafikk

Display controller

000000001000000000

000000111110000000

000011111111100000

000111111111110000

000110011100110000

000110011100110000

000111111111110000

000000000000000000

Video controller

Basal Maskinarkitektur for Rastergrafikk

Grensesnitt mot vertsmaskin

Grafikk

kommandoer

Interaksjons

data

Mus / Tastatur

Pixel (picture element)

“Frame buffer”

INF2340 / V05


Skjermoppl sning vs pixeldybde
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

INF2340 / V05


24 bits fargebuffer

8 bit

8 bit

8 bit

8 bit

8 bit

8 bit

Blue

Video controller

Green

Red

24 bits fargebuffer

  • (28)3 = 16,777,216 ulike farger i et enkelt pixel

  • “ubegrenset” antall ulike pixler (med dagens skjermoppløsning!)

INF2340 / V05


8 bits fargebuffer alternativ 1

8 bit

Video controller

8 bits fargebuffer - alternativ 1

2 bit

3 bit

3 bit

8 bit

  • 28 = 256 ulike farger i et enkelt pixel

  • 28 = 256 ulike pixler

INF2340 / V05


8 bits fargebuffer alternativ 2 bedre

8 bit

Video controller

8 bits fargebuffer - alternativ 2 (bedre)

0

Colormap

(Lookup Table)

1

255

24 bit

8 bit

24 bit

  • (28)3 = 16,777,216 ulike farger å velge mellom

  • 28 = 256 ulike pixler

INF2340 / V05


Annen bruk av frame buffer et
Annen bruk av frame buffer’et

Bl.a.

  • “Dobbeltbuffering” (animasjon etc.)

  • Z-verdi (skjulte flater)

  • Alpha-verdi (transparens)

    Mer om dette senere!

INF2340 / V05


Grafiske primitiver
Grafiske primitiver

  • Fundamentale

    • Punkt (node)

    • Linje (kant)

  • Mer komplekse

    • Polylinje

    • Polygon

INF2340 / V05


Linje og triangel polygon i vtk
Linje og triangel-polygon i VTK

vtkActor

vtkActor

vtkPolyDataMapper

vtkPolyDataMapper

vtkPolyData

vtkLineSource

vtkFloatPoints

vtkCellArray

vtkIdList

(x, y, z)

ID = 2

(x, y, z)

ID = 0

vtkPolyData

ID = 1

(x, y, z)

INF2340 / V05


Rasterisering
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


Aliasing kap 7 15 vtk boka
Aliasing(kap. 7.15 VTK-boka)

  • Rasteriserte primitiver ser generelt “taggete” ut

5

5

4

4

3

3

2

2

1

1

0

0

0

1

2

3

4

5

6

7

8

9

10

11

0

1

2

3

4

5

6

7

8

9

10

11

Ideelt

I praksis

INF2340 / V05


Antialiasing
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: 0 .. 100% dekning  w = 0 .. 1.

  • 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

0

0

1

2

3

4

5

6

7

8

9

10

11

  • Det finnes også andre metoder

INF2340 / V05


Objekt og bilderom kap 3 6 i vtk boka
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


Bilderom

y

Bildeplan

Transformasjon

Objektrom

x

z

y

z

x

Bilde (f.eks. en PC-skjerm)

Objekt (f.eks. en VTK “actor”)

INF2340 / V05


Transformasjon

y

Transformasjon

Syns-koordinater

Verdens-koordinater

x

y

z

z

y

x

z

y

x

Transformasjon

x

z

z

y

Modell-

koordinater

Skjerm-koordinater

x

INF2340 / V05


Objekt og bilderekkef lge kap 3 1 i vtk boka
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


Scanning av crt cathode ray tube

Video controller

Scanning av CRT (Cathode Ray Tube)

Frame buffer

Scan linje

Elektronkanoner mot

rødt, grønt og blått

fosfor

Vertikal “retrace”

Horisontal “retrace”

INF2340 / V05


ad