Del 3 "Visualization Pipeline"
Funksjonell (dataflyt-) modell Transformasjon Konvertere data fra opprinnelig form til grafiske primitiver (typisk gjennom flere ledd) Representasjon (mer om dette i neste del!) 12/3-03 IN229 / V03 / Dag 7
Prosess- og data-objekter = dataflyt prosess-objekter: source filter filter mapper data-objekter: data data data forenklet notasjon: source filter filter mapper 12/3-03 IN229 / V03 / Dag 7
Sammenkobling i praksis source filter mapper GetOutput SetInput GetOutput SetInput GetInput GetInput GetSource GetSource data data data Kobling 2: x->SetInput(y->GetOutput()) Kobling 1: Et data-objekt opprettes som regel automatisk av "source" objektet. Merk: Et filter er en spesiell type "source"! 12/3-03 IN229 / V03 / Dag 7
Type-matching ? ? ? ? Eksempel: vtkProcessObject vtkProcessObject vtkProcessObject vtkDataObject vtkSource vtkSource vtkMapper vtkDataSet vtkFilter ? ? ? ? S F M D Eksempel: Filter-typen vtkWarpScalar skal ha et data-objekt av typen vtkPointSet som input. Et data-objekt av typen vtkPolyData går også bra siden dette er en spesialisering av vtkPointSet! 12/3-03 IN229 / V03 / Dag 7
Eksekvering av "pipeline" (oppdatering av data-objekter) C G A B D E Hvis D modifiseres ... F ... må denne delen av "pipeline" re-eksekveres (for å oppdatere E og F)! 12/3-03 IN229 / V03 / Dag 7
Med andre ord ... Hvis E må oppdateres ... C G Hvis E må oppdateres ... A B D E F ... må evt. hele denne delen av "pipeline" re-eksekveres! 12/3-03 IN229 / V03 / Dag 7
Implisitt ("demand driven") synkronisering Hvert prosess-objekt (vtkProcessObject) som kan ta "input" har en metode Update som kalles rekursivt bakover i "pipeline" for å oppdatere alt som har konsekvens for objektet selv. Hvert "source"-objekt (vtkSource) har en metode Execute som modifiserer (re-genererer) "output". Prosess- og data-objekter holder rede på når de sist ble modifisert og/eller utførte Execute. (Dermed utføres Execute aldri unødvendig!) Update kalles vanligvis automatisk hos mappere hver gang en scene må tegnes opp på nytt. Det er også mulig å kalle Update manuelt hos et vilkårlig objekt i en "pipeline"! 12/3-03 IN229 / V03 / Dag 7
Fil: POLYDATA uten attributt-data vtkPolyDataReader vtkPolyDataNormals vtkPolyDataMapper 12/3-03 IN229 / V03 / Dag 7
Fil: POLYDATA uten attributt-data vtkPolyDataReader vtkPolyDataNormals vtkElevationFilter vtkDataSetMapper 12/3-03 IN229 / V03 / Dag 7
Fordi ... vtkElevationFilter vtkElevationFilter GetOutput() GetPolyDataOutput() vtkDataSetMapper vtkPolyDataMapper Alternativ vtkDataSet Fordi ... vtkMapper vtkDataSetMapper vtkPolyDataMapper vtkPolyData 12/3-03 IN229 / V03 / Dag 7
Fil: POLYDATA uten attributt-data vtkPolyDataReader vtkPolyDataNormals vtkConeSource vtkElevationFilter vtkGlyph3D vtkDataSetMapper vtkPolyDataMapper 12/3-03 IN229 / V03 / Dag 7
vtkStructuredPointsReader Fil: STRUCTURED_POINTS med skalar-verdier vtkStructuredPointsReader vtkDataSetMapper 12/3-03 IN229 / V03 / Dag 7
vtkStructuredPointsReader Fil: STRUCTURED_POINTS med skalar-verdier vtkStructuredPointsReader vtkGeometryFilter vtkWarpScalar GetPolyDataOutput() vtkPolyDataNormals Fordi det ikke fins noen vtkDataSetNormals klasse! vtkPolyDataMapper 12/3-03 IN229 / V03 / Dag 7
Hvorfor et vtkGeometryFilter ? vtkStructuredPointsReader "output" av typen vtkStructuredPoints "input" av typen vtkDataSet vtkGeometryFilter "output" av typen vtkPolyData "input" av typen vtkPointSet vtkWarpScalar vtkDataSet vtkStructuredPoints vtkPointSet vtkPolyData 12/3-03 IN229 / V03 / Dag 7
vtkStructuredPointsReader Fil: POLYDATA uten attributt-data Fil: STRUCTURED_POINTS med skalar-verdier vtkPolyDataReader vtkStructuredPointsReader Genererer polygonflate med høyde = 0. vtkGeometryFilter Hevet polygonflate direkte fra fil! Hever polygonflaten i henhold til skalarverdiene. vtkWarpScalar vtkPolyDataNormals For Gouraud- sjattering vtkPolyDataNormals For Gouraud-sjattering Skalarverdier (for farge-avbilding) direkte fra fil! (Kopieres gjennom "pipeline".) vtkElevationFilter Genererer skalarverdier (for farge-avbilding). vtkPolyDataMapper vtkPolyDataMapper 12/3-03 IN229 / V03 / Dag 7
Del 4 Datarepresentasjon
Diskrete data og interpolasjon Et datasett er diskret (endelig mengde med numeriske verdier) Interpolasjon brukes for å finne verdier i vilkårlige mellomliggende punkter Gitt informasjon Interpoleres fra gitt informasjon 12/3-03 IN229 / V03 / Dag 7
Punkt Definert i det vanlige (Euklidske) rommet 12/3-03 IN229 / V03 / Dag 7
Celle Gruppe av punkter med veldefinerte naboforhold Noen vanlige celletyper (VTK definerer i alt 12 typer): Node Polygon Linje Tetraeder Polylinje Hexaeder Triangel MERK: Ofte skjer interpolasjon på grunnlag av celletype! 12/3-03 IN229 / V03 / Dag 7
Geometri Punkters romlige posisjon Ulik geometri! Lik geometri! x y x 12/3-03 IN229 / V03 / Dag 7
Topologi Naboforhold mellom punkter uavhengig av geometri x y x y x y x y Lik topologi! Ulik topologi! 12/3-03 IN229 / V03 / Dag 7
En gammel kjenning uvanlig topologi vanlig topologi 12/3-03 IN229 / V03 / Dag 7
Data-attributter Skalarer Vektorer (Flate-)Normaler ... F.eks.: temperatur, trykk, fuktighet ... Vektorer F.eks.: vindretning og -styrke, gradient i skalarfelt ... (Flate-)Normaler Spesiell type vektor med lengde = 1 ... 12/3-03 IN229 / V03 / Dag 7
Et VTK datasett 1) Organiserende struktur Geometri Topologi Punkter 2) Data-attributter (vanligvis lokalisert i punkter) Punkter Celler Skalarer Vektorer Normaler ... 12/3-03 IN229 / V03 / Dag 7
Structured Points - Regulær (implisitt) geometri og topologi Dårlig Bra Lagringsplass Ytelse til visualiserings-algoritmer Lokal forfining Tilpasning til ulike former 12/3-03 IN229 / V03 / Dag 7
Rectilinear Grid - Delvis regulær geometri -Regulær topologi Dårlig Bra Lagringsplass Ytelse til visualiserings-algoritmer Lokal forfining Tilpasning til ulike former 12/3-03 IN229 / V03 / Dag 7
Structured Grid - Irregulær geometri (punkter angis eksplisitt) - Regulær topologi Dårlig Bra Lagringsplass Ytelse til visualiserings-algoritmer Lokal forfining Tilpasning til ulike former 12/3-03 IN229 / V03 / Dag 7
Unstructured Grid - Irregulær geometri og topologi (både punkter og celler angis eksplisitt) Dårlig Bra Lagringsplass Ytelse til visualiserings-algoritmer Lokal forfining Tilpasning til ulike former 12/3-03 IN229 / V03 / Dag 7
Polygonal Data - Cellene har 2D topologi - Forøvrig samme egenskaper som Unstructured Grid Dårlig Bra Lagringsplass Ytelse til visualiserings-algoritmer Lokal forfining Tilpasning til ulike former 12/3-03 IN229 / V03 / Dag 7
vtkDataSet vtkStructuredPoints vtkRectilinearGrid vtkPointSet vtkStructuredGrid vtkUnstructuredGrid vtkPolyData 12/3-03 IN229 / V03 / Dag 7