Die Funktionen zum Rendern und Simulieren von Haaren sind dazu gedacht, eine minimal praktikable Implementierung für das Importieren, Rendern und Simulieren von Haarsträhnen bereitzustellen. Dieses Update bietet keine Haar-Groom-Lösung. Die Haare müssen in einem externen DCC-Werkzeug wie Maya mit Hilfe des XGen-Werkzeugs oder des Plugins [Rasieren und Haarschnitt] (https://www.unrealengine.com/en-US/programs/) durchgeführt werden. Andere Werkzeuge wie Ornatrix, Yeti oder Houdini können ebenso verwendet werden.
Dieses Dokument beschreibt ein informelles Schema für Alembic-Dateien, um den Import von Haar-Groom und Guide-Haar-Informationen in Unreal Engine für die Verwendung mit den Funktionen von Haare-Rendering und Simulation zu standardisieren. Die Absicht besteht darin, dass beim Generieren von Haar-Grooms die Einhaltung dieses Schemas es Unreal Engine erlaubt, diese Grooms direkt zu importieren. Beim Importieren werden Attribute, die von UE4 sowohl für Rendering als auch für Physik unterstützt werden, diesen Attributen in der Alembic-Datei gemappt.
Ziele
- Definieren Sie ein Groom-spezifisches, informelles Alembic-Metadatenschema, um den Import von Haaren in Unreal Engine zu erleichtern.
- Untersuchen Sie die von Unreal Engine für Haare unterstützten Attribute und mappen Sie diese Attribute Alembic zu.
Kurven
Die allgemeine Form der Haare wird aus dem Standard-Schema der Alembic-Kurve ausgelesen:
Alembic::AbcGeom::ICurves
Breite
Mit dieser Spezifizierung exportierte Groom-Attribute ermöglichen es dem Importeur, sie beim Erstellen des Groom abzurufen und zu verwenden. Das Breitenattribut weist jedoch ein besonderes Verhalten auf. Beispielsweise werden in einer DCC-Anwendung wie Maya Breitenwerte direkt in die Kurven exportiert, sodass es nicht erforderlich ist, ein benutzerdefiniertes groom_width-Attribut zu exportieren. Der Importeur konvertiert die Breitenwerte von Maya in das groom_width-Attribut. Beachten Sie, dass das Attribut groom_width, falls es in Ihrem Groom vorhanden ist, beim Import nicht überschrieben wird. Wurde kein Attribut groom_width angegeben oder konnte dieses nicht aus Breitenwerten konvertiert werden, dann fällt der Builder in Unreal Engine auf die Verwendung eines Werts von 1 Zentimeter für den Breitenwert zurück.
Die Kurvenbreite kann pro ICurve gespeichert werden mit:
(GeometryScope::kConstantScope)
Oder sie kann pro Kurve gespeichert werden mit:
(GeometryScope::kUniformScope)
Oder sie kann pro CV gespeichert werden mit:
(GeometryScope::kVertexScope)
Beachten Sie, dass der Importeur kUniformScope unterstützt, aber das wurde nicht getestet.
Benennungskonventionen
Eigenschaftsnamen müssen in Kleinbuchstaben geschrieben sein und dürfen keine Leerzeichen oder Sonderzeichen enthalten.
Alle Eigenschaften müssen mit dem folgenden Präfix beginnen:
groom_<attr>
Zum Beispiel verwenden groom_id, groom_color oder groom_width alle die richtigen Benennungskonventionen.
Umfang und Rangfolge
Eigenschaften in diesem Dokument haben einen zugewiesenen Geltungsbereich. Der Geltungsbereich legt fest, auf welchem Level die Groom-Eigenschaft definiert werden kann.
Die verfügbaren Bereiche sind:
| Umfang | Beschreibung |
|---|---|
| Constant | Diese Parameter haben einen einzigen Wert für alle Kurven mit einem AbcGeom::ICurves-Objekt. |
| Uniform | Diese Parameter haben einen Wert pro Kurve in einem AbcGeom::ICurves-Objekt: |
| Vertex | Diese Parameter haben einen Wert pro Kurve und CV. |
Allgemeine Eigenschaften
Dieser Abschnitt erläutert Eigenschaften, die auf den Groom als Ganzes angewendet werden. Diese Eigenschaften sollten dem obersten Knoten hinzugefügt werden: IXForm oder ICurves.
| Name | Typ | Optional | Beschreibung | Wert |
|---|---|---|---|---|
groom_version_major |
int16 | Nein | Wird verwendet, um zu identifizieren, welcher Haupt-Version des Groom-Schemas diese Datei entspricht. | 1 |
groom_version_minor |
int16 | Nein | Wird zur Versionierung verwendet, um zu identifizieren, welcher Unter-Version des Schemas diese Datei entspricht. | 5 |
groom_tool |
String | Ja | Name und Version des Werkzeugs, das diese Datei erstellt hat. Nützlich zum Debuggen und Verfolgen von Problemen. | |
groom_properties |
String | Ja | String, der die Parameter beschreibt, die zur Generierung dieses Groom verwendet wurden. Dies sind werkzeugspezifische Optionen, die für das Debugging verwendet werden. |
Geometrieparameter
Alle Geometrieparameter sind optional, verfügen aber über ein internes Verhalten, auf das Sie zurückgreifen können, wenn sie in Ihrem exportierten Groom nicht vorhanden sind.
| Name | Typ | Geltungsbereich | Optional | Beschreibung | Bereich | |
|---|---|---|---|---|---|---|
groom_guide |
int8/16/32 | Konstant/Einheitlich | Ja | Hilfslinien werden aus den importierten Strähnen und Dezimierungseinstellungen generiert. | 0 = Keine Hilfslinie / 1 = Hilfslinie | |
groom_group_id |
int32 | Konstant/Einheitlich | Ja | Alle Strähnen werden gruppiert. | [0, INT_MAX] | |
groom_root_uv |
float32/64[2] | Einheitlich | Ja | Stamm-UVs der darunterliegenden Oberfläche, an die Ihre Stämme gebunden sind. Unterstützt UDIM-Textur-Koordinaten. |
[-FLOAT_MAX, FLOAT_MAX] | |
groom_id |
int32 | Einheitlich | Ja | Strähnen haben keine IDs. Dies ist für die Verwendung beim Debugging und mit dem Attribut groom_closest_guides vorgesehen. |
[0, INT_MAX] | |
groom_color |
float32/64[3] | Scheitelpunkt | Ja | Fällt zurück auf Schwarz. | [0, FLOAT_MAX] | |
groom_roughness |
float32 | Scheitelpunkt | Ja | Fällt zurück auf Schwarz. | [0, FLOAT_MAX] | |
groom_closest_guides |
int32[3] | Einheitlich | Ja | Für spezielle Anwendungen vorgesehen, bei denen die Interpolationsdaten außerhalb von Unreal Engine berechnet werden. | [0, INT_MAX] | |
groom_guide_weights |
float32[3] | Einheitlich | Ja | Für spezielle Anwendungen vorgesehen, bei denen die Interpolationsdaten außerhalb von Unreal Engine berechnet werden. | ||
groom_clumpid |
int32 | Einheitlich | Ja | Klumpen-ID. | ||
groom_group_name |
String | Konstant/Einheitlich | Ja | Name der Gruppe. |