Das
Herz und die Seele eines interaktiven
3D-Spiels sind die Charaktere, denen
Sie begegnen. Charaktere sind dynamische,
ausdrucksstarke und einzigartige Figuren,
die dem Spiel Leben einhauchen, wenn
man mit ihnen spricht, sie bestaunt
oder sie einfach nur in Fetzen schießt.
Aus diesem Grund investieren Spieleentwickler
viel Zeit und Energie in den Entwurf,
die Modellierung und die Animation
der 3D-Darsteller.
Aussehen,
Bewegungen und Verhalten der Spielfiguren
sollen absolut realistisch wirken,
ob es sich nun um Menschen oder um
beeindruckende Fantasy-Geschöpfe handelt.
Ein Blick auf aktuelle 3D-Spiele zeigt
jedoch, dass dieses Ziel noch lange
nicht erreicht ist. Viele Spielfiguren
erscheinen grob und detailarm und
werden immer unansehnlicher, je näher
man ihnen kommt. Sie bewegen sich
mechanisch und gleichförmig wie Roboter
oder Zeichentrickfiguren, nicht wie
lebende Wesen. Wenn der Gesichtsausdruck
überhaupt Emotionen darstellt, dann
ändert er sich völlig übergangslos.
Die
Spielfiguren sind nicht das Einzige,
was in aktuellen 3D-Spielen unrealistisch
wirkt. Achten Sie einmal auf die Umgebungen,
in denen sie sich bewegen. In der
Regel wirken diese Landschaften noch
gröber und eckiger als die Charaktere.
Zwar gibt es inzwischen Spiele, in
denen Umgebungen mit geschwungenen
Formen zu bewundern sind, aber die
Entwickler müssen noch sehr darauf
achten, nicht zu viele und zu sanfte
Rundungen einzusetzen. Außerdem sind
die Landschaften fast immer statisch.
In vielen Spielen wird mit animierten
Texturen versucht, sich bewegende
Flüssigkeiten oder Gewebe darzustellen.
Diese Objekte bewegen sich aber nicht
wirklich und können ihre Form nicht
ändern.
All
diese Probleme beruhen auf der Tatsache,
dass die aktuelle Grafiktechnologie
die Wirklichkeit nur unvollkommen
nachbilden kann. Spieleentwickler
sind daher gezwungen, diese Enschränkungen
mit hohem Aufwand irgendwie auszugleichen.
Mit der Charisma-Engine ist es nun
problemlos möglich, 3D-Charaktere
und deren Umgebung glaubhaft darzustellen.
Grenzen
für lebensechte 3D Echtzeitgrafik
Die 3D-Computergrafik
hat seit ihrem ersten Einsatz auf
dem Desktop-PC eine beeindruckende
Entwicklung erlebt. Zweifellos kommt
die Grafik moderner 3D-Spiele wie
Quake 3 und Unreal der Wirklichkeit
schon wesentlich näher, als das
bei älteren Spielen wie Doom
der Fall war. Doch auch die modernsten
3D-Technologien können, selbst
im Zusammenspiel mit erstklassiger
künstlerischer Arbeit und Animationstechnik,
längst nicht den Eindruck erwecken,
man würde statt auf einen Bildschirm
durch ein Fenster in eine lebende,
atmende Welt schauen. Mit der zur
Zeit verfügbaren Hard- und Softwaretechnologie
ist es möglich, animierte Welten
zu schaffen, die nahezu fotorealistisch
erscheinen. Allerdings ist dies nur
für vorberechnete 3D-Sequenzen
möglich. Für ein interaktives
Spiel müssen 3D-Szenen in Echtzeit
berechnet werden, was eine enorme
Rechenleistung erfordert.
Drei große Probleme
machen es der derzeitigen PC-Grafikhardware
unmöglich, wirklich fotorealistische
3D-Umgebungen in Echtzeit darzustellen:
Lebensechte
Charaktere
Bei der Darstellung von 3D-Charakteren
in derzeitigen Spielen gibt es folgende
Probleme:
-
Grobes, unnatürliches
Aussehen, vor allem bei Nahaufnahmen
-
Ungelenke, roboterhafte
Bewegungen
-
Kurze, sich ständig
wiederholende Bewegungsabläufe
ohne Variationen
-
Fehlende Gesichtsmimik
und somit keine sichtbaren Emotionen
-
Zu wenige unterschiedliche
Charaktermodelle, alle Personen
sehen gleich aus
-
Nur wenige Charaktere
gleichzeitig darstellbar
Die verschiedenen Objekte
und Gegenstände in 3D-Szenen
unterliegen folgenden Einschränkungen:
-
Geringe Komplexität,
nur einfach geformte Objekte sind
darstellbar
-
Grobe Texturen in
Nahansichten (erscheinen flach und
unscharf)
-
Häufig fest
und unbeweglich (so wird vermieden,
alle Seiten und Einzelheiten eines
Objekts darstellen zu müssen)
-
Reflexionen fehlen,
erscheinen grob oder reagieren nicht
auf Änderungen in der Umgebung
-
Werfen keine dynamischen
Schatten (höchstens vorberechnete)
Einschränkungen
der 3D-Umgebungen, in denen sich die
Spielfigur bewegt und mit der sie
interagiert:
-
Einfache, wenig
detaillierte Architektur ohne runde
Formen
-
Statisch, nicht
in Echtzeit veränderbar
-
Reagiert nicht auf
Aktionen des Spielers
-
3D-Effekte wie sich
kräuselndes Wasser oder sich
auftürmende Wolken werden zweidimensional
dargestellt
Die derzeitigen Grafikchips können
Spielfiguren, Objekte und Landschaften
schon sehr realistisch und detailliert
darstellen, aber diese Funktionen müssen
leider mit einem unvertretbaren Leistungsverlust
erkauft werden. Der Kreativität
der Spieleentwickler werden daher durch
die Grafiktechnologie enge Grenzen auferlegt.
Die Programmierer sind gezwungen, mit
großem Aufwand die Beschränkungen
der Hardware zu kaschieren. Diese Energie
sollte besser in die Gestaltung des
eigentlichen Spieles einfließen.
Der ATI RADEON tritt nun mit innovativen
Technologien an, um diese Grenzen endlich
zu überwinden.
Die CHARISMA ENGINE
Die
Charisma-Engine eröffnet eine neue
Dimension für die Darstellungsqualität
von 3D-Charakteren und deren Umgebung.
Der Radeon führt komplexe Transformations-,
Clipping- und Lighting-Berechnungen
schneller aus als jede CPU und jeder
Grafikchip vor ihm. Innovative neue
Funktionen wie Vertex-Skinning mit
4 Matrizen und Keyframe-Interpolation
bieten Spieleentwicklern mehr Freiheit
und Flexibilität als je zuvor.
Schnelle, flexible Hardwarebeschleunigung
für Transformation, Clipping und Lighting
(TCL)
Ein
Grafikprozessor ist ein hochspezialisiertes
System für die Berechnung von Grafik und
deren Darstellung auf einem Bildschirm.
Eine CPU dagegen muss viele verschiedene
Aufgaben und Berechnungen für jede denkbare
Anwendung ausführen können. Eine CPU ist
sozusagen ein "Hansdampf in allen Gassen",
aber in keiner Disziplin besonders stark.
Normale Prozessoren werden zwar immer
schneller und effizienter und beherrschen
sogar spezielle Multimedia-Befehle, können
es aber nie mit dem Tempo und der Effizienz
spezialisierter, gezielt für eine Aufgabe
konstruierter Prozessoren aufnehmen. Die
Grafikleistung kann also nur gesteigert
werden, wenn immer mehr Aufgaben bei der
Grafikdarstellung von der CPU an spezialisierte
Grafikprozessoren abgegeben werden.
Die
Auslagerung von Berechnungen von der CPU
in den Grafikprozessor bringt noch weitere
Vorteile mit sich. In fast allen 3D-Spielen
beansprucht die Berechnung der Grafik
einen Großteil der Prozessorleistung.
Ohne diese Last kann der Prozessor für
andere Aufgaben eingesetzt werden. Das
kann z.B. dem physikalischen Modell, der
künstlichen Intelligenz oder der Kollisionsabfrage
zugute kommen. Und weil die Grafikberechnungen
von der Hardware ausgeführt werden, kann
der Entwickler sie auf einer hohen Abstraktionsstufe
über Schnittstellen wie Direct3D® oder
OpenGL® programmieren. Die Zeit und Energie,
die der Programmierer beim Schreiben und
der Optimierung des Codes für diese Berechnungen
spart, kann er dann endlich in bisher
vernachlässigte Aspekte der Spieleentwicklung
investieren. Die
letzte bedeutende Entwicklung im Bereich
der Computergrafik war die Beschleunigung
von 3D-Funktionen durch den Grafikprozessor.
Damit wurden die ersten echten 3D-Spiele
möglich, deren Grafikqualität im Vergleich
zu früheren 2D- und Pseudo-3D-Spielen
eine echte Revolution darstellte. Für
die nächste Revolution werden die Berechnungen
für Transformation, Clipping, und Lighting
sorgen, die bei der Berechnung jeder 3D-Szene
anfallen. Die Anzahl der in diesen drei
Schritten durchzuführenden Berechnungen
ergibt sich direkt aus der Anzahl der
Polygone in der Szene. Die Charisma-Engine
führt diese Berechnungen wesentlich schneller
aus als jeder moderne Prozessor und beschleunigt
außerdem mehr Funktionen als jede bisherige
T&L-Hardware. Das ermöglicht eine
enorme Verbesserung der Grafikqualität,
da für 3D-Szenen und Spielfiguren nun
wesentlich mehr Polygone verwendet werden
können. Betrachten Sie die Charaktere
in der folgenden Darstellung:

Charaktere
mit wenigen / vielen Polygonen
Die
Figur links besteht aus ungefähr 900 Polygonen,
was den Möglichkeiten heutiger Spiele
entspricht. Die Figur rechts enthält etwa
zehnmal mehr Polygone als die Figur links.
Wie Sie sehen, erscheint die Darstellung
wesentlich realistischer. Der Umriss der
rechten Figur zeigt natürliche Rundungen,
während an der linken Figur Ecken und
gerade Linien auffallen. Finger, Zehen
und das Gesicht der rechten Figur sind
viel detaillierter und realistischer.
Die Lichteffekte sehen bei der rechten
Figur wesentlich besser aus, obwohl für
beide Figuren dasselbe Vertex-Lighting-Verfahren
eingesetzt wurde. Dies veranschaulicht
die Vorteile des hardwarebeschleunigten
Vertex-Lighting für Charaktere mit vielen
Polygonen. Die
schnelle Verarbeitung von Polygonen und
Lichteffekten verbessert aber nicht nur
die Darstellungsqualität der Spielfiguren.
Aktuelle Spiele verwenden für Elemente
der Spielumgebung wie Gebäude, Gegenstände
und Landschaftsmerkmale häufig nur wenige
Polygone, da diese gegenüber den 3D-Charakteren
in den Hintergrund treten. Das führt zu
simplen, eckigen Objekten. Mit schnellen
Transformations- und Lighting-Funktionen
können für solche Objekte auch komplexere
Formen und Rundungen verwendet werden.
Wenn kleine Objekte wie Kisten, Steine
und Büsche in 3D modelliert und nicht
mehr einfach über den Hintergrund gezeichnet
werden, können sie sogar bewegt und verändert
werden. Die Spielumgebung kann also deutlich
realistischer, dynamischer und auch interaktiver
werden. Mehr
Polygone und Lichteffekte in einer Szene
bedeuten zwar eine deutlich höhere Grafikqualität,
lassen die Charaktere aber noch lange
nicht wirklich lebendig aussehen. Die
Animation der Spielfiguren ist in dieser
Hinsicht ebenso wichtig, da sie darüber
entscheidet, wie realistisch das Verhalten
und die Bewegungen einer Figur wirken.
Die Charisma-Engine bietet einzigartige
Hardware-Funktionen, die eine neue Dimension
für die Animation von Charakteren bedeuten.
Diese Funktionen werden im Folgenden beschrieben.
Skelettanimation und Skinning
3D-Figuren
werden heute in der Regel als ein Netz
aus miteinander verbundenen Polygonen
dargestellt. Wenn die Haltung einer Figur
geändert werden soll, müssen die Knotenpunkte
des Modells für jede Animationsphase verschoben
und zusätzlich gespeichert werden. Die
Figur kann dann animiert werden, imdem
diese Animationsphasen schnell hintereinander
abgespielt werden. Dieses Prinzip hat
sich durchaus bewährt, aber in einigen
3D-Spielen wird bereits eine hochinteressante
neue Technik eingesetzt, die Skelettanimation.
Dabei werden Figuren mit "Knochen" versehen,
die von einem Netz von Punkten wie mit
einer Haut überzogen sind. Die Position
jedes 3D-Punktes (Vertex) kann von den
Bewegungen eines oder mehrerer Knochen
abhängig gemacht werden, entsprechend
einer definierten Gewichtung. So kann
man eine Figur animieren, indem man einfach
die Skelett bewegt, während die Bewegungen
der durch 3D-Punkte definierten Haut automatisch
berechnet werden. Die Skelettanimation
vereinfacht die Animation einer Figur
und benötigt wesentlich weniger Speicher
als herkömmliche Animationsverfahren,
da nicht mehr für jede Animationsphase
die Positionen aller Knotenpunkte des
Modells gespeichert werden müssen. Die
ursprünglichen Positionen der Punkte sowie
deren Gewichtungen werden nur einmal gespeichert,
während für die Animationsphasen lediglich
die Bewegungen der Knochen zu speichern
sind. Der gewonnene Speicherplatz kann
genutzt werden, um Animationen ausführlicher
und feiner zu gestalten, oder um zusätzliche
Modelle und Animationen einzusetzen.
Ein
Schwachpunkt der Skelettanimation ist
die Behandlung der Gelenke zwischen zwei
Knochen. Jeder Knochen ist steif und seine
Bewegungen werden durch Transformationen
beschrieben. Wenn ein Gelenk durch eine
Transformation gebeugt wird, können unschöne
Lücken entstehen.
Mit
dem sogenannten Skinning-Verfahren werden
die Positionen der 3D-Punkte so den Bewegungen
der Gelenke angepasst, dass eine glatte,
flexible Haut zu sehen ist.
Vertex-Skinning
mit bis zu 4 Matrizen
Für
die Bestimmung der Positionen aller Punkte
in jeder Phase einer Skelettanimation werden
Matrixtransformationen eingesetzt. Matrixtransformationen
sind mathematische Funktionen, mit denen
die Position eines Objekts im Raum berechnet
werden kann. Für jeden Knochen, der einen
bestimmten 3D-Punkt beeinflusst, wird eine
eigene Matrixtransformation benötigt. Die
Gewichtungen einer Matrix können für jeden
Punkt anders gewählt werden, was besonders
für Punkte wichtig ist, die in der Nähe
von Gelenken liegen. Natürlich aussehende
Gelenkbewegungen sind nur möglich, wenn
die Matrixgewichtungen für jeden 3D-Punkt
in der Nähe des Gelenks einen allmählichen
Übergang von einem Knochen zum anderen bilden.
Diese Technik wird als Vertex-Skinning bezeichnet.
Die
für das Vertex-Skinning notwendigen Matrixtransformationen
sind äußerst rechenintensiv und die Komplexität
steigt mit jeder zusätzlichen Matrix. Die
leistungsstarke Charisma-Engine bietet für
das Vertex-Skinning eine Hardwarebeschleunigung
mit bis zu 4 Matrizen. Dadurch werden enorm
komplexe und natürlich wirkende 3D-Animationen
möglich, ohne dass die CPU zusätzlich belastet
wird. Die
folgende Abbildung zeigt, wie sehr die Darstellungsqualität
durch zusätzliche Transformationsmatrizen
gesteigert werden kann. Jede Farbe steht
für die Gewichtungen der unterschiedlichen
Matrizen (Rot/Blau für zwei Matrizen links,
Rot/Blau/Grün für drei Matrizen rechts).
Beachten Sie, wie die Gewichtungen der einzelnen
Matrizen am Schultergelenk einen Übergang
bilden.
Im
rechten Bild wird mit der zusätzlichen grünen
Matrix die "Beule" an der Schulter ausgeglichen.
Mit zusätzlichen Matrizen können auch komplexere
Übergänge realistisch dargestellt werden,
bei denen mehr als zwei Knochen zu berücksichtigen
sind. Diese Art von Animationen kann mit
herkömmlichen Transform & Lighting-Engines,
die nur 2 Matrizen unterstützen, nicht dargestellt
werden. Ein vergleichbarer Effekt ist nur
mit einer reinen Softwarelösung zu erreichen,
was für die Performance allerdings absolut
tödlich wäre.
Keyframe-Interpolation (Vertex-Morphing)
Selbst
bei Einsatz der Skelettanimationstechnik
kann die Animation eines 3D-Modells viel
Zeit und Energie beanspruchen. Je flüssiger
die Animation wirken soll, desto mehr Phasen
müssen erstellt werden. Detaillierte Animationssequenzen
können aber Unmengen an Speicher belegen.
Daher ist es in aktuellen Spielen nicht
möglich, die Spielfiguren wirklich flüssig
und lebensecht zu animieren. Außerdem ist
es mit der Skelettanimation selbst mit 4-Matrix-Transformationen
schwierig, realistische Gesichtsausdrücke
oder sich bewegende Muskeln glaubhaft darzustellen.
Doch gerade diese Feinheiten sind es, die
ein 3D-Modell erst wirklich lebendig aussehen
lassen. Hier
bietet die Keyframe-Interpolation der Charisma-Engine
eine einfache aber wirkungsvolle Lösung.
Sie erzeugt durch Interpolation zwischen
zwei aufeinander folgenden Bildern, den
sogenannten Keyframes, zusätzliche Bilder,
die die Lücke füllen. Die 3D-Punkte werden
von ihrer Position im ersten Keyframe nahtlos
in die Position im zweiten Keyframe überführt.
Die Anzahl der interpolierten Bilder kann
frei gewählt werden, wobei mehr Bilder für
flüssigere Animationen und weniger Bilder
für mehr Leistung sorgen. Nehmen wir als
Beispiel ein missmutiges Gesicht, auf das
ein Lächeln gezaubert werden soll. Mit der
Keyframe-Interpolation werden nur zwei Keyframes
für die Animation benötigt: Ein 3D-Netz,
das ein schlecht gelauntes Gesicht darstellt,
und ein lächelndes Gesicht. Die Charisma-Engine
kann diese Gesichter in beliebig vielen
Schritten sanft ineinander überblenden,
ohne die CPU dabei zu belasten (siehe Abbildung).
Diese Funktion ist mit Standbildern kaum
zu beschreiben, man muss sie schon in Bewegung
sehen und die grandiose Wirkung selbst genießen.
Mit
der Keyframe-Interpolation wird die Animation
skalierbar. So kann die Detailebene so gewählt
werden, dass der gewünschte Kompromiss zwischen
Geschwindigkeit und Qualität entsteht. Mit
dieser Technik kann ein Spiel seine Geschwindigkeit
selbst überwachen und beispielsweise automatisch
Animationsphasen auslassen, sobald die Bildrate
eine gegebene Grenze unterschreitet. Die
Keyframe-Interpolation macht Animationen
skalierbar, spart Zeit während der Entwicklung
und senkt den Speicherverbrauch. Die Charisma-Engine
bietet als erste Technologie eine Hardwarebeschleunigung
für die Keyframe-Interpolation.
|