Echtzeit-Computergrafik - Real-time computer graphics

Virtual-Reality- Rendering eines Flusses aus dem Jahr 2000
Virtuelle Umgebung an der University of Illinois , 2001
Musikvisualisierungen werden in Echtzeit generiert

Echtzeit-Computergrafik oder Echtzeit-Rendering ist der Teilbereich der Computergrafik, der sich auf die Erzeugung und Analyse von Bildern in Echtzeit konzentriert . Der Begriff kann sich auf alles beziehen, vom Rendern der grafischen Benutzeroberfläche ( GUI ) einer Anwendung bis hin zur Echtzeit- Bildanalyse , wird jedoch am häufigsten in Bezug auf interaktive 3D-Computergrafiken verwendet , die normalerweise eine Grafikverarbeitungseinheit (GPU) verwenden. Ein Beispiel für dieses Konzept ist ein Videospiel, das schnell wechselnde 3D-Umgebungen rendert, um eine Illusion von Bewegung zu erzeugen.

Computer sind seit ihrer Erfindung in der Lage, 2D-Bilder wie einfache Linien, Bilder und Polygone in Echtzeit zu erzeugen . Das schnelle Rendern detaillierter 3D-Objekte ist jedoch eine gewaltige Aufgabe für traditionelle Systeme, die auf der Von-Neumann-Architektur basieren. Eine frühe Problemumgehung für dieses Problem war die Verwendung von Sprites , 2D-Bildern , die 3D-Grafiken imitieren konnten.

Es gibt mittlerweile verschiedene Techniken zum Rendern , wie Raytracing und Rasterisierung . Mit diesen Techniken und fortschrittlicher Hardware können Computer Bilder jetzt schnell genug rendern, um die Illusion von Bewegung zu erzeugen und gleichzeitig Benutzereingaben zu akzeptieren. Dies bedeutet, dass der Benutzer in Echtzeit auf gerenderte Bilder reagieren kann, wodurch ein interaktives Erlebnis entsteht.

Prinzipien der Echtzeit-3D-Computergrafik

Das Ziel der Computergrafik ist es, computergenerierte Bilder oder Frames unter Verwendung bestimmter gewünschter Metriken zu erzeugen . Eine solche Metrik ist die Anzahl der Frames, die in einer bestimmten Sekunde erzeugt werden. Echtzeit-Computergrafiksysteme unterscheiden sich von herkömmlichen (dh Nicht-Echtzeit-)Rendering-Systemen darin, dass Nicht-Echtzeit-Grafiken typischerweise auf Raytracing beruhen . Bei diesem Prozess werden Millionen oder Milliarden von Strahlen von der Kamera zur Welt für detailliertes Rendering verfolgt – dieser teure Vorgang kann Stunden oder Tage dauern, um ein einzelnes Bild zu rendern.

Geländerendering aus dem Jahr 2014

Echtzeit-Grafiksysteme müssen jedes Bild in weniger als 1/30 Sekunde rendern. Raytracing ist für diese Systeme viel zu langsam; stattdessen verwenden sie die Technik der Z-Puffer- Dreieck-Rasterisierung . Bei dieser Technik wird jedes Objekt in einzelne Primitive zerlegt, normalerweise in Dreiecke. Jedes Dreieck wird auf dem Bildschirm positioniert, gedreht und skaliert , und die Rasterizer- Hardware (oder ein Software-Emulator) generiert Pixel innerhalb jedes Dreiecks. Diese Dreiecke werden dann in atomare Einheiten zerlegt , die als Fragmente bezeichnet werden und zur Anzeige auf einem Bildschirm geeignet sind . Die Fragmente werden auf dem Bildschirm mit einer Farbe gezeichnet, die in mehreren Schritten berechnet wird. Beispielsweise kann eine Textur verwendet werden, um ein Dreieck basierend auf einem gespeicherten Bild zu "malen", und dann kann die Schattenabbildung die Farben dieses Dreiecks basierend auf der Sichtlinie zu Lichtquellen ändern.

Grafik von Videospielen

Echtzeitgrafiken optimieren die Bildqualität in Abhängigkeit von Zeit- und Hardwarebeschränkungen. GPUs und andere Fortschritte haben die Bildqualität verbessert, die Echtzeitgrafiken erzeugen können. GPUs sind in der Lage, Millionen von Dreiecken pro Frame zu verarbeiten, und aktuelle Hardware der DirectX 11 / OpenGL 4.x-Klasse ist in der Lage, komplexe Effekte wie Schattenvolumen , Bewegungsunschärfe und Dreiecksgenerierung in Echtzeit zu erzeugen . Die Weiterentwicklung der Echtzeitgrafik zeigt sich in den fortschreitenden Verbesserungen zwischen den tatsächlichen Gameplay- Grafiken und den vorgerenderten Zwischensequenzen, die traditionell in Videospielen zu finden sind. Zwischensequenzen werden normalerweise in Echtzeit gerendert und können interaktiv sein . Obwohl sich der Qualitätsunterschied zwischen Echtzeitgrafiken und herkömmlichen Offlinegrafiken verringert, bleibt das Offline-Rendering viel genauer.

Vorteile

Echtzeit-Ganzkörper- und Gesichtsverfolgung

Echtzeitgrafiken werden typischerweise verwendet, wenn Interaktivität (zB Spieler-Feedback) entscheidend ist. Wenn Echtzeitgrafiken in Filmen verwendet werden, hat der Regisseur die vollständige Kontrolle darüber, was in jedem Bild gezeichnet werden muss, was manchmal eine langwierige Entscheidungsfindung erfordern kann. An der Entscheidungsfindung sind in der Regel Teams von Personen beteiligt.

Bei der Echtzeit-Computergrafik bedient der Benutzer typischerweise ein Eingabegerät, um zu beeinflussen, was auf der Anzeige gezeichnet werden soll. Wenn der Benutzer beispielsweise eine Figur auf dem Bildschirm bewegen möchte, aktualisiert das System die Position der Figur, bevor das nächste Bild gezeichnet wird. Normalerweise ist die Reaktionszeit des Displays viel langsamer als die des Eingabegeräts – dies wird durch den immensen Unterschied zwischen der (schnellen) Reaktionszeit einer menschlichen Bewegung und der (langsamen) perspektivischen Geschwindigkeit des menschlichen visuellen Systems begründet . Dieser Unterschied hat auch andere Auswirkungen: Da Eingabegeräte sehr schnell sein müssen, um mit der menschlichen Bewegungsreaktion Schritt zu halten, dauern Fortschritte bei Eingabegeräten (z. B. die aktuelle Wii-Fernbedienung) normalerweise viel länger als vergleichbare Fortschritte bei Anzeigegeräten.

Ein weiterer wichtiger Faktor, der die Echtzeit-Computergrafik steuert, ist die Kombination von Physik und Animation . Diese Techniken bestimmen weitgehend, was auf dem Bildschirm gezeichnet werden soll – insbesondere, wo Objekte in der Szene zu zeichnen sind. Diese Techniken helfen, das Verhalten der realen Welt (die zeitliche Dimension , nicht die räumlichen Dimensionen ) realistisch zu imitieren , was den Realismus der Computergrafik erhöht.

Die Echtzeitvorschau mit Grafiksoftware , insbesondere beim Anpassen von Lichteffekten , kann die Arbeitsgeschwindigkeit erhöhen. Einige Parameteranpassungen in der fraktalen Generierungssoftware können vorgenommen werden, während Änderungen am Bild in Echtzeit betrachtet werden.

Rendering-Pipeline

Screenshot des Flugsimulators

Die Grafik-Rendering-Pipeline ("Rendering-Pipeline" oder einfach "Pipeline") ist die Grundlage für Echtzeitgrafiken. Seine Hauptfunktion besteht darin, ein zweidimensionales Bild in Bezug auf eine virtuelle Kamera, dreidimensionale Objekte (ein Objekt mit Breite, Länge und Tiefe), Lichtquellen, Beleuchtungsmodelle, Texturen und mehr zu rendern.

Die Architektur

Die Architektur der Echtzeit-Rendering-Pipeline kann in konzeptionelle Phasen unterteilt werden: Anwendung, Geometrie und Rasterung .

Bewerbungsphase

Die Anwendungsstufe ist für das Generieren von "Szenen" oder 3D-Einstellungen verantwortlich, die auf eine 2D-Anzeige gezeichnet werden. Diese Stufe wird in Software implementiert, die Entwickler auf Leistung hin optimieren. Diese Stufe kann zusätzlich zur Verarbeitung von Benutzereingaben Verarbeitungen wie Kollisionserkennung , Beschleunigungstechniken, Animation und Force-Feedback durchführen.

Die Kollisionserkennung ist ein Beispiel für einen Vorgang, der in der Anwendungsphase durchgeführt würde. Die Kollisionserkennung verwendet Algorithmen, um Kollisionen zwischen (virtuellen) Objekten zu erkennen und darauf zu reagieren. Zum Beispiel kann die Anwendung neue Positionen für die kollidierenden Objekte berechnen und Feedback über ein Force-Feedback-Gerät, wie beispielsweise einen vibrierenden Gamecontroller, bereitstellen.

Die Anwendungsstufe bereitet auch Grafikdaten für die nächste Stufe vor. Dazu gehören Texturanimation, Animation von 3D-Modellen, Animation über Transformationen und Geometrie-Morphing. Schließlich erzeugt es Primitive (Punkte, Linien und Dreiecke) basierend auf Szeneninformationen und speist diese Primitive in die Geometriestufe der Pipeline ein.

Geometriestufe

Die Geometriestufe manipuliert Polygone und Scheitelpunkte, um zu berechnen, was gezeichnet werden soll, wie und wo es gezeichnet werden soll. Normalerweise werden diese Operationen von spezialisierter Hardware oder GPUs ausgeführt. Variationen über die Grafikhardware bedeuten, dass die "Geometriestufe" tatsächlich als mehrere aufeinanderfolgende Stufen implementiert werden kann.

Modell- und Ansichtstransformation

Bevor das endgültige Modell auf dem Ausgabegerät angezeigt wird, wird das Modell in mehrere Räume oder Koordinatensysteme transformiert . Transformationen verschieben und manipulieren Objekte, indem sie ihre Scheitelpunkte ändern. Transformation ist der allgemeine Begriff für die vier spezifischen Möglichkeiten, die Form oder Position eines Punktes, einer Linie oder Form zu manipulieren.

Beleuchtung

Um dem Modell ein realistischeres Aussehen zu verleihen, werden bei der Transformation in der Regel eine oder mehrere Lichtquellen eingerichtet. Dieses Stadium kann jedoch nicht erreicht werden, ohne zuerst die 3D-Szene in einen Sichtraum zu transformieren. Im Sichtraum wird der Beobachter (die Kamera) typischerweise am Ursprung platziert. Wenn ein rechtshändiges Koordinatensystem verwendet wird (was als Standard gilt), schaut der Betrachter in Richtung der negativen z-Achse, wobei die y-Achse nach oben und die x-Achse nach rechts zeigt.

Projektion

Projektion ist eine Transformation, die verwendet wird, um ein 3D-Modell in einem 2D-Raum darzustellen. Die beiden wichtigsten Projektionsarten sind die orthographische Projektion (auch Parallelprojektion genannt) und die perspektivische Projektion . Das Hauptmerkmal einer orthographischen Projektion besteht darin, dass parallele Linien nach der Transformation parallel bleiben. Die perspektivische Projektion verwendet das Konzept, dass das Modell kleiner erscheint als zuvor, wenn der Abstand zwischen Beobachter und Modell zunimmt. Im Wesentlichen ahmt die perspektivische Projektion das menschliche Sehvermögen nach.

Ausschnitt

Clipping ist der Vorgang des Entfernens von Grundelementen, die sich außerhalb der Ansichtsbox befinden, um die Rasterisierungsstufe zu erleichtern. Sobald diese Grundelemente entfernt sind, werden die verbleibenden Grundelemente in neue Dreiecke gezeichnet, die die nächste Stufe erreichen.

Bildschirmzuordnung

Der Zweck der Bildschirmabbildung besteht darin, die Koordinaten der Grundelemente während der Clipping-Phase herauszufinden.

Rasterizer-Stufe

Die Rasterisierungsstufe wendet Farbe an und wandelt die grafischen Elemente in Pixel oder Bildelemente um.

Geschichte

Computeranimation gibt es seit den 1940er Jahren, aber erst in den 1970er Jahren wurden 3D-Techniken implementiert.

Der erste Schritt in Richtung 3D-Grafik, aber nicht Echtzeitgrafik, wurde 1972 von Edwin Catmull und Fred Parke unternommen . Ihre Implementierung umfasste eine computergenerierte Hand , die mit Drahtgitterbildern , solider Schattierung und schließlich glatter Schattierung erstellt wurde . In den Jahren '72 und '74 drehte Parke ein Video des Gesichtes einer Frau im Gouraud-Schatten , das seinen Ausdruck veränderte.

3D-Grafiken haben den Punkt erreicht, an dem animierte Menschen fast vollständig realistisch aussehen. Ein Hindernis ist das unheimliche Tal . Menschen sind jedoch die am schwierigsten zu erstellenden Modelle bis hin zum Fotorealismus , und so viele Animationsfilme bleiben bei anthropomorphen Tieren, Monstern oder Dinosauriern. Als Beispiel für eine realistische menschliche Animation zeigt der Film Beowulf aus dem Jahr 2007 3D-Grafiken, die das menschliche Auge fast täuschen. Der Film wurde mit 3D- Motion-Capture- Technologie erstellt.

Siehe auch

Verweise

Literaturverzeichnis

Externe Links

  • RTR Portal – ein abgespecktes „Best of“-Set von Links zu Ressourcen