Institut für Computervisualistik Universität Koblenz 06.07.2012
Inhaltsverzeichnis 1 Literatur 2 Wiederholung 3 DVR
Volumen Literatur Real-Time Volume Graphics Volumenrendering CG Shader Beispiele
Volumen Wiederholung Volumendatensätze 3D Repräsentation Anordnung auf einem 3D Grid Voxel befinden sich an den Gitternetzpunkten Acht benachbarte Voxel bilden eine Volumenzelle
Trilineare Interpolation Trilineare Interpolation Trilinear Interpolation Bestimmung von Samplingpunkten innerhalb einer Voxelzelle Bilinearen Interpolationen werden hintereinander ausgeführt
Transferfunktion Transferfunktion Transferfunktion Mapping von Skalarwerten auf RGBA-Werte
Gradienten Gradienten Gradienten Pendant zur Normale Berechnung durch Zentraldifferenzen
Volumenvisualisierung Volumenvisualisierung Indirekte Volumenvisualisierung Zwischenschritt für die Visualisierung Bestimmung eines Polygonmesh Isosurfaces Polygone werden gerendert, anstatt die Daten selbst Direkte Volumenvisualisierung Volumendatensatz wird direkt visuell dargestellt Keine Generierung von Metadaten
IVR Indirektes Volumenrendering Marching Cubes Surface-based Volume Rendering Isosurface, Isovalue Triangulierung für jede Voxelzelle
Volume Rendering Integral Volume Rendering Integral Wie bestimmt man die Strahlungsenergie entlang des Strahles? I (s) = I (s 0 )e τ(s0,s) s + q( s)e τ( s,s) d s s 0 q( s) Aktive Emission an Punkt s e τ( s,s) Absorbtion entlang s s
DVR Direktes Volumenrendering 2D Textures Volumen wird in 2D Texturen gespeichert Texture Mapping auf Proxy Geometry Nachteil: Artefakte durch bilineare Interpolation
Compositing Compositing Compositing Viele Sampling-Farbwerte tragen zum Pixelfarbwert bei Lösen des Volumenrendering Integrals Front-to-Back oder Back-to-Front Bei Texture-based Rendering Realisierung durch Blending
3D Texture-Mapping 3D Texture-Mapping 3D Texture-Mapping 3D Texturen ermöglichen trilineare Interpolation Volumen als 3D Textur gespeichert Mehr Möglichkeiten fürs Texture Mapping Adaptives Resampling des Volumendatensatzes
3D Texture-Mapping 3D Texture-Mapping Geometry Setup Proxy-Geometry: Slices werden Viewport-Aligned ausgerichtet Bei Veränderung der Blickrichgung müssen sich die Slices anpassen Clipping der Proxy Geometry am Bounding Volume
3D Texture-Mapping 3D Texture-Mapping Texture Setup Passt die gesamte 3D Textur in den Grafikkartenspeicher? OpenGL proxy texture Was wenn nicht? Bricking, Aufteilen der Textur in Teilstücke
3D Texture-Mapping 3D Texture-Mapping - Fazit Vorteile Schnelle trilineare Interpolation Nachteile Große Volumen benötigen Bricking-Ansätze Richtige Größe der Brick-Volumen
Raycasting Texture-based Volume Rendering Bisher Alle bisherigen DVR Verfahren Slice-basiert Erfolg hängt stark von der Qualität des Volumens und der Proxy Geometrie ab Integration von Beschleunigunsansätzen ist schwierig Neuer Ansatz Fakt: Eine große Anzahl an generierten Fragments tragen nicht zum finalen Bild bei (Sichtbar: 0.2-4 %) Bildbasierter Ansatz erscheint sinnvoller Einfache Implementierung, sehr flexibel, gut optimierbar
Raycasting Texture-based Volume Rendering Bisher Alle bisherigen DVR Verfahren Slice-basiert Erfolg hängt stark von der Qualität des Volumens und der Proxy Geometrie ab Integration von Beschleunigunsansätzen ist schwierig Neuer Ansatz Fakt: Eine große Anzahl an generierten Fragments tragen nicht zum finalen Bild bei (Sichtbar: 0.2-4 %) Bildbasierter Ansatz erscheint sinnvoller Einfache Implementierung, sehr flexibel, gut optimierbar
Raycasting Raycasting Idee Lösen des Volumenrendering-Integrals entlang Strahlen vom Augpunkt aus Analogie Analog zu Raytracing: vom Augpunkt aus Strahlen pro Pixel durch das Volumen verfolgen Raytracing Schnitt mit Objekten in einer Szene Verfolgung von Sekundärstrahlen Raycasting Ein Volumen wird betrachtet Alle Voxel entlang des Strahles können gleichermaßen beitragen
Raycasting Raycasting
Raycasting Raycasting - Pseudocode Determine volume entry position Compute ray direction While ( ray position is in volume ) Access data value at current position Compositing of color and opacity Advance position along ray End while
Raycasting GPU-Raycasting Raycasting Vorteil: Strahlen sind voneinander unabhängig Berechnungen pro Strahl Berechnungen pro Pixel Fragment Verarbeitung der GPU Multiple Pixel Pipelines Entlang des Strahles werden Sampling Punkte im Volumen bestimmt Für Samplingpunkte werden Volumendaten triliear interpoliert (siehe VisI) Single-Pass GPU Raycasting ab Shader Version 3.0 möglich
Raycasting GPU-Raycasting Strahlenbestimmung Strahl parametrisiert: V (t) = o + t v Rendern von Bounding Cube Vektor zwischen Kameraposition und Vertex in Weltkoordinaten bestimmen Viewvektor Vertex Koordinate als varying übergeben, wird für Fragments interpoliert Im Fragmentshader Viewvektor bestimmen
Raycasting GPU-Raycasting Strahlenbestimmung Strahl parametrisiert: V (t) = o + t v Im Fragmentshader entlang des Strahles durch das Volumen traversieren und Werte aus der Textur akkumulieren Bounding Box Beschränkung muss übergeben werden, um Traversierungsabbruch zu ermitteln
Beschleunigungen Beschleunigungen Raycasting - Beschleunigung Eine große Anzahl von Samples tragen nicht zur endgültigen Pixelfarbei bei Slice-Based Volume-Rendering: Schwierigkeiten bei Beschleunigungsalgorithmen Raycasting: Beschleunigungen einfach zu integrieren Strahlen können unabhängig voneinander betrachtet werden
Beschleunigungen Beschleunigungen Early Ray Termination Entlang Strahl den Alpha-Wert accumulieren Ende der Strahlenverfolgung wenn Alpha-Wert größer einem Threshold ist ( 1) Abbruchkriterium für Strahlverfolgens Dahinterliegende Objekte tragen nicht zur Farbe des Pixels bei
Beschleunigungen Beschleunigungen Empty Space Skipping Üblicherweise große transparente Bereiche im Volumen Keinen Beitrag zum Farbwert des Pixels Diese Bereiche werden übersprungen Benötigt vorherige Volumensegmentierung um leere Bereiche zu bestimmen
Beschleunigungen Beschleunigungen Empty Space Skipping Unterteilung des Volumens in kleine Blöcke Für jeden Block Sichtbarkeit bestimmen Berechne min/max Wert für jeden Block mithilfe TF Rendering des Blockes nur wenn er nicht transparent ist Neues Bounding Volume Vorberechnungen bilden im Vergleich nur geringen Overhead
Zusammenfassung Volumenrendering Indirektres Volumenrendering Gereniert eine Art Zwischenrepräsentation der Daten, die danach gerendert wird Polygonrepräsentation eines Isosurfaces Algorithmus: Marching Cubes Indirekt, weil es nicht das originale, gesamte Volumen darstellt Komplexität abhängig von: Anzahl der Polygone, nicht von der Auflösung der Bildebene
Zusammenfassung Volumenrendering Direktes Volumenrendering Das Volumen wird direkt dargestellt, ohne die Erstellung von Metadaten Algorithmen: Texture Mapping (2D, 3D), Raycasting Compositing: Voxelwerte des Volumens entlang eines Strahles für ein Pixel akkumulieren Beschleunigungsmöglichkeiten: Early Ray Termination, Empty Space Skipping Komplexität abhängig von: Anzahl der Voxel eines Datensatzes und Anzahl der Pixel in der Bildebene
Zusammenfassung Quellen Direktes Volumenrendering ACM SIGGRAPH ASIA 2008, Hardwinger Real-Time Volume Graphics, Weiskopf, Hardwinger