Del 1 introduksjon til vtk
This presentation is the property of its rightful owner.
Sponsored Links
1 / 56

Del 1 Introduksjon til VTK PowerPoint PPT Presentation


  • 63 Views
  • Uploaded on
  • Presentation posted in: General

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!

Download Presentation

Del 1 Introduksjon til VTK

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


Del 1 introduksjon til vtk

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


Del 1 introduksjon til vtk

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


Del 1 introduksjon til vtk

Ø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


Del 1 introduksjon til vtk

  • tre typer - mest sensitive for hhv. blått, grønt og rødt

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


Del 1 introduksjon til vtk

  • 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


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


Del 1 introduksjon til vtk

  • 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


Del 1 introduksjon til vtk

Bilderom

y

Bildeplan

Transformasjon

Objektrom

x

z

y

z

x

Bilde (f.eks. en PC-skjerm)

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

INF2340 / V05


Del 1 introduksjon til vtk

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


  • Login