VTK - The Visualization Toolkit. Del 1 Introduksjon til VTK VTK. Objektorientering (OO) i C++ Objekt-orientert bibliotek for visualisering Fordeler:

Like dokumenter
Visualiseringsdelen - Oppsummering

Fargebilder. Lars Vidar Magnusson. March 12, 2018

Del 1: Introduksjon til VTK. Visualiseringsdelen - Oppsummering. Del 2: Grafisk databehandling. "Visualization Pipeline" "Rendering Pipeline"

INF 1040 høsten 2008: Oppgavesett 11 Farger (kapittel 15)

INF våren 2017

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

Skalar-til-farge korrespondanse. Del 5 Visualisering av skalarfelt. Regnbue-skalaen

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Kantdeteksjon og Fargebilder

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

Fargetyper. Forstå farger. Skrive ut. Bruke farger. Papirhåndtering. Vedlikehold. Problemløsing. Administrasjon. Stikkordregister

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Grafisk pakke dataseminar ARK6 12.feb 2008

Kartografisk formidling. Fargar og Visuelle variablar

INF Stikkord over pensum til midtveis 2017 Kristine Baluka Hein

Teksturering. Mer om Grafisk Databehandling. Et annet eksempel. Eksempel

Generiske mekanismer i statisk typede programmeringsspråk

Bilder del 2. Farger og fargesyn. Tre-farge syn. Farger og fargerom. Cyganski, kapittel 5. Fargesyn og fargerom. Fargetabeller

AlgDat 10. Forelesning 2. Gunnar Misund

Farger Introduksjon Processing PDF

Introduksjon til objektorientert programmering

INF 1040 høsten 2009: Oppgavesett 11 Farger (kapittel 15) Løsningsforslag Flervalgsoppgaver

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Simulering i IN229. INF2340 Våren 2004 Oversikt over innhold. Del 2: Endelige differanser. Del 1: MyVector. Del 3: ODESolver. Del 4: Bølgeligning

Forelesningsnotater SIF8039/ Grafisk databehandling

Interaksjon mellom farger, lys og materialer

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Veiledning om fargekvalitet

Post-it spørsmål fra timen (Arv og subklasser)

Funksjonell (dataflyt-) modell. Del 3 "Visualization Pipeline" Sammenkobling i praksis. Prosess- og data-objekter. Transformasjon. Representasjon (mer

Semantisk Analyse del III

Kap3: Klassemodellering

Mars Robotene (5. 7. trinn)

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

RF5100 Lineær algebra Leksjon 10

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

Denne veiledningen hjelper deg med å forstå hvordan du kan bruke skriverens funksjoner til å justere og tilpasse fargene på utskriftene.

Anatomien til en kompilator - I

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Repetisjon av histogrammer

UNIVERSITETET I OSLO

Midtveiseksamen Løsningsforslag

d. Utviklingssteg for å utforme animasjonssekvenser:

LØSNINGSANTYDNING EKSAMEN

EKSAMEN I EMNE TDT4230 VISUALISERING FREDAG 10. DESEMBER 2010 KL LØSNINGSFORSLAG

E K S A M E N S O P P G A V E

(MVC - Model, View, Control)

GUI («Graphical User Interface»)

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

2 Om statiske variable/konstanter og statiske metoder.

Velkommen til. INF våren 2016

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Løsningsforslag til kapittel 15 Fargerom og fargebilder

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Gråtonehistogrammer. Histogrammer. Hvordan endre kontrasten i et bilde? INF Hovedsakelig fra kap. 6.3 til 6.6

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Læringsmål for forelesningen

Datatyper og typesjekking

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

SCANNING OG REPARASJON AV GAMLE BILDER Jessheim bibliotek 21. august Minikurs. Adobe Photoshop Elements. v/ Randi Lersveen - Krem reklame

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

EKSAMEN I EMNE TDT4230 VISUALISERING LØRDAG 10. DESEMBER 2005 KL

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

2 Om statiske variable/konstanter og statiske metoder.

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Bildebehandling med Python og EzGraphics

Institutt for informatikk Universitetet i Oslo

TDT4195 Bildeteknikk

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

RF5100 Lineær algebra Leksjon 1

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

PhotoShop Grunnleggende ferdigheter

UNIVERSITETET I OSLO

2D Transformasjoner (s. 51 i VTK boken) Translasjon. Del 2 Grafisk databehandling forts. Rotasjon. Skalering. y x = x + d x, y = y + d y.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

a. Hva er de inverse transformasjonene avfølgende tre transformasjoner T, R og S: θ θ sin( ) cos( ) Fasit: 1 s x cos( θ) sin( θ) 0 0 y y z

Datatyper og typesjekking

Nadine Pedersen GRIT Datamaskinen- kjenn din Mac

Datatyper og typesjekking

Datatyper og typesjekking

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

INF1010 MVC i tekstbaserte programmer

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

Bruk fargemenyen til å justere utskriftskvaliteten og tilpasse fargeutskrifter. Velg et menyelement hvis du vil ha mer informasjon:

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Litt om Javas class-filer og byte-kode

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Forelesning inf Java 1

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

UNIVERSITETET I OSLO

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Grafisk Brukergrensesnitt

Transkript:

VTK - The Visualization Toolkit Del Introduksjon til VTK Objekt-orientert bibliotek for visualisering Fordeler: Fritt tilgjengelig Stor brukergruppe Godt designet, testet og dokumentert (se VTK brukermanual på kurssiden!) 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 / V04 2 VTK Ulemper: Dårlig ytelse (i mange tilfeller) Utnytter ikke visse typer maskinvare for grafikk... Til dels dårlig dokumentasjon... 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 / V04 3 INF2340 / V04 4

Eksempel Litt notasjon for OO-modellering class Adder { public: void Add(int x, int y) {sum = x + y;} int GetSum() {return sum;} private: int sum; }; Adder a; a.add(3, 4); cout << a.getsum() << \n ; A B En klasse Et objekt (instans av klassen 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 B A har kjennskap til B (assosiasjon) (Egentlig: A har behov for å kjenne til B!) A Adder* a2 = new Adder; a2->add(5, 6); cout << a2->getsum() << \n ; INF2340 / V04 5 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) INF2340 / V04 6 A A A osv. Litt OO notasjon (forts.) B A består av nøyaktig én instans av B 0.. B A består av null eller én instans av B 0..* B A består av null eller flere instanser av B VTK - Overordnet Arkitektur..*..*..*..*..*..* 0..* 0.. Tilsvarende for assosiasjon! INF2340 / V04 7 INF2340 / V04 8 2

0.. 0....*..*..*..* 0..*..*..*..*..*..*..* 0..*..*..* Ansvarlig for opptegning av all grafikk i et hovedvindu. Håndterer mus- og tastaturhendelser ( events ). Gir -objektet beskjed om ny opptegning der typisk verdier i objektene er endret. INF2340 / V04 9 INF2340 / V04 0 0.. 0....*..*..*..* 0..*..*..*..*..*..*..* 0..*..*..* 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. Definerer egenskaper for flaten til en 3D aktør, deriblant farge hvordan lys reflekteres representasjonsform ((fylte) polygoner, linjer eller punkter) transparens INF2340 / V04 INF2340 / V04 2 3

0.. 0....*..*..*..* 0..*..*..* Representerer sluttproduktet i i form av et sett med grafiske primitiver. Flere detaljer om kommer senere!..*..*..*..* 0..*..*..* Ansvarlig for å lage et 2D bilde av 3D aktørene...... eller 2D aktørene vtkviewport..*..* 2D INF2340 / V04 3 INF2340 / V04 4 0.. 0....*..*..*..* 0..*..*..*..*..*..*..* 0..*..*..* Definerer en lyskilde for belysning av 3D aktørene. En lyskilde kan bl.a. ha farge og plassering. Definerer synsvinkelen vi betrakter 3D aktørene med. Bl.a. kan graden av perspektiv manipuleres. INF2340 / V04 5 INF2340 / V04 6 4

Instansiering av objekter VTK-objekter skal alltid instansieres med New og slettes med Delete! * rdr = ::New(); rdr->delete(); Pga. Dynamisk minnehåndtering garbage collection Korrekt instansiering av subklasser (se kap. 3.0 i VTK-boka)... INF2340 / V04 7 Sammenkobling av objekter SetRenderWindow 0.. AddRenderer..*..* AddActor..*..*..* SetMapper AddLight..* SetActiveCamera 0..* SetProperty Disse instansieres (og kobles opp) automatisk INF2340 / V04 8 Sammenkobling av objekter i SetInput GetOutput vtkspheresource vtkspheresource* ssphere = vtkspheresource::new(); vtkpolydatamapper* msphere = vtkpolydatamapper::new(); msphere->setinput(ssphere->getoutput()); Mer om dette senere! Typisk hovedstruktur i et C++/VTK program i IN229 // Inkludering av nødvendige filer // *** Hovedprogram *** main() { // - Instansiér og koble sammen, og // evt. objekter. // - Instansiér aktør objekter og deres tilhørende visualization // pipelines // - Koble aktør objektene til objektet/objektene // - Sett opp vinduet og start evt. mus/tastatur interaksjon } Se pekeren Kompilering av... på kurs-siden for et eksempel (sphere.c) INF2340 / V04 9 INF2340 / V04 20 5

VTK så langt Nok informasjon til å lage enkle programmer der fokus ikke er på visualization pipeline Bruk manualsidene! Del 2 Grafisk databehandling INF2340 / V04 2 Lys Elektromagnetisk energi med bølgelengde i intervallet 400- til 700 nm (0-9 m) 0-6 0-3 0-0 0 3 0 6 0 9 0 2 Kosmisk stråling Gamma stråling Røntgen Ultrafiolett Infrarødt Mikrobølge Radar Radio (nm) Fargen til et objekt Definert som bølgelengdene det reflekterer eller transmitterer (genererer selv) Synlig lys 400 450 500 550 600 650 700 (nm) INF2340 / V04 23 INF2340 / V04 24 6

Fargeoppfattelse Defineres typisk vha. tre størrelser: dominerende bølgelengde Akromatisk lys (gråtoner) Ingen dominerende bølgelengde Metning lik null metning ( avstand fra grått) intensitet ( lyshet ) INF2340 / V04 25 INF2340 / V04 26 Ø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) tre typer - mest sensitive for hhv. blått, grønt og rødt 400 700 Bølgelengde (nm) fiolett! INF2340 / V04 27 INF2340 / V04 28 7

Fargesyntese Additiv kombinasjon av farget lys dataskjermer totalfargen lysere (mer intens) og mer mettet enn enkeltkomponentene modeller: RGB, HSV Subtraktiv refleksjon fra kombinasjon av fargede pigmenter printere totalfargen mørkere (mindre intens) og mindre mettet enn enkeltkomponentene modeller: CMY(K) INF2340 / V04 29 Fargemodeller (-rom) RGB-kuben Blue (0, 0, ) Cyan (0,, ) Magenta (, 0, ) White (,, ) Gråtoner Black (0, 0, 0) Green (0,, 0) Red (, 0, 0) Yellow (,, 0) INF2340 / V04 30 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 CMY(K)-kuben Yellow (0, 0, ) Red (0,, ) Green (, 0, ) Black (,, ) Gråtoner White (0, 0, 0) Magenta (0,, 0) Cyan (, 0, 0) Blue (,, 0) INF2340 / V04 3 INF2340 / V04 32 8

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 Fordeler med kubemodellene Enkel geometri Korresponderer direkte med maskinvare (RGB-kanonene i skjermen effektiv! INF2340 / V04 33 INF2340 / V04 34 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 = - 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! HSV-modellen Basert på kunstmaler-modell Blanding med hvitt Ren farge Blanding med både hvitt og sort Gråtoner Blanding med sort INF2340 / V04 35 INF2340 / V04 36 9

HSV = generalisert kunstmaler-modell: V Green 20 Yellow 60 Cyan 80 White.0 Red 0 Blue 240 Magenta 300 Fordeler med HSV-modellen Intuitiv! Enkel geometri (nesten like enkel som RGB) Enkel algoritme for å konvertere til RGB Basiskomponenter: H (hue), S (saturation) og V (value) Additiv syntese Fargeskjermer Black 0.0 H S INF2340 / V04 37 INF2340 / V04 38 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. RGB vs HSV RGB (red, green, blue) and HSV (hue, saturation, value) colour systems. Color RGB HSV Black 0,0,0 *,*,0 White,, *,0, Red,0,0 0,, Green 0,,0 0.33,, Blue 0,0, 0.67,, Sky Blue 0.5,0.5, 0.67,0.5, INF2340 / V04 39 INF2340 / V04 40 0

Basal Maskinarkitektur for Rastergrafikk 00000000000000000 0000000000000 000000000 0000000 00000000000 00000000000 0000000 000000000000000000 Frame buffer Grensesnitt mot vertsmaskin Grafikk kommandoer Display controller Video controller Interaksjons data Mus / Tastatur Pixel (picture element) INF2340 / V04 4 Skjermoppløsning vs. pixeldybde Skjermoppløsning = antall pixler Pixeldybde = antall bit pr pixel F.eks. en skjerm med oppløsning 280x024 og pixeldybde 24, krever 3.75 MB RAM Skjermoppløsning Pixeldybde INF2340 / V04 42 24 bits fargebuffer s fargebuffer - alternativ Video controller Video controller 2 bit Blue 3 bit Green 3 bit Red (2 8 ) 3 = 6,777,26 ulike farger i et enkelt pixel ubegrenset antall ulike pixler (med dagens skjermoppløsning!) 2 8 = 256 ulike farger i et enkelt pixel 2 8 = 256 ulike pixler INF2340 / V04 43 INF2340 / V04 44

s fargebuffer - alternativ 2 (bedre) 0 Colormap (Lookup Table) 24 bit (2 8 ) 3 = 6,777,26 ulike farger å velge mellom 2 8 = 256 ulike pixler 255 Video controller 24 bit Annen bruk av frame buffer et Bl.a. Dobbeltbuffering (animasjon etc.) Z-verdi (skjulte flater) Alpha-verdi (transparens) Mer om dette senere! INF2340 / V04 45 INF2340 / V04 46 Grafiske primitiver Linje og triangel-polygon i VTK Fundamentale Punkt (node) Linje (kant) Mer komplekse Polylinje Polygon vtkpolydatamapper vtklinesource vtkpolydata vtkpolydata vtkpolydatamapper vtkfloatpoints vtkcellarray vtkidlist (x, y, z) ID = 2 (x, y, z) ID = 0 (x, y, z) ID = INF2340 / V04 47 INF2340 / V04 48 2

3D primitiv Projisering 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) Aliasing (kap. 7.5 VTK-boka) Rasteriserte primitiver ser generelt taggete ut 5 5 4 4 Rasterisering 3 2 3 2 2D primitiv Rasterisert 2D primitiv 0 0 2 3 4 5 6 7 8 9 0 Ideelt 0 0 2 3 4 5 6 7 8 9 0 I praksis INF2340 / V04 49 INF2340 / V04 50 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.. 00% dekningw = 0... Resultatfargen i pixelet er da essensielt gitt ved wf + (-w)b, der f og b er hhv. for- og bakgrunnsfargen. 5 4 3 2 0 0 70% av pixel-areal w = 0.7 2 3 4 5 6 7 8 9 0 Objektrom Objekt- og bilderom (kap 3.6 i VTK-boka) Modell-koordinater (model-) Verdens-koordinater (world-) Bilderom Syns-koordinater (view-) Skjerm-koordinater (display-) Det finnes også andre metoder INF2340 / V04 5 INF2340 / V04 52 3

Objektrom z Transformasjon y Bildeplan Bilderom x Transformasjon Transformasjon Verdens-koordinater y z y Syns-koordinater x z y z y y z x x x Objekt (f.eks. en VTK actor ) Bilde (f.eks. en PC-skjerm) Modellkoordinater z x x y z Transformasjon Skjerm-koordinater INF2340 / V04 53 INF2340 / V04 54 Objekt- og bilderekkefølge (kap. 3. 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. Scanning av CRT (Cathode Ray Tube) Frame buffer Video controller Elektronkanoner mot rødt, grønt og blått fosfor Scan linje Vertikal retrace Horisontal retrace INF2340 / V04 55 INF2340 / V04 56 4