Das Gesicht eines Charakters für das Spiel "OnAir" erstellen

Guten Tag! Mein Name ist Daria, ich bin ein 3D-Künstler im RainStyle-Produktionsstudio. Wir entwickeln derzeit ein Sci-Fi-Horror-Spiel namens "On Air" .

Bild

Das Spiel erzählt von mysteriösen Ereignissen, die mit der Hauptfigur passiert sind, die versehentlich im amerikanischen Hotel Algol übernachtet hat. Dieser Vorfall wird sein Leben komplett verändern und ihn vor das Unbekannte stellen.

Dies ist unser erstes Spielprojekt und darin versuchen wir, den maximalen Realismus der Charaktere zu erreichen, ihre Emotionen und ihren Charakter zu vermitteln. Um sie zu erstellen, wurde daher beschlossen, die Gesichts-Scan-Technologie zu verwenden. Als Teil der Ziele des Projekts benötigen wir zwei Detaillierungsgrade für die Charaktere: für das Rendern - für die Kinematik und Low Poly - für die Verwendung im Spiel selbst.

Das Spiel On Air wird auf der Unreal Engine 4 entwickelt. Wir planen, mehrere Artikel zu schreiben, in denen wir die Phasen der Charaktervorbereitung detailliert beschreiben.

Im Moment erstellen wir eine Demoversion des Spiels, die bald in Steam erscheinen wird. In diesem Artikel werde ich über die Anfangsphase der Erstellung des Gesichts der Hauptfigur unseres Spiels sprechen.

Bild

Teil 1


Das Bild unten zeigt einige der Emotionen, die wir nach der Verarbeitung der Scans erhalten haben.

Bild

Grundsätzlich sind sie übertrieben und scheinen nicht realistisch. Dies wurde absichtlich gemacht. Tatsache ist, dass die Grundlage dieser Methode zur Erstellung eines Gesichts das Prinzip des Mischens der Formen „Mischformen“ ist. Das heißt, jede dieser Emotionen wird nicht in einer „reinen“ Form angewendet, sondern in Kombination mit anderen. Ich werde ganz am Ende des Artikels mehr darüber sprechen. Zunächst müssen Sie herausfinden, was mit dem gescannten Kopf zu tun ist und wie wir ihn verwenden können. Natürlich erlaubt die Topologie des Scans nicht, ihn als Modell zu verwenden, aber durch Backen der normalen Karte erhalten wir die Hauptmerkmale des Gesichts, der Falten, Poren, Beulen oder Narben. Auch aus dem Scan können wir die Textur der Grundfarbe extrahieren.

Bild

Das Wrap 3.3-Programm hilft uns dabei. Es wird häufig zur Verarbeitung gescannter Modelle verwendet. Mit seiner Hilfe werden wir unser zukünftiges Kopfmodell auf Scans projizieren.

Teil 2


Zuerst müssen Sie das sogenannte Basisnetz erstellen. Das heißt, ein neutraler Gesichtsausdruck, der allen Emotionen zugrunde liegt. Unser neutraler Emotionsscan sieht folgendermaßen aus:

Bild

Das Wrap 3.3-Programm verfügt über ein Knotensystem, dh alle Funktionen werden in Form von Knoten (Knoten) dargestellt, die durch eine Kette miteinander verbunden sind.

Die Knotenauswahl erfolgt mit der Tabulatortaste. Unter Verwendung der Knoten LoadGeom und LoadImage wird ein Scan mit einer neutralen Emotion und der entsprechenden Textur geladen. Geben Sie dazu den Pfad im Fenster Dateinamen an. In den Einstellungen des Knotens „LoadGeom“ können Sie verschiedene Modi für die Anzeige der Geometrie auswählen (die Drahtgitterfunktion ist in der Abbildung unten deaktiviert). Hier können Sie auch die Farbe der Geometrie (funktioniert nicht, wenn die Textur verbunden ist), die Koordinaten und die Skalierung ändern.

Bild

Als Nächstes müssen Sie das Basisnetz laden, das auf diesen Scan projiziert wird. Sie finden es auf der Registerkarte "Galerie". Hier sind viele vorgefertigte Emotionen. In diesem Fall wähle ich Basemesh.

Bild

Basemesh sollte grob mit einem Scan abgeglichen werden. Dazu können Sie die Koordinatenachse verwenden.

Um das Basisnetz auf den Scan zu projizieren, verwende ich den Wrapping-Knoten. Wenn Sie mit der Maus über die Knoten des Knotens fahren, wird ein Tooltip angezeigt: der erste Knoten, Floating Geometry - für die projizierte Geometrie, der zweite Knoten, Fixet Geometry - für das feste Objekt, über das die Geometrie projiziert wird (in unserem Fall ist dies ein Scan mit einer neutralen Emotion).

Bild

Um die Berechnung zu starten, müssen die Punkte auf beiden Modellen markiert werden, die einander entsprechen. Hierzu wird der Knoten Punkte auswählen verwendet, der mit den entsprechenden Knoten der Modelle verbunden ist. Wechseln Sie nach Auswahl dieses Knotens zur Registerkarte Visual Editor. Mit der enthaltenen Funktion zum Synchronisieren von Ansichten können Sie Kameras für das linke und rechte Fenster synchronisieren.

Bild

Wenn das projizierte Modell Polygone enthält, die an Ort und Stelle bleiben sollen, müssen Sie diese mit der Funktion Polygone auswählen auswählen. Andernfalls können Artefakte im Zusammenhang mit den internen Details des Netzes auftreten.

Bild

Verwenden Sie die Registerkarte Visueller Editor, um den Knoten Polygone auswählen zu verwenden. Hier können Sie die Polygone auswählen, die Modelle aus der Galerie in Polygruppen unterteilt sind. Dies vereinfacht die Aufgabe: Sie können im oberen Bereich ausgewählt oder abgewählt werden.

Ich hebe die inneren Teile des Rachens, der Nasenlöcher, der extremen Augenlider und des unteren Halses hervor.

Bild

Bild

Danach wird das Modell korrekt projiziert.

Bild

Für mehr Granularität können Sie auch den Subdivide-Knoten verwenden. Es wird mit dem Basisnetz verbunden und alle Knoten darunter werden mit seinem unteren Knoten (Ausgang) verbunden.

Bild

Als nächstes backen Sie die Textur vom Scan bis zum Basisnetz. Hierzu wird der Knoten Textur übertragen verwendet. Der Knoten Quellgeometrie stellt eine Verbindung zu dem Modell her, mit dem die Textur gebacken wird. In unserem Fall ist dies ein Scan. Der Zielgeometrieknoten ist mit dem Basisnetz verbunden, jedoch nicht mit dem LoadGeom-Knoten, sondern mit dem Wrapping-Knoten, da die bereits geänderte, projizierte Geometrie verwendet wird.

Bild

In den Einstellungen dieses Knotens können Sie die Qualität der gebackenen Textur auswählen. Danach lohnt es sich, den Knoten Bild extrapolieren hinzuzufügen, um die transparenten Stellen auszufüllen, und die resultierende Textur mit dem Knoten Bild speichern und der Schaltfläche Aktuellen Rahmen berechnen zu speichern. Die Geometrie wird auf die gleiche Weise mit dem Knoten Geom speichern gespeichert.

Bild

Teil 3


Nachdem wir eine neutrale Emotion und Textur dafür erhalten haben, können wir Geometrie für andere Emotionen erhalten. Laden Sie dazu das Scanmodell und Basemesh mit Texturen.

Bild

Als nächstes müssen Sie Basemesh entsprechend dem Scan ausrichten. Für den Anfang können Sie Modelle ungefähr mithilfe von Koordinatenachsen vergleichen.

Bild

Ein Knoten, mit dem Sie die Modelle genauer zueinander ausrichten können - Starre Ausrichtung. Der schwebende Geometrieknoten verbindet die Geometrie, die ausgerichtet werden muss. Im Knoten "Feste Geometrie" gibt es jeweils statische Geometrie (in unserem Fall ist dies ein Scan).

Bild

Wenn Sie den Knoten Starre Ausrichtung verwenden, müssen Sie den Knoten Punkte auswählen verwenden:

Bild

Mein Modell verfügt über Kontrollmarkierungen, die die Auswahl von Punkten vereinfachen. Um die Modelle zueinander auszurichten, müssen Punkte auf den Teilen des Gesichts platziert werden, die sich bei der Darstellung einer bestimmten Emotion geringfügig ändern. Bei dieser Emotion ist dies die Stirn, der obere Teil der Nase, der Hals usw. Es ist auch ratsam, Punkte auf allen Seiten des Modells zu platzieren (z. B. nicht nur auf dem Gesicht, sondern auch auf dem Hinterkopf und den Ohren).

Bild

Als Ergebnis erhalten wir Modelle relativ zueinander ausgerichtet:

Bild

In den Einstellungen des Knotens "Starre Ausrichtung" gibt es eine Funktion "Skale anpassen". Es wird verwendet, wenn Modelle ebenfalls skaliert werden müssen.

Danach können Sie das Basisnetz auf den Scan projizieren. Zu diesem Zweck verwenden wir den Knoten Optical Flow Wrapping. Sie können die Geometrie entsprechend der Textur des Scans ausrichten. Gleichzeitig stimmt die resultierende Textur der Emotionen vollständig mit der Textur des Basisnetzes überein, mit Ausnahme von Falten, Falten und anderen Veränderungen. Alle Unregelmäßigkeiten der Haut und der Poren bei dieser Methode bleiben bestehen.

Bild

Vor der Verwendung des optischen Stroms wird wie im ersten Fall der Knoten Polygone auswählen verwendet:

Bild

Somit bleiben die festen Teile des Kopfes an Ort und Stelle.

Sie können auch den Knoten Punkte auswählen verwenden. Hier sind die Punkte auf den beweglichen Teilen des Gesichts:

Bild

Wechseln Sie als Nächstes zu den Einstellungen für den optischen Fluss. Kameras, die angepasst werden können, wurden im Visual Editor-Fenster um das Modell angezeigt.

Bild

Oben befindet sich ein Dropdown-Menü, mit dem Sie von der Kamera aus zur Ansicht gelangen können. Standardmäßig gibt es 13, Sie müssen sie so einstellen, dass das Gesicht vollständig in den Rahmen passt.

Bild

Auf Empfehlung der Entwickler lasse ich fast alle Einstellungen standardmäßig, mit Ausnahme der endgültigen Parameter Resolution Resolution und Optical Flow Smoothness:

Bild

Danach können Sie auf Berechnen klicken und das Ergebnis anzeigen:

Bild

Nachdem das Netz genau auf den Scan projiziert wurde, müssen Sie die Textur backen. Dies geschieht nach dem gleichen Prinzip wie im ersten Teil des Artikels:

Bild

Wenn Sie die resultierende Textur mit der Textur des Basisnetzes kombinieren, werden einige Details hinzugefügt, aber gleichzeitig stimmen die Kontrollpunkte überein:

Bild

Danach können die Textur und die resultierende Geometrie gespeichert werden.

Bild

Als Ergebnis haben wir ein Netz einer neuen Emotion mit einer Textur erhalten.

Teil 4


Mit der Methode „Formen mischen“ können Sie „Emotionen mischen“. Laden Sie dazu bereits empfangene Netze in den Knoten Mischformen.

Bild

Ich lud neutrale Emotionen in den ersten Knoten. Durch Verschieben der Schieberegler in den Knoteneinstellungen können Sie auswählen, wie stark diese oder jene Emotion ausgedrückt werden soll. Damit diese Methode funktioniert, müssen Modelle dieselbe Topologie haben.

Bild

Bild

Ergebnis


Der obige Prozess ist nur ein kleiner Teil einer sehr umfangreichen Arbeit. Nach dem Empfang von LowPoly-Kopfmodellen mussten normale Karten, Rauheiten, Untergründe usw. erstellt und der Shader konfiguriert werden (in unserem Fall haben wir den Shader für das Rendering und die Engine konfiguriert). Augen, Kleidung und Haare wurden ebenfalls separat erstellt. Es ist auch erwähnenswert, dass nur drei Personen diese Aufgabe ausgeführt haben. Dies war unsere erste Erfahrung bei der Erstellung eines sehr detaillierten Charakters. Wir waren mit dem Ergebnis zufrieden, werden aber nach mehr streben.

Bild

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


All Articles