Inhalt:
Begriffe
Plattformen und Portabilität (UNIX - NT)technische Anforderungen
Darstellungs- und Beleuchtungsmodelle
Modellierung virtueller Welten mit Sense 8 World ToolkitRendering - Pipeline von PHIGS
Demonstrationen auf Windows NT und SGI Octane
Was ist Computergrafik ?
Wesentliche Teilgebiete der Bilderzeugung :
3D-Modell : computerinterne Beschreibung von Objekten als Gesamtheit von geometrischen Primitiven und Attributen
3D-Szene : ein 3D-Modell, welches um Beleuchtungs- und Kamerabeschreibungen erweitert wurde
3D-Welt : eine interagierbare 3D-Szene mit Simulationsfunktionalität
3D-Grafik : Berechnung rastergrafischer Bilder aus einer mathematischen, computerinternen Beschreibungsform (Modell, Szene)
3D-Animation : Berechnung einer rastergrafischen Bildfolge bei gleichzeitiger Veränderung modell- bzw. szenenbeschreibender Parameter (Topologie, Geometrie, Beleuchtung, Ansicht)
Virtuelle Realität : Realitätsgetreue Nachbildung bzw. Simulation eines Weltausschnittes unter Einbeziehung des Nutzers ( Visualisierung, Interaktion, physikalische Eigenschaften, ... )
Die Qualität der Darstellung ist abhängig von
Randbedingung : texturierte Oberflächen ab 640*480
Bildpunkten sinnvoll nutzbar
PC und Workstationbereich : 1280*1024 Bildpunkte üblich
Monitore : 17 - 21 Zoll
HMDs : TFT-Displays mit bis zu 640*480 Bildpunkten
Randbedingung : Shading ab 256 Farben
üblich : True Color
Randbedingung : stetige Bewegung wird empfunden ab ca.
15 Fps
aber : Hauptschwachpunkt heutiger Systeme
interlaced Verfahren : Aufwand bleibt ungefähr gleich,
aber nur für Shutterbrillen geeignet
non interlaced Verfahren : Aufwand verdoppelt sich
Lokale Beleuchtungsmodelle (Shading) berechnen dabei die Lichtverhältnisse an einem bestimmten Punkt der Szene unter Verwendung der für diesen Punkt gültigen Reflexionseigenschaften, dem Normalenvektor des Punktes und den Vektoren zu den Lichtquellen und dem Augpunkt.
Globale Beleuchtungsmodelle (Raytracing, Radiosity) beziehen zusätzlich die Lichtverhältnisse an anderen Stellen der Szene ein. Das sind z.B. Verdeckungen einer Lichtquelle oder Lichtreflexionen an anderen Objekten.
Gegenüberstellung der Verfahren
Merkmal Shading Raytracing Radiosity Beleuchtungsmodell lokal global global Beleuchtungsinterpolation Flat / Gouraud / Phong Phong Flat / Gouraud Schatten nein ja, aber hart ja, real aussehend Transparenz stark eingeschränkt ja nein Brechung nein ja nein Spiegelung nein ja nein
Darstellungs- und BeleuchtungsverfahrenAls erstes muß erklärt werden, daß nahezu alle Grafiksysteme (außer Raytracer) die modellierten Objekte der zu visualisierenden 3D - Szene in kleine Polygone (Facetten) zerlegen. Entsprechend des Umlaufsinns der Polygone werden diesen Normalenvektoren zugeordnet, die u.a. die Vorder- und Rückseite definieren.
3D-Modell --> PolygonzerlegungEs werden jeweils nur die begrenzenden Kanten der beschreibenden Flächenstücke angezeigt.
Vorteil : Sehr schneller und einfacher Algorithmus.
Nachteil : Der Informationsgehalt der Darstellung ist sehr gering, Beleuchtung und Texturen haben keine Wirkung.
Beispiel :
![]()
Mittels der Flächennormale wird für jedes Flächenstück die Beleuchtung der Szene durchgerechnet. Das Ergebnis ist die Farbe, mit der das gesamte Flächenstück gezeichnet wird.
![]()
Vorteil : relativ schneller und einfacher Algorithmus, einmal pro Facett zu durchlaufen
Nachteil : Bei relativ großen Flächenstücken wirkt das Modell in seiner Ansicht mehr oder weniger kantig. Durch spekulare Reflexion entstehende Glanzpunkte werden nicht korrekt bzw. gar nicht dargestellt. Texturierte Darstellungen machen keinen Sinn.
Beispiel :
![]()
Gouraud Shading, smooth shading von OpenGL
Im Gegensatz zum Flatshading werden die Normalenvektoren nicht für die Flächenstücke, sondern für alle Eckpunkte ( vertex ) bestimmt. Für jeden Eckpunkt erfolgt die Berechnung des Farbwertes in Analogie zum Flatshading. Schließlich werden die ermittelten Farbwerte über das Facett interpoliert.
![]()
Vorteil : Die Qualität der Darstellung ist deutlich besser als beim Flatshading. Gekrümmte Oberflächen wirken glatter.
Nachteil : Der Rechenaufwand ist deutlich höher als beim Flatshading. Spekulare Reflexionen werden ebenfalls nicht korrekt dargestellt.
![]()
Beispiel :
![]()
Phong Shading, nicht Bestandteil von OpenGL
In Erweiterung des Gouraud-Shading werden die Normalenvektoren, die für die Eckpunkte definiert sind, über das Facettinnere interpoliert, d.h. auf jedem Pixel erfolgt die Berechnung der Normalen und anschließend des zugehörigen Farbwertes.
![]()
Vorteil : Die Darstellung wirkt sehr realistisch, Spekulare Reflexionen werden korrekt dargestellt.
Nachteil : Der Aufwand steigt drastisch, so daß dieses Modell von geläufigen Grafiksystemen nicht unterstützt wird.
Lichtquellen
Man unterscheidet in der 3D-Grafik zwischen vier Arten von Lichtströmen bzw. seinen Quellen :
- ambientes Licht (Umgebungs- oder Streulicht)
- keine Richtung bzw. Herkunft beschreibbar, hat keine reale Entsprechung
- dient zur Modellierung einer Grundhelligkeit- gerichtetes Licht
- Lichtstrom kommt aus einer bestimmten Richtung ( Vektor )
- besteht aus aus parallelen Strahlen, d.h. hat einen konstanten Einfallswinkel auf ebene Flächen- positioniertes Licht (Punktlicht)
- Licht strahlt in alle Richtungen ausgehend von einem Punkt mit gleicher Intensität
- Einfallswinkel auf Ebenen ändert sich- Spotlicht ( Strahler )
- Punktlichtquelle mit Öffnungswinkel
- produziert einen idealen Lichtkegel in eine Richtung mit einem Öffnungswinkel
- Einfallswinkel auf Ebenen ändert sich
Reflexionsarten
Die endgültige Berechnung des Farb- und Helligkeitswertes eines bestimmten Punktes in der Szene ergibt sich aus der Summe des an diesem Punkt reflektierten Lichtes.Licht := ambienter Anteil + diffuser Anteil + spekularer Anteil
Raytracingalgorithmen berücksichtigen weiterhin Lichtanteile aus Brechung und Transparenz, welche beim Shading keine Anwendung finden. OpenGL kann mit ALPHA-Blending arbeiten, welches zur Simulation von Transparenz benutzt wird.
- ambiente Reflexion : Grundhelligkeit der Szene, an allen Punkten der Oberfläche gleich
Ambienter Anteil := Intensität ambientes Licht * ambienter Reflexionskoeffizient
- diffuse Reflexion : Helligkeitsverlauf auf der Oberfläche, d.h. gleichmäßige Reflexion des auftreffenden Lichtes in alle Richtungen
Diffuser Anteil := Intensität Punktlichtquelle * diff. Reflexionskoeffizient * COS(Einfallswinkel)
- spekulare Reflexion : Glanzreflexionen auf einer Oberfläche, d.h. je glatter die Oberfläche, desto kleiner und intensiver die Glanzlichter
Spekularer Anteil := Intensität Spotlichtquelle * spek. Reflexionskoeffizient * COSspekularer Exponent(Einfallswinkel)
Rendering - Engines im Vergleich
OpenGL und Mesa
- 5-stufige Pipeline-Architektur zur Berechnung der endgültigen Farbgebung
- Vorteile :
- sehr leistungsfähig hinsichtlich der verarbeitbaren Primitive ( Polygon-basierte und
analytisch beschriebene Kurven und Flächen )- Flat- und Gouraud Shading
- Depth Cueing
- Texturen
- Antialiasing
- atmosphärische Effekte
- Transparenz über Alpha-Blending
- sehr gute Hardwareunterstützung
- Nachteile :
- unterstützt nur RGB
- Programmierung aufwendiger als im PHIGS
- niedriges Abstraktionsniveau
![]()
- Primitive
einfache vertexbasierte Primitive :analytisch beschriebene Primitive (Freiformkurven und -flächen) :
- Punkte
- Linien
- Polygone
- komplexe polygonbasierte Primitive ( Triangle Strip, Fan, Mesh, ... )
- GL-Utility-Lib ( GLU ) : Kreisring ( Quadric ), Ringsegment, Zylinder, Kugel, ...
- nach Bézier, trimmbar
- Non Uniform Rational B-Splines ( NURBS ), trimmbar
- Vertices
Algorithmische Tricks - Was bringt was ?Vertices sind Punkte im Raum, die die Geometrie und Beschaffenheit von Primitiven beschreiben.Vertices sind implizit oder explizit in Befehlen enthalten und werden beschrieben durch :
- Koordinaten ( 2D, 3D )
- optional :
- Farbdefinition
- Normalenvektor
- Texturkoordinaten
- Materialdefinition
- Display List
Zwischenspeicher für Ausgabebefehle ( Primitive ) zur verzögerten Ausgabe, optional.
- Evaluatoren
Algorithmen zur Approximation analytisch beschriebener Primitive ( Bézier, NURBS ), d.h. Umrechnung der analytischen Beschreibung in Vertex-Daten.
Ergebnis : einheitliche Datenform Vertex
- Transformationen, Beleuchtung, Clipping
Zusammengesetzte Bearbeitungsstufe zur Umsetzung der Vertex-Daten in normierte 2D-Polygone
Transformation :
- Modelltransformation der Vertex-Koordinaten im 3D ( Rotation, Skalierung, Translation )
- Transformation und Normalisation der Normalenvektoren
- Transformation der Texturkoordinaten
Ergebnis : Facettierte 3D-Szene in der richtigen Größe und LageBeleuchtung :Clipping :Ergebnis : Facettierte 3D-Szene mit einer korrekten Farbgebung entsprechend der Kamera- und Beleuchtungssituation
- Durchrechnen der Beleuchtungsmodells für jedes Vertex
Rasterisierung :Ergebnis : Projizierte und modifizierte Vertex-Daten mit Tiefeninformation
- Berechnung der Projektionstransformation ( parallel / perspektivisch )
- Abschneiden der Objekte im 2D an den Grenzen der Darstellungsfläche
Z-Value : Abstand des Vertex von der Kamera
Fragmentoperationen :Fragment : kleines Quadrat als Vorstufe für ein Pixel
- Zerlegung der durch die Vertex-Daten beschriebenen Primitive in Fragmente
[Koordinaten (x,y), Farbdefinition, Z-Value und Texturkoordinaten]Ergebnis : Projizierte Fragmentdarstellung der Primitive
noch zu tun :
- Texturmapping
- Anitaliasing
- atmosphärische Effekte
Jedes Fragment durchläuft eine Pipeline von Fragmentoperationen, die zur endgültigen Pixelfarbe führen.Bildspeicher :
- SCISSOR-Test : rechteckige Maskierung der Zeichenfläche, d.h. es wird nur innerhalb der Maske gezeichnet
- Alpha-Test : Fragmente mit ungenügenden Alpha-Werten werden nicht weiter behandelt.
- Stencil-Test : Maskierung der Zeichenfläche mit einer beliebigen Schablone ( Stencil-Buffer )
- Depth-Test : Z-Buffer-Algorithmus, Berechnung der Verdeckungsproblematik
- Blending : Simulation der Transparenz durch Mischung mit der vorherigen Pixelfarbe anhand des Alpha-Wertes
- Dithering : Reduzierung der Farbtiefe
- Color-Indexing : Abbildung der Farbwerte auf eine Farbtabelle
Fragmente, die durch die Fragment-Pipeline kommen, werden in den Bildspeicher geschrieben. Dieser kann im Double-Buffer-Modus arbeiten.
Feature Anwendung Perspektivisch korrigierte Texturen Reduzierung der Polygone in Bezug auf Z-Buffering und Erleichterung des HLHSR < Level-of-detail MIP-Mapping Verhindert das Texture-Aliasing Bi-linear and advanced texture filtering Eliminiert die Pixelization-Effekte Texture compositing and morphing Ermöglicht realitätsnahe Beleuchtungseffekte Animated texturing macht Videoströme als Texturen Anti-aliasing Kantenglättung, keine Treppeneffekte Gouraud modulation Spekulare and diffuse Beleuchtungseffekte durch zufällige Manipulation der Normalenvektoren Sub-pixel correction Verhindert Darstellungsfehler für Polygone und Texturen Per-pixel alpha blending effects Transparenz und atmosphärische Effekte ( Nebel )
Beispielprogramm : Texturen unter OpenGL ( MS KB )
Hardwareunterstützung der OpenGL Rendering Pipeline
Notwendige Speicher der Rendering-Pipeline :
- Front- und Back Colour Buffer - eigentliche Bildspeicher, nehmen Pixelwerte auf, double buffer
- Alpha-Buffer, Alpha-Planes pro Colour Buffer zur vollständigen Farbdefinition
- Z-Buffer
- Accumulation Buffer - für Animationseffekte
- Stencil Buffer - pro Farbe für die Schablone ( stencil )
- Left- und Right Colour Buffer - für stereoskopische Systeme
Speicherplatz
bei Auflösung 1280*1024 werden gebraucht : 16 MB (2* 8 MB double buffer) VRAM + 10 MB DRAM
Speicherbereich Tiefe in Bit Speicherform R G B 8 + 8 + 8 VRAM Alpha 8 VRAM Stencil 1 + 1 + 1 + 1 VRAM Z-Buffer 16 VRAM Accum R G B A 16 + 16 + 16 + 16 DRAM Notwendige Anforderungen an die Graphics Engine :
Sinnvolle Ergänzungen :
- Double Buffering
- Hardware Z-Buffer
- Hardware Gouraud- und Flatshading
- Hardware Texture Mapper und -cache
- Hardware-Antialiasing
- Hardware Alpha-Blending
Aktuelle Prozessoren aus dem PC-Sektor :
- PCI oder AGP Boards ab ca. DM 300,-
- 3D-Unterstützung für :
- Perspektivisches Texture Mapping
- Bi-Lineares Texture Filtering
- Level of Detail MIP Mapping von Texturen
- Sub-Pixel correction
- Gouraud- und Flatshading
- 24 Bit interner RGB Framebuffer und 16-bit dithered RGB frame buffer
- Texturcache für 8 bit und 16 bit Texturen
- Anti Aliasing
- Alpha Blending
- Depth Cueing
- Per Pixel : Nebel, Transparenz
- 8MB VRAM-Support
- Leistung : ca. 1Mio texturierte , z-buffered, fogged, blended Dreiecke pro Sekunde ( ohne Gouraud-Shading )
- Anwendung : Spielesektor
- Karten :
- Diamond Monster 3D ( Add on )
- miro Highscore 3D
- Cardex Dragon
- Hercules Stingray
Silicon Graphics Octane / MXI
- PCI oder AGP Boards ab ca. DM 4.500,-
- state of the art 3D-Unterstützung für :
- volle Umsetzung der Rendering Pipeline nach OpenGL 1.1 in Hardware
- Co-Prozessoren GLINT Delta oder GLINT Gamma ( Geometrieprozessoren ) unterstützt
- Auflösung bis zu 2048*2048 Pixel / 32 bit RGB-A double buffered
- 24- oder 32 bit Z-Buffer
- Hardware Stencil Buffer
- Hardware Rendering für Punkte, Linien, Dreiecke und Polygone
- Gouraud - und Flatshading
- Fog, Alpha Blending
- Specular Lighting
- Stencil Buffer
- Per Pixel Hardware MIP Mapping
- perspektivische Texturekorrektur pro Pixel für 32 Bit RGBA-Texturen
- 48MB Texture Cache möglich
- Leistungswerte :
- 1 Mio Dreiecke / sec., 25Pixel, Gouraud, Z-Buffered
- 33 Mio Pixel / sec., Gouraud, Z-Buffered
- 2 Mio Vektoren / sec., 10 Pixel, Z-Buffered
- 33 Mio texturierte Pixel / sec., MIP-Mapped, Z-Buffered
Diese Werte gelten für OpenGL1.1 bei 24Bit RGB, 24Bit Z-Buffer, 24Bit RGB Texturen, stenciled, dithered und per Pixel perspective correction.
- Boards :
- ELSA Gloria MX
- (Diamond Fire GL 5000)
Leistungswerte :
- Grafik-Workstation der oberen Mittelklasse
- 2 Prozessoren R10000 / 195MHz
- 2 unabhängige Rendering Engines ( für stereoskopische Darstellungen )
- volle Hardware-Untertützung der OpenGL 1.1 Rendering Pipeline
- grafische Funktionen siehe GLINT MX
- Octane Channel Option ( Anschluß eines Stereo-Anzeigegerätes )
- ca. 2,3 Mio Dreiecke / sec., 25Pixel, Gouraud, Z-Buffered
- ca. 2,8 Mio Dreiecke / sec., 25Pixel, Flat, Z-Buffered
- Geometry Engine: 960MFLOPS
- RDRAM Frame Buffer: 32-bit double buffer with Z
- Raster Engine: 120M pixel per second fill rate
- Texture Engine: zoom, warp, rotate images
- Texture Cache: 4MB
Modellierung virtueller Welten mit Sense 8 World Toolkit
November 1997
Mario Lorenz (Mario.Lorenz@informatik.tu-chemnitz.de)
Marco Wenisch (Marco.Wenisch@informatik.tu-chemnitz.de)
Michael Heymann (Michael.Heymann@informatik.tu-chemnitz.de)