Das Deformer-Diagramm ist ein Plugin, mit dem Sie Deformer Graph-Assets erstellen und bearbeiten können, die Mesh-Deformationen für jedes geskinnte Mesh in Unreal Engine anpassen. Mit Deformer-Diagrammen können Sie eine Logik erstellen und ändern, die die Geometrie des Mesh anpasst, um das Deformationsverhalten zu verfeinern oder völlig neue Deformationen innerhalb der Engine zu erstellen. Deformer-Diagramme werden oft zur Feinabstimmung von Skinning, Stoff- und Groom-Verhalten während der Bewegung für Charaktere verwendet, oder für einmalige Animationen, die sich mit Deformation-Logik einfacher erstellen lassen als handgefertigte Animationen.
Dies ist ein Beispiel eines Groom mit (links) und ohne Deformer, der jede Kurve „begradigt“.
![]() |
![]() |
|---|---|
| Groom mit einem Deformer. | Groom, ohne dass ein Deformer jede Kurve „begradigt“. |
Groom Deformer-Diagramm
Ein Deformer-Diagramm drückt die angewendete Deformation als ein Diagramm aus, wobei der Knoten „Custom Compute Kernel“ den Code enthält, der die Deformation verarbeitet. Der Input für die Deformation kann aus verschiedenen Quellen stammen, etwa Szenendaten, Grooms und Hilfslinien. Der Diagramm-Output schreibt die Werte des Groom, etwa Position und Attribute.
Unter Deformer-Diagramm erhalten Sie einen genaueren Überblick über die Verwendung von Deformer-Diagrammen und können sich mit seinem Editor vertraut machen.
Das Deformer-Diagramm verfügt über mehrere wichtige Bereiche, die Sie beachten sollten:
- Quellen- und Parameter-Panels
- Deformer-Diagramm
- Details-Panel
- Shader-Texteditor-Panel
Die wichtigsten Elemente, aus denen ein Deformer-Diagramm besteht, sind:
-
Der Primary-Knoten bietet eine Bindung an die Art von Daten, die er bereitstellt. Er sollte auf Groom Component festgelegt sein.
-
Die Input-Knoten Groom und Guides. Diese bieten Ihnen Zugriff auf die Groom- bzw. Hilfsliniendaten.
-
Der Knoten Custom Compute Kernel (MyKernel) definiert die Deformation, die auf den Groom und die Hilfslinien angewendet wird.
-
Der Output-Knoten Write Groom schreibt modifizierte Groom-Daten aus.
- Dieser Knoten enthält ein paar Einschränkungen:
- Verwenden Sie die Outputs Position oder Radius, um die Position und den Radius des Groom zu schreiben. Verwenden Sie den Position and Radius-Output, um sowohl die Position als auch den Radius auszugeben.
- Nur bestehende Attribute innerhalb eines Groom können ausgeschrieben werden. Zum Beispiel können Sie nur Rauheit und keine Farbe ausschreiben, wenn ein Groom-Asset ein Rauheitsattribut, aber kein Farbattribut hat.
- Im Shader Text Editor können Sie die Deklarationen (schreibgeschützt) des Knoten „Custom Compute Kernel“ sehen und Ihren benutzerdefiniert HLSL Code hinzufügen, um die Deformation des Groom zu definieren.
Einrichten eines Groom-Deformer-Diagramms
Die Nutzung dieser Funktion erfordert zuerst die Aktivierung des Deformer Graph-Plugins im Plugins-Browser und einen Neustart der Engine, damit die Änderungen wirksam werden.
So richten Sie einen Groom mit einem Deformer-Diagramm ein:
- Erstellen Sie ein Deformer Graph-Asset im Inhaltsbrowser.
- Legen Sie im Panel Source die Dropdown-Liste des Primary-Knotens auf Groom Component fest und ziehen Sie den Knoten in das Diagramm.
-
Klicken Sie mit der rechten Maustaste im Diagramm und fügen Sie folgende Knoten hinzu:
- Einen Groom-Daten-Interface-Knoten, der Ihnen Zugang zu allen Eigenschaften des primären Groom gibt. Einen Write Groom-Output-Daten-Interface-Knoten, der Ihnen Zugang zu allen nicht schreibgeschützten Eigenschaften des primären Groom gewährt.
- Einen Custom Compute Kernel-Knoten, um die Deformationslogik dieses Groom zu definieren.
-
Verbinden Sie die Knoten im Diagramm wie folgt:
- Durch Ziehen und Ablegen einer Output-Leitung auf den New Input- Pin des Custom Compute Kernel-Knotens wird die Benutzeroberfläche des Knotens automatisch mit dem Typ und der Frequenz konfiguriert. Sie können dies auch manuell im Details-Panel dieses Knotens einrichten.
-
Wählen Sie den Knoten Custom Compute Kernel aus. Legen Sie im Details-Panel unter Settings die Execution Domain auf eine der folgenden fest:
- Curve verwendet einen GPU-Thread pro Kurve.
- Control Points verwenden einen GPU-Thread pro Steuerungs-Punkt
-
Verwenden Sie den Shader Text Editor, um Ihren benutzerdefinierten HLSL Code für die Deformationslogik dieses Groom einzugeben.
- Compile und Save Sie das Deformer-Diagramm.
Sobald das Deformer-Diagramm eingerichtet ist, können Sie einen Groom-Deformer auf eine Groom-Komponente anwenden, die einem Skelett-Mesh hinzugefügt wurde. Verwenden Sie die Mesh Deformer-Auswahlbox, um den erstellten Groom-Deformer anzuwenden.
Es gibt einige zusätzliche Dinge, die es bei der Einstellung eines Groom-Deformers zu beachten gilt:
- Sie können mit Blueprint-Logik auf zusätzliche Daten wie Szenendaten oder Input-Parameter zugreifen.
- Der Berechnungs-Kernel definiert die Deformationslogik. Er verbraucht Inputs und berechnet Outputs. Jeder Input hat einen bestimmten Type (float, int, float3 usw.) und eine bestimmte Frequency (Steuerungs-Punkte oder -Kurven). Sie können Input-Leitungen vom Groom-Interface ziehen und mit dem Custom Compute Kernel verbinden, damit die Benutzeroberfläche Typ und Frequenz automatisch konfiguriert oder dies manuell im Details-Panel eingerichtet wird.
- Alle abhängigen Effekte von time und game in einem Groom sind nur sichtbar, wenn der Editor Playing oder Simulating.
Groom-Deformer-Diagramm Shader-Code-Beispiel
Das folgende Beispiel zeigt einen Groom-Deformer, der auf einen Groom mit vier vertikalen Strähnen angewendet wird. Der Deformer verändert nur mit der Zeit die Position des Groom, um einen „Wellen“-Effekt zu erzeugen. Der Groom links hat keinen Deformer, der rechte schon.
Der Groom auf der linken Seite ist undeformiert. Der Groom rechts hat einen Deformer.
Um so einen Effekt mit einem Deformer-Diagramm zu erzielen, müssen die Rest Position und U Coordinate des Groom entlang jeder Strähne ausgelesen werden, um einen dynamischen Versatz basierend auf Zeit zu berechnen.
Der Kernel-Code, um so eine Deformation zu erreichen, sieht so aus:
if (Index < ReadControlPointCount())
{
const float3 P = ReadInPosition(Index);
const float U = ReadInCoordU(Index);
const float T = abs(sin( U * ReadTime()));
WriteOutPosition(Index, P + T * float3(5,0,0));
}
Der Kernel hat eine implizierte Index-Variable, die den globalen GPU-Thread-Index definiert. Dies wird zum Lesen der korrekten Steuerungs-Punkte mit der Input-Lesefunktion verwendet:
ReadInPosition(Index)
ReadInCoordU(Index)
Sie müssen nur sicherstellen, dass nicht auf ungültige Daten zugegriffen wird, da der Kernel in Gruppen von x Threads ausgeführt wird (standardmäßig 64 Threads). Dafür wird folgende Bedingung eingefügt:
if (Index < ReadControlPOintCount())
Der Output wird mit der Output-Interface-Funktion WriteOutPosition so geschrieben:
WriteOutPosition(Index, MyTransformedPosition)
Shader-Texteditor
Im Shader Text Editor modifizieren Sie die Programmierung des Knotens Custom Compute Kernel mit der High-Level-Shader-Language (HLSL), um spezifische Mesh-Deformationsverhalten zu steuern.
Dieses Panel befindet sich in der unteren rechten Ecke des Deformer-Diagramms. Es besteht aus zwei Teilen: Declarations und Shader Text. Die Deklarationssektion zeigt die Input- und Output-Funktionen des Kernels an und ist schreibgeschützt. Sie geben Ihren benutzerdefinierten HLSL Code in den Shader-Textabschnitt ein.
Das Shader-Texteditor-Panel zeigt die Deklarationen und eigenen Deformationscode an.
Wenn Sie das Deformer-Diagramm kompilieren, verwenden Sie das Panel Compiler Output unter dem Diagramm, um es auf Fehler zu prüfen. Hier werden alle bei der Kompilierung gefundenen Fehler angezeigt.
Groom-Deformer-Diagramm Compiler-Output
Weitere Informationen und Beispiele für die Verwendung des Shader-Texteditors des Deformer-Diagramms finden Sie hier:

