Über 3D-Grafiken in einfachen Worten

Teil 1. Einführung


Hallo, mein Name ist Baldurk. Ich arbeite seit mehreren Jahren als Grafikprogrammierer. Obwohl ich kein Experte bin, scheint es, dass ich bereits viel über alles verstehe, was mit der Arbeit mit Grafiken zu tun hat.

Die Idee dieser Reihe von Posts schwebt seit langem irgendwo an der Peripherie meines Geistes und taucht wieder auf, nachdem ich einen interessanten Artikel mit einer Analyse des neuesten Deus Ex gelesen habe.

Es scheint mir, dass die Grafik und insbesondere die Komplexität, die sie in modernen Spielen erreicht, ein interessantes Thema ist. Sehr wenige Menschen sind neugierig, sich eingehend mit all seinen Details zu befassen, aber ich glaube, dass es Themen gibt, die alle interessieren. Ich denke, dass die meisten Leute, die Spiele spielten, neugierig waren, wie diese oder jene Effekte erzielt wurden oder mit welcher Technologie sie es geschafft haben, in einem neuen Spiel so erstaunliche Grafiken zu erstellen.


Es sind viele Komponenten erforderlich, um selbst ein einfaches 3D-Spiel zu erstellen, ganz zu schweigen von einem Projekt wie Watch Dogs.

Ich habe nur eine allgemeine Vorstellung davon, was in diesem Artikel berücksichtigt werden muss, aber es hängt davon ab, welche Themen Interesse wecken. Die Hauptidee ist jedoch, eine allgemeine Beschreibung dessen zu erstellen, was im modernen Spiel geschieht, ohne einen der Leser abzuschrecken - ich gehe davon aus, dass Sie keine Kenntnisse in Mathematik und Programmierung haben. Wenn Sie den Unterschied zwischen der CPU und der Grafikkarte kennen und RAM von der Festplatte unterscheiden, reicht dies völlig aus, und ich werde den Rest erläutern.

Dieser Artikel wird in Übereinstimmung mit dem Video- Exemplar von Chip & Ironicus "Let's Play of Watch Dogs" entwickelt , um die Präsentation leicht zu strukturieren. Das Spiel ist bekannt für seine Grafik (und die Meinungen darüber können völlig entgegengesetzt sein), und es gibt viele Aspekte, die mit separaten Beispielen betrachtet werden können. Vielleicht werde ich über andere Spiele sprechen.

Ich werde zunächst die Grundlagen erklären, die für jedes Spiel ziemlich gleich sind, aber ich werde auch einige der Techniken und visuellen Effekte von Wachhunden betrachten.

Ich werde ein Tool namens RenderDoc verwenden , das ich in meiner Freizeit geschrieben habe. Es wird zum Debuggen von Problemen mit Grafiken verwendet. Mit dem Tool können Sie einen Grafikrahmen in Teile zerlegen. Dank dieser Funktion können wir sehen, wie er zusammenkommt.


Diese Animation zeigt einen Teil eines Rahmens, der beim Rendern mit einer Grafikkarte schrittweise erstellt wird.

Die meisten Menschen wissen, dass Computergrafiken (und die Grafiken anderer Videos) aus einer Reihe von Standbildern bestehen, von denen jedes für einen bestimmten Bruchteil einer Sekunde angezeigt wird. Im Kino werden traditionell 24 Bilder pro Sekunde (Bilder pro Sekunde, FPS) verwendet, im Fernsehen ist die Frequenz ungefähr gleich, etwa 24 bis 30 Bilder. In Spielen kann FPS geändert werden, da in jedem Frame viel Arbeit geleistet wird. Ein Frequenzabfall unter 30 ist unerwünscht, obwohl er ziemlich häufig auftritt. Normalerweise liegt die Obergrenze für Konsolenspiele bei 60 FPS. Entwickler versuchen, eine Häufigkeit von 30 oder 60 zu implementieren, die von den Zielen des Spiels abhängt. Auf einem PC mit einem Display mit hoher Bildrate können Sie 90, 120 oder sogar mehr erreichen. Der Grund für diese spezifischen Zahlen ist die vertikale Synchronisation (vsync), die wir unten diskutieren werden.

Geistig können wir diese Aufgabe von der anderen Seite betrachten - anstatt zu sehen, wie hoch die FPS-Frequenz ist, schauen wir uns an, wie wenig Zeit für jeden Frame zugewiesen ist. Wenn das Spiel mit einer Frequenz von 30 FPS funktionieren soll, haben wir nur 33 Millisekunden Zeit, um alle für den Frame erforderlichen Arbeiten abzuschließen. Mit 60 FPS ist die Zeit halb so lang - ungefähr 17 Millisekunden. Selbst für einen Computer ist dieser Zeitraum angesichts des Arbeitsaufwands nicht sehr lang. Um Ihnen eine Vorstellung von den Mengen zu geben, bewegt sich das Geschoss nach groben Schätzungen etwa 1 Meter pro Millisekunde.

Wir werden hauptsächlich über PCs sprechen, da diese Plattform offen ist, und ich kann nicht über Konsolen sprechen, ohne befürchten zu müssen, dass Geheimhaltungsvereinbarungen (NDAs) verletzt werden. Wie auch immer, im Grunde werde ich darüber sprechen, was auf den Konsolen nicht sehr unterschiedlich ist, aber wenn sich noch etwas unterscheidet, dann werde ich dies betonen. Bei mobilen Plattformen sind die meisten Unterschiede zwischen PC-Hardware / Konsolen und mobiler Hardware für das Thema meines Artikels nicht relevant.


Ehrlich gesagt habe ich dieses Bild hier eingefügt, damit Sie verstehen, dass der Artikel nicht nur Text enthält.

Es ist diese Aufgabe, die uns interessiert - wir werden uns keine Gedanken darüber machen, wie alle KI-Berechnungen durchgeführt werden oder wie physikalische Simulationen durchgeführt werden, um Objekte zu bewegen. Die Grenzen der Disziplin „Grafikprogrammierung“ sind eher verschwommen, aber ich werde sagen, dass die Grafikprogrammierung beginnt, wenn wir alle Informationen haben, die zum Erstellen eines Frames erforderlich sind: Wir wissen, was passiert, alle Texturen und Modelle befinden sich im Speicher (nicht auf der Festplatte) ), die Animationen sind bereits animiert, die Physik wird gezählt und wir müssen nur einen fertigen Rahmen für die Anzeige auf dem Bildschirm zeichnen.

Ich werde hinzufügen, dass ich ein 3D-Spiel mit einem ziemlich traditionellen Rendering wie Watch Dogs in Betracht ziehen werde - viele der Grundprinzipien gelten für 2D-Spiele, aber es ist etwas schwieriger, Konzepte auf diesen zu demonstrieren. Ich werde auch (insbesondere Grafikprogrammierern) erklären, dass ich in erster Linie nach Verständnis strebe, daher werde ich vielleicht eher zweifelhafte Erklärungen verwenden, wenn sie es mir ermöglichen, mein Ziel zu erreichen.

Teil 2. Woraus der Rahmen besteht


Meistens werden wir uns nur einen Frame ansehen und über die Bausteine ​​sprechen, mit denen das Spiel einen fertigen Frame erstellt. Auch in diesem Teil wird es einige neue schöne Bilder geben.

Es gibt verschiedene Möglichkeiten, einen Rahmen aus Bausteinen zusammenzusetzen. Das fertige Bild, das der Player sieht, wird nicht sofort gerendert. Es wurde vor vielen Jahren sofort gezeichnet, aber moderne Grafik-Engines verwenden fast immer eine Art Vorverarbeitung. Bevor das fertige Bild auf dem Bildschirm angezeigt wird, zeichnet die Grafik-Engine viele Zwischenbilder verschiedener Typen, die bei der Berechnung des endgültigen Bilds hilfreich sind.

Diese Bilder hängen stark von der Art der Engine und den Techniken ab, die der Grafikprogrammierer anwenden muss. Wenn er beispielsweise möchte, dass das Sonnenlicht die richtigen Schatten erzeugt, wird ein Bildtyp für die Schatten benötigt. Möglicherweise benötigt er auch die richtigen Reflexionen auf dem vom Spieler angetriebenen Auto, und auch dafür benötigt er ein anderes Bild mit Reflexionen.







Verschiedene Beispiele für Zwischenbilder, die bei der Konstruktion des Watch Dogs-Rahmens verwendet wurden.

In diesem Artikel werde ich nicht jedes der im Rahmen von Watch Dogs verwendeten Bilder betrachten, sondern nur die grundlegenden, damit Sie etwas lernen können. Dies ist ein Bereich, in dem ständig Grafikforschung betrieben wird und neue Techniken entstehen. Innovationen entstehen auch auf kleineren Ebenen, aber wenn das Marketing Sie über eine neue grafische Funktion informiert, bezieht es sich normalerweise auf solche Verbesserungen.



Jedes dieser Zwischenbilder besteht auch aus noch kleineren Fragmenten. Jedes Objekt in der Szene oder eine Gruppe verwandter Objekte wird separat als strukturiertes Modell erstellt . Bei der Entwicklung eines Spiels erstellen Künstler diese Modelle in einem 3D-Editor und erstellen alle erforderlichen Ressourcen für sie. Dann werden diese Modelle mit dem Level-Editor in die Welt gesetzt und daraus wird nach und nach eine virtuelle Stadt aufgebaut.

Wahrscheinlich weiß das fast jeder, und wenn Sie die Entwicklung von Echtzeit-3D-Grafiken in den letzten 20 Jahren beobachtet haben, wissen Sie, wie viel komplexer Modelle heute geworden sind. In den ersten Phasen der Grafikbildung war das Textur-Mapping ein kostspieliger Prozess und wurde, wenn möglich, durch Malen von Objekten mit derselben Farbe entsorgt. Texturen wurden nur für Elemente wie Augen oder Gesichter belassen, die wirklich Details benötigten.

Das 3D-Modell besteht vollständig aus miteinander verbundenen Dreiecken, die die Form des Objekts bilden. Jedes Dreieck hat drei Punkte, die als Eckpunkte bezeichnet werden. Da die Dreiecke miteinander verbunden sind, können die Eckpunkte von mehreren Dreiecken gemeinsam genutzt werden. Wir werden später darauf zurückkommen, da die Eckpunkte und Dreiecke wichtig genug sind. Beachten Sie auch, dass einige Objekte, z. B. Zeichen oder Bäume, vor dem Rendern animiert werden müssen. Das Modell wird in statischer Standardform erstellt, und in jedem Frame werden Animationen angewendet. Wir werden auch darauf zurückkommen.


Dies ist ein 3D-Modell von Aiden Pierces Kopf nach der Animation. Dreiecke sind sichtbar, weil sie flach gezeichnet und nicht geglättet sind, wie dies normalerweise der Fall ist.

Um dem 3D-Modell mehr Details hinzuzufügen, werden Texturen überlagert. Texturen sind normale flache Bilddateien, normalerweise quadratisch oder einfach, z. B. Rechtecke mit einem Verhältnis von 2: 1. Texturen werden dem 3D-Modell mithilfe eines komplexeren Prozesses überlagert, auf den ich weiter unten näher eingehen werde. Konzeptionell ähnelt es jedoch dem Prozess des Verpackens eines Geschenks. Anstelle eines einfachen sich wiederholenden Musters von Papierumschlägen entspricht das Bild genau der Größe des Umschlags. Wenn Sie Papiermodelle für die Montage mit Klebstoff gesehen haben, ist das Prinzip dasselbe.

Diese Analogie ist angemessener als Sie vielleicht denken, da diese Texturen normalerweise durch „Abrollen“ eines 3D-Modells in einen flachen Rohling erstellt werden, wie dies bei einem Papiermodell der Fall ist, wonach eine Textur darauf gezeichnet wird. Diese Bereitstellung wird häufig automatisch durchgeführt, kann jedoch bei besonders komplexen Objekten manuell durchgeführt werden.


Dies ist die Textur, die dem oben gezeigten Aiden Pierce-Kopfmodell entspricht. Es gibt Teile für Zähne und Zunge. Beachten Sie, dass der Bereich über seiner Stirn nicht strukturiert ist, da er dauerhaft von Aiden Pearce ™ Legendary Baseball Cap bedeckt ist.

Hinweis


Beim Entfalten nehmen einige Teile des Objekts zu, die mehr Details erfordern, während andere abnehmen.

Sehr oft sprechen sie über verschiedene "Skins" von Modellen, insbesondere bei anpassbaren Charakteren. Heutzutage bezieht sich das, was als "Haut" bezeichnet wird, normalerweise auf kleine Änderungen im Modell - einen neuen Gürtel oder einen anderen Hut -, aber anfangs entstand dieser Begriff, weil dasselbe Modell verwendet wurde, aber die Textur geändert wurde (oder "Haut" - wörtlich übersetzt als "Haut"), um einen Charakter zu erstellen, der anders aussieht. Selbst heute können Sie mit Hilfe solcher Texturen eine große Variabilität von NPCs oder Objekten erstellen, was Zeit und Geld spart - Sie müssen nicht viele einzigartige 3D-Modelle erstellen. Die verschiedenen Kleidungsstücke, die Aiden tragen kann, sind oft nur unterschiedliche Texturen desselben Modells.


Hier ist ein kurzer Ausschnitt der Kopfdrehung des 3D-Modells. Überlagerte nur Textur und nichts mehr.

In dem Rahmen, den wir betrachten, werden im Haupt-Rendering-Teil ungefähr 1700 Objekte gerendert. Einige von ihnen werden die gleichen Modelle sein - Objekte wie Blumen in Töpfen und Mülleimern werden niemals separat erstellt. Dies ist ein Modell oder mehrere Modelle, die an verschiedenen Orten platziert sind. Die ungefähre Anzahl der Objekte, die zur Vervollständigung des Rahmens gezeichnet werden, liegt jedoch nahe bei 4700. Dies gibt uns eine Vorstellung davon, wie viel zusätzliche Arbeit neben dem Rendern all dieser Modelle erforderlich ist.

Schauen wir uns ein anderes Beispiel eines Objekts an - eine von Aiden getragene Baseballkappe.



Dies ist ein Modell mit Textur und strukturierter Baseballkappe. Es ist ersichtlich, dass die Textur aus separaten Teilen besteht, die mit dem Modell verbunden sind.

Hinweis


Das Visier und der Hauptteil der Baseballkappe auf der Textur berühren sich nicht, da der Scan sehr kompliziert sein kann und bei Bedarf in mehreren verschiedenen Teilen durchgeführt werden kann. Manchmal erfordert die Texturierung eines Modells mit komplexer Form ohne sichtbare Probleme und Nähte einiges an Geschick.

Die gleichen Prinzipien, die wir bei Aidens Kopf gesehen haben, gelten auch für die Kappe. Wenn wir die spezifische Textur und die Zahlen ignorieren, die zum Auspacken erforderlich sind, ist das Prinzip immer dasselbe.

Um zu zeigen, was während der Entwicklung schief gehen kann und wie Sie Spaß beim Programmieren von Grafiken haben können, können wir ein kleines Experiment durchführen. Da die meisten Texturen eine quadratische Standardgröße haben und die Methode zum Umwickeln und Entfalten von Texturen auf dem Modell ebenfalls dieselbe ist, warum nicht ein wenig mit ihnen spielen? Was passiert, wenn wir die Textur von Aidens Kopf auf ein Baseballmützenmodell anwenden?


Bereits nicht sehr ähnlich der Aiden Pierce Legendary Baseball Cap.

Wo sich auf der Textur der Baseballkappe ein Logo befand, befanden sich Ohr und Zähne auf der Textur des Kopfes. Wo ein Visier war, waren nur Haare auf der Textur des Kopfes. Die Überlagerung ist genau gleich, es wird jedoch eine andere Textur verwendet. Natürlich wird dieses Beispiel ein Fehler im Spiel sein, aber überlegen Sie, was getan werden kann, wenn Sie die Textur animieren oder flackern lassen. In Spielen werden diese Dinge für verschiedene Effekte verwendet, die Sie jetzt bemerken können. Insbesondere das Spiel Saint's Row 4 verwendet ähnliche für Spezialeffekte der "Simulation".

Es wird auch nützlich sein, über die Konsequenzen nachzudenken - Spiele kombinieren sehr sorgfältig Paare von Modellen und Texturen, dh die einzigartigsten Modelle müssen mit ihren eigenen einzigartigen Texturen übereinstimmen.

Natürlich ist diese Regel nicht absolut - in einigen Fällen ist Textur aus Platzgründen ein sich wiederholendes Standardmuster, das für viele Objekte verwendet werden kann. Verknüpfte Objektgruppen - z. B. Zeitungshändler - können dieselbe Textur für verschiedene Zeitungen verwenden, wobei jede Zeitung einen kleinen Teil der Textur einnimmt.

Dies bedeutet jedoch, dass zum Erstellen des endgültigen Bildes alle Bausteine ​​vorhanden sein müssen, dh, dass viele erforderliche Modelle und Texturen erhalten werden können. Im nächsten Teil werden wir darüber sprechen, warum es sehr schwierig ist, einige Aspekte wie die Reflexion richtig umzusetzen. Ich werde auch darüber sprechen, wie Spiele kleine Tricks verwenden, um Zeit und Ressourcen zu sparen.

Teil 3. Was Sie nicht zeichnen müssen


Oft ist das Programmieren von Grafiken die Aufgabe, ein Dutzend verschiedener Einschränkungen auszugleichen, um den perfekten Kompromiss zu erzielen. Im letzten Teil haben wir gesehen, dass jedes Mal, wenn eine Szene gezeichnet wird, sie aus vielen kleinen Bausteinen zusammengesetzt wird - Menschen, Autos, Verkehrszeichen, Gebäude. Alles, was auf dem Bildschirm angezeigt wird, besteht aus einzelnen Komponenten, die gezeichnet werden müssen. Es gibt einige subtile Ausgleichsoperationen, die wir hier diskutieren werden.

Der Zentralprozessor und die Grafikkarte arbeiten beim Rendern des Rahmens zusammen. Der Rest des Spiels wird in der CPU ausgeführt, sodass entschieden wird, welche Objekte im aktuellen Frame gezeichnet werden sollen, wohin die Kamera schaut und welche Animationen abgespielt werden. Eine Grafikkarte ist ein „Arbeitstier“, das alle komplexen Arbeiten zum Rendern von Pixeln ausführt, weshalb es sich um ein separates Spezialgerät handelt.

Es stellt sich heraus, dass sowohl die CPU als auch die Grafikkarte Einschränkungen hinsichtlich der Geschwindigkeit oder des Umfangs der Berechnungen aufweisen. Dies sind jedoch verschiedene Arten von Einschränkungen.

Im Allgemeinen interessiert sich die CPU mehr für ihren eigenen Teil der Arbeit: Wie viele Objekte müssen wir insgesamt zeichnen? Wie unterschiedlich sind diese Objekte - sind es 100 identische Lichter oder 100 Büsche / Pflanzen / Bäume? Sind diese Objekte animiert, bewegen sie sich dynamisch und welche von ihnen sind statisch oder bewegungslos?

Das erste, was wir tun, um die Last so weit wie möglich zu reduzieren, ist, nur das zu zeichnen, was auf dem Bildschirm sichtbar ist. Dies scheint offensichtlich, aber die Implementierung erfordert sorgfältige Arbeit. Vergessen Sie nicht, dass wir jeden Frame von Grund auf neu erstellen. Daher müssen wir in jedem Frame jedes Objekt betrachten und feststellen, ob es sichtbar ist oder nicht. Dies bedeutet, dass in jedem Spiel überall eine schwarze Leere folgt, die dem Spieler folgt, und wenn er keine Objekte und Personen betrachtet, hören sie auf zu existieren.


In dieser Animation drehen wir die Kamera und zeigen die Leere hinter dem Player. Aufmerksame Zuschauer werden feststellen, dass es nicht ganz leer ist ...

In diesem Fall ist es schwierig, praktische Regeln zu entwickeln, aber im Allgemeinen können Sie ungefähr 1000 Objekte in der Szene zeichnen, ohne sich um den Platzmangel sorgen zu müssen. Wenn Sie jedoch 5.000 Objekte rendern müssen, sollten Sie über Tricks nachdenken. Vergessen Sie nicht, dass wir in den meisten Spielen, in denen der Spieler die Kamera steuern kann, nicht wissen können, in welchem ​​Winkel er aussehen wird. Sie müssen also Platz für Manöver sparen.

Es stellt sich heraus, dass es viele Tricks gibt, mit denen Sie eine gültige Ressource fast vollständig nutzen können, und sie sind besonders wichtig in Spielen wie Watch Dogs. Je näher Sie den Grenzen kommen und je mehr visuelle Qualität Sie mit der gleichen Anzahl von Objekten erzielen können, desto besser sieht das Spiel aus.

Selbst wenn Sie sich ansehen, was in der Szene vor Ihnen liegt, bedeutet dies nicht, dass die gesamte Stadt gezeichnet werden muss. Wenn sich links oder rechts ein riesiges Gebäude befindet, wird alles dahinter unsichtbar, sodass Sie es nicht zeichnen können. In ähnlicher Weise werden einige Objekte in der Ferne sehr klein, sodass wir uns nicht darum kümmern müssen, winzige Pflanzen und Sträucher in der Ferne zu zeichnen.


Diese Animation zeigt, dass, wenn Sie die Straße weiter hinuntergehen als wir sehen, nichts in den Seitenstraßen ist, aber in großer Entfernung die Details kleiner werden.

Tatsächlich gibt es in dieser Szene immer noch viele Objekte, die sich als unsichtbar herausstellen werden. In diesem Bereich bleibt noch viel zu erforschen, und es müssen verschiedene ausgefeilte Techniken angewendet werden. Sie müssen immer Kompromisse eingehen, aber wenn Sie ein wenig Zeit verbringen oder eine sehr clevere Methode finden können, um das Rendern von 100 Objekten fast ohne zusätzlichen Aufwand zu vermeiden, können wir die Szene noch komplexer oder dichter gestalten.

Es gibt auch ein anderes kleines Problem. In einigen Fällen müssen wir ein Gebäude zeichnen, das auf dem Bildschirm kaum sichtbar ist und weit darüber hinausgeht. Es verschwendet Ressourcen. Wir können diese Objekte immer in mehrere Teile unterteilen, dann kann jeder Teil gezeichnet oder übersprungen werden, dh es wird weniger Abfall entstehen. Jetzt aber haben wir die Gesamtzahl der Objekte erhöht gemacht , wenn sie sind auf dem Bildschirm, und das entgegengesetzte Problem geschaffen!

Dieses Beispiel ist eines von Hunderten, aber es ist leicht zu erklären, welche Entscheidungen getroffen werden müssen und welche Experimente durchgeführt werden müssen, um den perfekten Gleichgewichtspunkt für jedes Spiel zu finden.

Da die Aktion unseres Schusses von Watch Dogs in der Stadt stattfindet, können wir ihn von oben betrachten, um ungefähr zu verstehen, was genau gezeichnet wird. In diesem statischen Bild fällt besonders auf, dass Watch Dogs die Arbeit vierteljährlich erledigt.


Jetzt entfernen wir den sichtbaren Bereich vor der Kamera (Entschuldigung für die Installation, um Zeit zu sparen).


Ein ungefährer Sichtbarkeitsbereich der Kamera wird dem Bild überlagert. Die Breite dieses Dreiecks hängt vom Sichtfeld ab. Manchmal ist dies in Spielen eine benutzerdefinierte Option, manchmal ein konstanter Wert.


Hier ist eine Drahtgitteranzeige der Szene, das Sichtfeld der Kamera ist auf Weiß beschränkt.



Einige von Ihnen könnten sich bereits einen kleinen Trick vorstellen, mit dem Sie die Einschränkung des Renderns einer bestimmten Anzahl von Objekten umgehen können. Warum machen Sie die Objekte nicht zu einer sehr komplexen Kombination von allem auf kleinem Raum bis hin zu einzelnen Blättern? Dann ist das Zeichnen von 1000 Objekten mehr als genug.

Hier sind wir jedoch mit völlig anderen Einschränkungen konfrontiert: Grafikkarten haben eine begrenzte Leistung, und je komplexer das Objekt ist, desto länger dauert das Zeichnen. Das heißt, selbst ein Objekt kann, wenn es recht komplex ist, die Framerate des Spiels auf 20 FPS reduzieren. Aus diesem Grund habe ich gesagt, dass die Begrenzung der Anzahl der Objekte eher unscharf ist.

Die Zeit, die für ein Objekt aufgewendet wird, hängt von der Komplexität und Detailgenauigkeit der Modelle und Texturen sowie von der Raffinesse von Licht und Schatten ab. Dies ist auch der Grund, warum Spiele, die versuchen, komplexere oder komplexere Grafiken zu implementieren, in der Regel weniger komplexe und detaillierte Szenen verwenden. Durch das Balancieren werden die Maßstäbe in die eine oder andere Richtung verschoben, sodass Sie mehr Spielraum haben und das opfern können, was für das Spiel nicht so wichtig ist .


Dies ist eine Art Heatmap, die zeigt, in welchen Teilen der Szene sich besonders komplexe Modelle befinden. Beachten Sie, wie viele Probleme Bäume und Vegetation verursachen können.

Es gibt eine weitere Reihe von Techniken, die als „Level of Detail“ (LOD) bezeichnet werden und speziell zur Lösung solcher Probleme entwickelt wurden. Ähnlich wie wir die Anzahl der Objekte optimieren und alles Unnötige abschneiden können, können wir das Angebot an "Komplexität" erhöhen und unnötiges eliminieren.

Einer der Tricks ist eigentlich bekannt - dies verändert die Auflösung der Texturen. Dieses Thema überschneidet sich normalerweise mit vielen anderen, daher werde ich versuchen, es auf zugängliche Weise zu erklären.

Texturen in Spielen sind normalerweise Rechtecke mit einer Größe, die der Potenz von zwei entspricht - 512, 1024, 2048, 4096. Es gibt viele Gründe dafür, aber einer der Vorteile davon ist, dass Sie eine Textur der Größe 1024 x 1024 nehmen und einfach eine kleinere Version davon mit einer Größe von 512 x 512 erstellen können .

Aus den Gründen, die ich unten diskutieren werde, ist es immer notwendig, dass die Textur alle möglichen kleineren Versionen hat. Das heißt, eine Textur mit einer Größe von 1024 x 1024 hat kleinere Versionen von 512 x 512, 256 x 256, 128 x 128, 64 x 64, 32 x 32, 16 x 16, 8 x 8, 4 x 4, 2 x 2 und 1 x 1. Einer der Vorteile davon ist jedoch, dass wenn entfernte Objekte eine geringe Größe auf dem Bildschirm haben, das Anwenden einer 1024x1024-Textur auf sie bedeutet, Ressourcen zu verschwenden. Wir können sparen, indem wir kleinere Versionen derselben Textur verwenden.

In ähnlicher Weise können auch nahe Objekte als nicht sehr bedeutsam angesehen werden und kleinere Texturen für sie verwenden.

Hinweis


Wenn sich ein Spieler einem Objekt nähert, wird normalerweise die größte Textur verwendet. Wie die meisten Leute in einem bestimmten Spiel gesehen haben, geschieht dies jedoch nicht immer und die Texturen sehen vor dem Laden zu verschwommen aus. Dies geschieht normalerweise, weil Texturen nicht von einer DVD oder Festplatte direkt in den Speicher der Grafikkarte zum Rendern geladen werden können. Meistens geschieht dies, wenn ein Spieler seine Position abrupt ändert, z. B. während des Respawns, beim Laden eines neuen Levels oder bei sehr schnellen Bewegungen. In allen anderen Fällen werden Texturen normalerweise schrittweise geladen, während der Player um die Welt bewegt wird.

Sie können diesen Vereinfachungsprozess auch auf die im Spiel verwendeten Modelle anwenden, obwohl dies viel schwieriger ist. Indem Sie vereinfachte Versionen komplexer Objekte erstellen, können Sie sicherstellen, dass diese in großer Entfernung nicht einen Teil eines begrenzten Komplexitätsangebots verschlingen.

Dank vereinfachter Objekte und zugeschnittener Modelle können Sie viel Geld sparen und müssen diesen Ansatz in jedem Spiel wie Watch Dogs anwenden. Gleichzeitig kann es eine enorme Verschwendung von Ressourcen sein. Es ist notwendig, eine sehr durchdachte und ausgewogene Entscheidung darüber zu treffen, wie viele vereinfachte Versionen von Modellen erforderlich sind. Wenn zu wenige vorhanden sind, können Sie nicht zu viel sparen, oder es treten spürbare Qualitätssprünge beim Ändern auf. Wenn es zu viele davon gibt, verschwenden Sie Speicher und verbringen die Arbeitsstunden, die zum Erstellen von Objekten erforderlich sind.


So sehen komplexe Objekte und Charaktere aus der Ferne aus, wenn sie nicht von ihren sehr detaillierten Versionen zu unterscheiden sind.



Ich hoffe, dass Sie jetzt eine Vorstellung von den Problemen haben, die Grafikprogrammierer, Künstler und Leveldesigner versuchen, Grafiken von höchster Qualität mit hoher Geschwindigkeit zu kombinieren. Auf Konsolen ist diese Gleichung etwas einfacher zu lösen als auf dem PC, da die Ausrüstung konstant ist.

Im vorherigen Teil habe ich gesagt, dass ich darüber sprechen werde, warum es sehr schwierig ist, Reflexionen und ähnliche Dinge richtig umzusetzen. Der Grund ist ganz einfach: Die Reserven an Produktivität und Ressourcen, über die ich ständig spreche, ändern sich nicht, je nachdem, ob Sie ein Spiegelbild haben oder nicht. Wenn Sie eine Reflexion erstellen möchten, die wieder die gesamte Szene anzeigen kann, müssen Sie alle Arbeiten wiederholen, über die ich gesprochen habe. Darüber hinaus hängen die Reflexionen sehr stark von dem Winkel ab, in dem wir sie betrachten. Um genaue Reflexionen für jedes reflektierende Objekt zu erhalten, müssen sie ihre eigenen sein!

Dies kann sehr schnell außer Kontrolle geraten, und normalerweise erlauben sich Spiele, in denen es Reflexionen gibt, bestimmte Freiheiten oder Annahmen. Spiele erzeugen in komplexen Umgebungen sehr selten Reflexionen. Das Maximum kann ein Spiegel im Badezimmer sein, in dem sich nicht so viele Objekte befinden, die Komplexität der Szene gering ist und Sie sich daher zusätzliche Kosten leisten können. Vielleicht werden die wahren Reflexionen im Spiel nur auf unebenen oder welligen Oberflächen des Wassers sein, so dass selbst eine sehr raue und wenig detaillierte Szene ausreicht, um überzeugende Reflexionen zu erzeugen.

Es ist normalerweise schwierig, reflektierende Oberflächen vollständig zu vermeiden, weshalb Spiele vorgerenderte Bilder der unmittelbaren Umgebung verwenden, was zu einem „einigermaßen guten“ Ergebnis führt. Aber sie werden nicht genau unter die Lupe genommen, und wenn Sie sich die Überlegungen genau ansehen, werden Sie feststellen, dass dies eine Nachahmung ist. Es gibt moderne Techniken, die unter bestimmten Bedingungen helfen, Reflexionen zu erzeugen, und vielleicht werde ich später darüber sprechen, aber solche vorgerenderten („vorgerenderten“) Bilder werden immer noch benötigt.


Dieses gerenderte Bild wird als "Würfelkarte" bezeichnet. Es ist nicht ganz genau in Bezug auf den Ort, an dem Aiden steht, aber es ist nah genug an ihm.

Watch Dogs rendert Reflexionen in Echtzeit. Ich habe dieses Problem nicht im Detail untersucht, aber ich glaube, dass sie immer wiedergegeben werden, wenn der Charakter auf der Straße ist, und hauptsächlich dazu verwendet werden, seine genauen Reflexionen über das Auto zu erhalten, in dem er sitzt, um das Image zu verbessern und ihm ein leichtes Gefühl für die Realität zu geben . Da sich der Spieler immer auf sein Auto und seine unmittelbare Umgebung konzentriert, ist die Tatsache einer falschen Reflexion anderer Autos kaum spürbar.

Es stehen viele Näherungswerte zur Verfügung, um das Rendern dieser Reflexionen zu beschleunigen. Zum Beispiel werden in der Reflexion viel weniger Objekte gerendert als in der realen Szene - insgesamt etwa 350 - und viele von ihnen sind im Vergleich zu den Vollversionen sehr vereinfacht. Ich vermute, dass komplexe Objekte wie Menschen unabhängig von der Entfernung vollständig verworfen werden, aber ich habe diese Theorie nicht getestet. Außerdem gibt es auf diesen Objekten keine Schatten, und die Beleuchtung ist sehr einfach - nur die, die von Sonne und Himmel kommt. Reflexionen werden vom Boden aus wie bei einer „Fischaugen“ -Linse wiedergegeben, dh Reflexionen der Erde selbst sind unmöglich, und was sich daneben befindet, weist nur sehr geringe Details auf.

Aber trotz all dieser Vereinfachungen kommen Reflexionen nur mit dem fertig, was beabsichtigt war. Wenn Sie unter den Schienen fahren, können Sie das richtige Spiegelbild mit Blick auf das Auto erhalten, was in der Praxis nicht funktionieren würde.

Diese Entscheidung war absichtlich und nicht leicht zu treffen. Aktien sind ein konstanter Wert. Wenn Sie also Raum für diese Überlegungen lassen, müssen Sie etwas anderes opfern.


Hier ist eine sehr "fischige" Ansicht der Szene um Aiden mit einer Ansicht von unten, die für Reflexionen gemacht ist. Sie können entlang der beiden Lichter und Schienen des Zuges navigieren.



Es gibt noch einen anderen Teil der Arbeit, den ich hier erwähnen möchte - Schatten. Später möchte ich darüber sprechen, wie Schatten funktionieren, da dies ein interessantes Thema ist. Jetzt ist es jedoch am wichtigsten, sich daran zu erinnern, dass Schatten Reflexionen sehr ähnlich sind. Jede Lichtquelle, die einen Schatten wirft, sollte ein Szenenbild aus ihrer Sicht rendern. Zu diesem Zeitpunkt , um Wege zu erleichtern die Arbeit nicht so viel - richtig zu berechnen Schatten jede Lichtquelle ist erforderlich , um dieses Bild zu haben.

Hinweis


, . , «» , . , , .

Die offensichtlichste und bedeutendste Quelle für schattenspendendes Licht ist die Sonne (oder der Mond, wenn das Ding nachts passiert). Da die Sonne riesig ist, werden normalerweise 3-5 Bilder dafür gerendert und nicht eines, wie im Fall von Scheinwerfern oder einer Taschenlampe.

Leider ist dies einer der Fälle, in denen Wachhunde nicht als gutes Beispiel dienen können. Die Berechnung der Schatten im Spiel ist ziemlich kompliziert und meines Erachtens speziell für den Fall des Schattenwerfens in der Stadt optimiert. Daher sollte ich besser zu Far Cry 4 wechseln und die Berechnung der Schatten am Beispiel eines Frames aus diesem Spiel in Betracht ziehen.


Hier ist eine Szene aus Far Cry 4, die ich als Beispiel verwende.


Hier ist ein Bild mit Informationen zu den Schatten dieser Szene - jede von ihnen erfordert eine völlig neue Darstellung der Szene.

Wenn wir der Lichtquelle Schattenwurf hinzufügen müssen, müssen wir die Szene daher noch einmal rendern. Hier können Sie auch einige der Näherungen verwenden, die bei Reflexionen verwendet werden, nur dass sie viel kleiner sind. Sie können kleine oder entfernte Objekte überspringen. Beachten Sie jedoch, dass diese Objekte keine Schatten werfen. Sie können das Bild sehr klein rendern, aber dann sind die Schatten körnig und detailarm. Normalerweise ist es nicht möglich, eine sehr vereinfachte Version des Objekts zu verwenden, da das Objekt dann anscheinend einen Schatten auf sich selbst wirft oder Lücken zwischen dem Objekt und seinem Schatten auftreten.

Eine weitere Konsequenz, die sehr leicht zu übersehen ist, ist die Notwendigkeit, für jede Lichtquelle Schattierungsbilder zu erstellen. In vielen Fällen ist es möglich, Lichtquellen durch Kombination zu vereinfachen - bei Wachhunden geschieht dies mit Autoscheinwerfern.

Wenn beide Lichter eingeschaltet sind, wird nur eine Lichtquelle gezeichnet, die jedoch eine spezielle Form hat, wodurch sie wie zwei Strahlen aussieht. Wenn die Scheinwerfer Schatten haben, ist dies nicht so einfach und wird viel deutlicher - wenn der Spieler vor dem Auto vorbeikommt, kommt das Licht von irgendwo zwischen den beiden Scheinwerfern. Vielleicht müssen Sie dann die Scheinwerfer trennen, aber gleichzeitig fallen nicht nur zusätzliche Kosten für die Berechnung der Schatten an, sondern Sie müssen auch neue Beleuchtung zeichnen.



Die Hauptsache, die ich bei all dem hervorheben wollte, war der Kompromiss. Wir können sicherlich all diese Annäherungen loswerden, aber wir müssen unsere Ressourcenreserven dafür ausgeben, dh etwas anderes opfern. Jeder Spieleentwickler muss entscheiden, worauf es für ihn wichtig ist, sich im Spiel zu konzentrieren, und was den Spieler am meisten beeindruckt oder nervt.

Teil 4. Verschieben der Peaks


In diesem Teil werde ich mehr über die technischen Details der Animation von Objekten in der Szene sprechen.

Grafikprogrammierer sprechen oft von der „Grafikpipeline“. 3D-Grafiken ähneln einem Fließband mit einer klar definierten Bewegung von einer Stufe zur anderen, funktionieren jedoch nicht jeweils nur mit einem Objekt.

Alle modernen Grafikkarten haben ungefähr das gleiche Förderband. Sie verfügen über spezielle Geräte und Software, die direkt „in Silizium“ geflasht werden, um die Geschwindigkeit des Förderers zu maximieren. Natürlich gibt es viele Unterschiede zwischen verschiedenen Herstellern und Familien von Grafikkarten, aber normalerweise müssen wir uns keine Gedanken darüber machen, wie sie auf dieser Ebene funktionieren.

Hinweis


Wenn Sie daran interessiert sind, wie alles auf abstrakter Hardwareebene funktioniert, empfehle ich eine Reihe von Artikeln von Fabian Giesen über die Grafikpipeline . Diese Artikelserie ist viel detaillierter und erfordert viel mehr Verständnis als mein Beitrag.

Ich werde viele Details überspringen, um interessante und wichtige Prinzipien zu erklären. In diesem Teil werden wir uns den ersten Teil der Pipeline ansehen, der als Vertex Shader bezeichnet wird .

Shader verbreiteten sich vor ungefähr 16 Jahren nach der Veröffentlichung von DirectX 9, in dem Vertex- und Pixel-Shader auftraten. Um zu erklären, was Shader sind und sie mit dem zu vergleichen, was sie früher waren, werde ich über die Arbeit sprechen, die sie leisten.


Aidens Skelettkopf ist wieder bei uns.

Ich möchte Sie daran erinnern, dass wir in Teil 2 die Modelle untersucht haben, aus denen die Spielwelt erstellt wurde. Diese Muster bestehen aus einzelnen Punkten, die als Eckpunkte bezeichnet werden und in Dreiecken verbunden sind. Ich sagte, dass ich Ihnen später mehr darüber erzählen werde, und jetzt halte ich mein Versprechen.

Da alles in der Spielwelt aus Eckpunkten besteht, muss alles, was mit diesen Modellen gemacht werden muss, mit Eckpunkten ausgeführt werden. Wenn es um die Grafikkarte geht, sieht sie nur eine lange Liste von Eckpunkten. Für sie gibt es keine laufenden Animationen, schwankenden Blätter von Bäumen oder andere abstrakte Konzepte.

Schauen wir uns ein einfaches Beispiel dafür an, was wir tun müssen - Objekte in der Welt bewegen und positionieren. Nehmen wir zunächst einen einfachen Fall, keinen Charakter.

Beim Erstellen von Objekten in 3D-Editoren wie Maya und 3D Studio Max bauen Künstler immer in ihrer eigenen Welt. Diese Objekte werden nicht sofort im Gefolge von Chicago erstellt, sondern ihre Umgebung sieht aus wie ein "leerer weißer Raum" aus der Matrix. Jedes Objekt befindet sich im Zentrum der absoluten Leere.


Hier ist eine Ampel im Spiel irgendwo unter den Schienen, und sie befindet sich in ihrer eigenen Welt.

Beim Speichern auf der Festplatte hat das Modell keine Ahnung, wo es sich auf der Welt befindet und wann es heruntergeladen und auf die Grafikkarte übertragen wird. Das heißt, wenn es darum geht, Objekte zu zeichnen, müssen wir sie aus unserer eigenen Welt in die Szene verschieben, die wir zeichnen. Dies geschieht mit jedem gezeichneten Objekt, und selbst bewegungslose Objekte wie Gebäude und Brücken bewegen sich in jedem Bild von ihrer eigenen Welt zur Szene.


Hier sehen wir mehrere Ampeln, die bereits in einer teilweise konstruierten Schlussszene platziert sind.

Wie ich oben erwähnt habe, können wir nur mit den Spitzen arbeiten. Wir können nicht einfach zur Grafikkarte sagen: "Können Sie diese Ampel unter die Brücke stellen? Und dann noch einen etwas weiter setzen? Großartig! "

Anstatt der Grafikkarte zu sagen, was sie mit dem Objekt selbst tun soll, müssen wir daher sagen, was mit all ihren Eckpunkten zu tun ist. Es stellt sich heraus, dass in diesem Fall alles sehr einfach wird. Wenn wir alle Scheitelpunkte auf genau dieselbe Weise ändern und sie relativ zueinander bewegungslos bleiben, ähnelt dies dem Verschieben eines Objekts als Ganzes. Wir müssen nur herausfinden, was „Veränderung“ als Transformation bezeichnet.

Hinweis


Die mathematischen Berechnungen all dessen sind nicht besonders kompliziert, gehen aber über den Rahmen des Artikels hinaus. Wenn Sie bereits lineare Algebra studiert haben, wissen Sie wahrscheinlich alles, was Sie brauchen - im Grunde kommt es auf die Matrixmultiplikation von Vektoren an.

Vor dem Erscheinen von Scheitelpunkt-Shadern waren die möglichen Optionen zum Transformieren von Scheitelpunkten in der Grafikkarte sehr begrenzt. Verfügbar waren sich bewegende und rotierende Objekte sowie einige andere Vorgänge, aber nichts besonders Redundantes oder Kompliziertes.

Vertex-Shader sind kleine Computerprogramme, die auf einer Grafikkarte ausgeführt werden. Sie nehmen einen Scheitelpunkt, führen alle erforderlichen Aktionen damit aus und geben einen Ausgabescheitelpunkt aus. Sie können es nicht nur bewegen, sondern auch auf und ab springen lassen, sich vom nächsten Gipfel entfernen, je nach Wind schwingen, animiert sein und vieles mehr.

Ich nahm einen der Vertex-Shader, die in Watch Dogs verwendet werden, und experimentierte ein wenig damit, um zu zeigen, was er tut. Dies ist eine ziemlich mühsame Aufgabe, aber ich habe es geschafft, den für die Charaktere verwendeten Vertex-Shader zu finden und zu ändern. Es gibt einen anderen Vertex-Shader, der für die Haut verwendet wird, beispielsweise für Gesichter und Hände, aber Sie werden das Prinzip schnell verstehen.


Ich habe eine sehr einfache Änderung vorgenommen, die dem Charaktermodell eine Biegung hinzufügt, aber alles andere wird wie gewohnt verwendet.

Die Animation oben zeigt, dass die Charaktere irgendwie seltsam verzerrt sind. Dies bringt uns zurück zu dem Prinzip: "Wenn Sie jeden Scheitelpunkt verschieben, ähnelt dies dem Verschieben des gesamten Objekts." Die am Vertex-Shader vorgenommene Änderung funktioniert jeweils nur für einen Vertex. Da jedoch alle mit derselben Verzerrung arbeiten, wird der Effekt auf das gesamte Objekt angewendet.

Sie können auch Änderungen an dem Teil der Transformation vornehmen, der für das „einfache Verschieben an Ort und Stelle“ verantwortlich ist, sodass sie den Charakter nicht an der richtigen Stelle platziert, sondern über den Boden hebt. Dies wird nicht mit Hilfe der Physik simuliert, daher hat es nichts mit Schwerkraft oder Kollisionen mit anderen Objekten zu tun - wenn wir wollen, können wir alle in die Luft fliegen lassen.


In dieser Animation haben wir den Vertex-Shader dazu gebracht, das Objekt schrittweise anzuheben und abzusenken.

Das alles ist natürlich nicht sehr konstruktiv, aber es gibt uns eine allgemeine Vorstellung davon, wie Vertex-Shader funktionieren. Wenn wir jetzt die Blätter auf den Bäumen so animieren möchten, dass sie schwingen, würden wir ungefähr dasselbe tun. Nur anstatt zu heben und zu senken, würden sie in Windrichtung schwingen. Dann können wir die Stärke des Windes so ändern, dass die Bäume mehr oder weniger schwanken.


Hier sehen wir, was passiert, wenn sich alles um das Siebenfache erhöht.

Ich vereinfache ein wenig, aber im Grunde besteht die Aufgabe der meisten Vertex-Shader darin, „Objekte an ihren Platz zu verschieben“. Die Ausnahme bilden alle animierten Objekte - Menschen, Tiere sowie Objekte wie schwingende Seile, flatternde Kleidung usw.



Das Animieren von Menschen ist mit der Idee verbunden, ein Skelett und eine „Haut“ zu verwenden. Ein Skelett ist eine einfache Beschreibung eines sich bewegenden Charakters. In dieser Phase sind wir nicht besorgt über Schnallen, Hüte oder Jeans, die nicht animiert sind - nur wichtige Bewegungen, die für das menschliche Skelett am besten geeignet sind, sind für uns wichtig.


Hier ist ein einfaches Skelett einer menschlichen Figur dargestellt. Es wurde nicht von Watch Dogs übernommen, da das Skelett außerhalb des 3D-Editors schwer zu visualisieren ist.

Bild lizenziert von Attribution-ShareAlike CC BY-SA © MakeHuman Team 2001-2014


Dies ist eine Snap-Pose oder T-Pose, die zeigt, wie ein Charakter ohne Verwendung von Animationen aussieht.

Animationen - Laufen, Gehen, Springen - gelten nur für dieses Skelett. Dies macht den gesamten Prozess sehr einfach, da wir nur etwa hundert Knochen anstelle von Tausenden und Abertausenden von Eckpunkten berücksichtigen müssen.

Nach dem Erstellen des Skeletts wird jeder Scheitelpunkt in dieser statischen Pose an einem oder mehreren Knochen befestigt, und diese Verbindung wird als "Enthäuten" bezeichnet. Zum Zeitpunkt der Halbwertszeit 1, als diese Technologie eingesetzt wurde, war jeder Scheitelpunkt nur einem Knochen zugeordnet. Heutzutage können sie sogar vier Knochen verbinden, während jedem Knochen ein Gewicht gegeben wird, von dem der Grad des Einflusses des Knochens auf die Spitze abhängt. Dank dieser Funktion erhalten Sie eine flüssigere Animation, bei der sich die Knochen in verschiedenen Bereichen schneiden können, ohne dass beim Bewegen von Armen oder Beinen scharfe Winkel entstehen.


Dies ist das oben gezeigte Skelett mit gedrehtem Oberschenkelknochen. Die Farben zeigen das Gewicht des Hüftknochens relativ zu den Oberseiten des Modells.

Bild lizenziert von Attribution-ShareAlike CC BY-SA © MakeHuman Team 2001-2014

Diese Technologie hat ihre Grenzen, insbesondere an Stellen, an denen Kleidung und Haut in Scharnieren zusammengedrückt oder gedehnt werden, beispielsweise an Ellbogen und Schultern. Dies ist eine unvollständige, aber sehr effektive Art zu animieren. Die schwerwiegendste Einschränkung besteht darin, dass es sehr schwierig ist, auf diese Weise überzeugende Gesichtsanimationen zu erstellen. Sie können viele „falsche“ Knochen auf Ihrem Gesicht erzeugen, zum Beispiel für die Augenbrauen und um den Mund herum, aber dies ist nur eine grobe Annäherung an Muskeln und Haut.

Ein weiteres wichtiges Merkmal dieser Technik ist, dass der Scheitelpunkt- und Knochenvergleich sehr spezifisch ist und damit zusammenhängt, wie dieser Vergleich durchgeführt wird. Es ist möglich, Animationen für mehrere verschiedene Modelle zu verwenden, aber jedes einzelne Modell, in dem Sie das Skelett verwenden möchten, muss mit Knochen verknüpft sein. Der Grund ist, dass die Animationen die Eckpunkte von ihrer ursprünglichen Position relativ zu ihren Skeletten verschieben. Wenn sich die Eckpunkte nicht an den erwarteten Positionen befinden, treten Probleme auf.


Wenn das Modell nicht mit dem von ihr verwendeten Skelett übereinstimmt, sind die Animationen völlig falsch.


Wenn wir den Charakter doppelt so breit machen, erhalten wir einen ähnlichen Effekt wie Drakes "überfressende Donuts" , aber es fällt auf, dass die Animationen, die näher an den Pinseln liegen, falsch werden, da sie hier am weitesten von ihren ursprünglichen Positionen entfernt sind.

Die erste Animation mag Ihnen seltsam erscheinen - solche Pannenanimationen treten in Spielen sehr häufig auf. Normalerweise werden sie dadurch verursacht, dass falsche Animationen auf das Skelett angewendet werden oder das Modell das falsche Skelett verwendet. Wie bei Texturen und Modellen müssen Skelett, Haut und Modell sehr sorgfältig verglichen werden, da sich die Ergebnisse sonst schnell als traurig herausstellen.

Ich hoffe, Sie haben eine Vorstellung vom Zweck von Vertex-Shadern und verstehen, wie Animationen verwendet werden, um ein statisches Modell in einen lebenden Charakter zu verwandeln.

Source: https://habr.com/ru/post/de430930/


All Articles