Grafische Übergänge zwischen Spielzuständen
In diesem Artikel werden Umsetzungsmöglichkeiten für grafische Übergänge zwischen Spielzuständen vorgestellt.
Inhaltsverzeichnis |
Einleitung
Zum "Polishing" von Spielen gehört oft die Integration grafischer Übergänge zwischen den Spielzuständen. Diese Übergänge sind vergleichbar mit Überblendungseffekten beim Film und erlauben weniger abrupte Wechsel, beispielsweise zwischen dem Hauptmenü und dem eigentlichen Spiel. Bei der Umsetzung dieser Effekte sind der Kreativität des Programmierers prinzipiell keine Grenzen gesetzt. Klassische Effekte sind einfaches Ein-, Aus- oder Überblenden. Fortgeschrittene Übergänge können auch 3D-Grafik verwenden (siehe Video).
Verwendung von Texturen als Render-Targets
Während eines Übergangs werden gerenderte Bilder des alten und des neuen Zustands benötigt. Um Hardwarebeschleunigung für das Darstellen der Übergangseffekte zu ermöglichen, sollten diese Bilder in Form von Texturen vorliegen. Für diesen Zweck bieten sich Textur-Render-Targets an, also Texturen, in die direkt gerendert werden kann. Alternativ kann unter OpenGL auch der Inhalt des Back-Buffers durch Aufruf von glCopyTexImage2D oder glCopyTexSubImage2D in eine Textur kopiert werden, dann sind keine Render-Targets notwendig.
Ablauf eines Übergangs
Im Folgenden wird ein möglicher Ansatz zur Umsetzung grafischer Übergänge beschrieben.
In dem Moment, in dem ein Übergang gestartet wird, wird der aktuelle Spielzustand einmalig in ein "Vorher"-Render-Target gerendert. Der alte Spielzustand wird danach nicht mehr weiter aktualisiert oder gezeichnet. Oft ist es nach einem Zustandswechsel nämlich nicht sinnvoll möglich, weiterhin Aktualisierungen vorzunehmen. Sofort wird der neue Spielzustand gesetzt und kontinuierlich aktualisiert und gezeichnet. Solange der Übergangseffekt aktiv ist, wird der neue Spielzustand jedoch nicht in den Back-Buffer gezeichnet, sondern in ein zweites "Nachher"-Render-Target. Während der Übergangszeit werden dem aktiven Übergangseffekt beide Texturen/Render-Targets zur Verfügung gestellt, um sie zu einem Effekt zu kombinieren und auf dem Bildschirm darzustellen.
Implementierung von Übergangseffekten
Ein Übergangseffekt benötigt Zugriff auf das alte und das neue Bild (Texturen/Render-Targets). Weiterhin ist zum Zeichnen des Übergangs eine Zeitangabe notwendig. Die Zeitangabe steuert die Übergangsanimation. Zum Startzeitpunkt (Null) sollte ein Effekt normalerweise das alte Bild ausgeben, und am Ende des Übergangs sollte das Ergebnis das neue Bild sein. Die Einheit der Zeitangabe können Sekunden sein, alternativ ist es auch denkbar, die Zeitangabe auf das Intervall §[0; 1]§ zu skalieren. In diesem Fall ist es leichter, Übergangseffekte unabhängig von ihrer Dauer zu implementieren.
Beispiel für einen Überblendungseffekt
Ein sehr einfach umzusetzender Effekt ist die Überblendung der beiden Bilder. Dabei wird zunächst das alte Bild gezeichnet (zum Beispiel in Form eines bildschirmfüllenden Rechtecks mit der Textur des alten Bilds). Anschließend wird das neue Bild mit aktiviertem Alpha-Blending darüber gezeichnet, zunächst komplett transparent. Die Transparenz wird dann stetig reduziert, bis zum Endzeitpunkt des Effekts das neue Bild das alte Bild vollständig überdeckt.
Einige Variationsmöglichkeiten dieses Effekts:
- Schwarz-/Weißblende: Zunächst wird zwischen dem alten Bild und einem vollständig schwarzen/weißen Bild überblendet, anschließend zwischen diesem und dem neuen Bild.
- Verwendung einer komplexeren Interpolationsfunktion für die Transparenz: Anstatt die Transparenz des neuen Bilds linear mit der Zeit zu verändern, können auch andere Interpolationsfunktionen verwendet werden.
Beispiel für einen komplexeren Übergangseffekt
Der Effekt, der im Video oben gezeigt wird, verwendet einen 3D-Würfel. Auf zwei benachbarten Seiten des Würfels werden das alte und das neue Bild als Textur gelegt. Zu Beginn des Effekt wird die Kamera so eingestellt, dass die Würfelseite mit dem alten Bild exakt das Sichtfeld ausfüllt. Damit dies möglich ist, verzerrt die Kamera die Würfelseite zu einem Rechteck mit dem Seitenverhältnis des Bildschirms. Im Verlauf des Effekts wird die Kamera nun zurück und wieder vorwärts bewegt, während der Würfel sich um 90° weiter dreht und die Seite mit dem neuen Bild sichtbar wird.
Fazit
Grafische Übergangseffekte sind ein einfaches Mittel, um einem Spiel einen gewissen "professionellen Touch" zu verleihen. Alles, was dazu notwendig ist, ist das Rendern von Spielzuständen in Texturen und etwas Kreativität bei der Umsetzung verschiedener Effekte.