Einer generierten Figur bewegliches Haar geben
Von Oleg Sidorkin, CTO und Mitgründer von Cinevva
Eine generierte Figur kann eine überzeugende Frisur haben und trotzdem kein Haar besitzen, das sich unabhängig bewegen kann. Das Ergebnis kann eine einzige Oberfläche, eine Sammlung dünner Karten oder eine Reihe nicht verbundener Teile sein. Keine dieser Darstellungen verrät einer Simulation, wo eine Strähne beginnt, in welche Richtung sie wächst oder wie sie sich biegen soll.
Unser vorheriges Haarexperiment begann mit von Künstlern geriggten Avataren und einem ausgewählten Pferdeschwanz. Dieses Mal starteten wir mit wiederverwendbaren Haar-Meshes und unserer Froschfigur. Die grundlegendere Frage lautete: Können wir eine Frisur anpassen, brauchbare Führungskurven durch sie hindurch verfolgen und ihre Wurzeln während der Animation befestigt halten?
Bei 46 Frisuren extrahiert der aktuelle Prototyp 10.467 mögliche Führungen und findet für 10.346 davon – 98,84 % – Verbindungen zur Kopfhaut. Das ist ein Ergebnis zur Anbindung. Es ist keine Erfolgsquote von 98,84 % für natürliche Haarbewegung.
Mesh und Führungen ausprobieren
Die Demo wird sofort geladen. Wähle eine Frisur und wechsle dann unter Haarinspektion zwischen dem ursprünglichen Mesh, dem Mesh mit Führungen und den Führungen allein. Ziehe an der Vorschau, um die Ansicht zu drehen, und untersuche neben der Vorderseite auch die Rückseite. Wähle eine Animation, um zu sehen, ob die Anbindung der sich bewegenden Figur folgt.
Türkisfarbene Kurven sind mit der Kopfhaut verbunden. Orangefarbene Kurven wurden verworfen. „Vorgeschlagene Wurzeln anzeigen“ zeigt die vorgesehenen Anbindungspunkte. Long01 ist ein nützliches, dichtes Beispiel; die Varianten des französischen Zopfs verdeutlichen die Herausforderung, separate Fragmente miteinander zu verbinden. Lade die Führungskurven herunter, um ihre Punkte und Anbindungsmetadaten zu untersuchen.
Geeignete offene Frisuren verwenden nun einen experimentellen Adapter für den gemeinsamen Haarsimulator aus unserem früheren Artikel. Er wählt bis zu 24 Führungsketten aus, erstellt Gelenke und weist dem sichtbaren Mesh sowie der Führungseinblendung dieselben Skinning-Gewichte zu. Die Haarkappe bleibt fixiert; nicht unterstützte Bereiche bleiben an den Kopf gebunden. Kurzhaarfrisuren ohne geeignete offene Führungen behalten ihre starre Anbindung. Zwei Beispiele mit französischem Zopf verwenden weiterhin ihre separate experimentelle Behandlung mit Gelenkketten. Beim Wechsel der Inspektionsansicht läuft die Wiedergabe weiter.
Zuerst anpassen, dann die Anbindung herstellen
Wir haben 46 CC0-Frisuren aus MakeHuman-Sammlungen, Dreadlock-Varianten und Assets von Quaternius zusammengestellt. Jede Option enthält in der Demo einen Link zur Quelle; der Asset-Katalog und das Lizenzverzeichnis dokumentieren die Herkunft. Dabei handelt es sich um wiederverwendbare Mesh-Assets, nicht um eine einheitlich geriggte Strähnenbibliothek.
Die erste Platzierung schlug deutlich sichtbar fehl: Das Haar saß hinter dem Kopf des Froschs. Die Skalierung anhand des Begrenzungsrahmens hatte die Objekte ausgerichtet, ohne die vorgesehene Kopfhaut zu identifizieren. Unser Anpassungsdurchlauf schätzt nun den Scheitel des Quellmodells, richtet ihn an der Kopfoberfläche des Zielmodells aus und verschiebt überlappendes Haar im oberen Bereich nach außen an eine angenäherte Hüllfläche des Kopfes.
Das ähnelt der Aufgabentrennung aus unserem Artikel über Kleidung: Ein Asset zu platzieren, seine Form anzupassen, es mit einem Rig zu verbinden und ihm Sekundärbewegung zu geben, sind unterschiedliche Aufgaben. Eine Haarwurzel sollte auf der Kopfhaut bleiben, während die Längen ihre Frisur bewahren sollten, statt am Körper zusammenzufallen.
Der Frosch ist bewusst schwierig gewählt: ein breiter Kopf, hervorstehende Augen und nicht menschliche Proportionen. Die aktuelle Maske für den oberen und hinteren Kopfhautbereich wird speziell für diese Figur abgeleitet. Sie ist kein automatischer Kopfhautdetektor für beliebige generierte Modelle. Einige Frisuren verdecken noch immer das Gesicht oder haben ungeeignete Proportionen.
Pfade durch die vorhandene Oberfläche verfolgen
Wir erstellen aus jedem Haar-Mesh einen Verbindungsgraphen. Zusammenfallende Scheitelpunkte, die durch UV-Nähte getrennt sind, werden für diese Analyse verschweißt; das gerenderte Quell-Mesh bleibt dabei erhalten. Innerhalb jeder verbundenen Komponente suchen wir Oberflächenpfade von einem anfänglichen Wurzelkandidaten zu getrennten Endpunkten und glätten diese Pfade anschließend, bevor wir sie als Kurven neu abtasten.
Für benachbarte Scheitelpunkte
Diese Konstruktion des kürzesten Pfads folgt der Mesh-Oberfläche. Sie ermittelt nicht die biologische Wachstumsrichtung. Die anfängliche Wurzel am höchsten Punkt ist lediglich ein Vorschlag; die Nähe zur Kopfhaut kann später zur Umkehrung einer Kurve führen. Eine flache Karte liefert oft einen brauchbaren Pfad, während eine geschlossene Haarkappe oder eine nicht verbundene Locke wesentlich mehrdeutiger ist.
Dies sind mögliche Führungskurven, keine rekonstruierten Einzelhaare. Eine Karte kann viele sichtbare Haare darstellen, und ein Oberflächenpfad kann quer zur vorgesehenen Verlaufsrichtung liegen. Eine dichte türkisfarbene Abdeckung kann eindrucksvoll aussehen und zugleich falsche Richtungen verbergen. Die visuelle Prüfung bleibt daher Teil des Tests.
Die Wurzeln der tatsächlichen Kopfhaut folgen lassen
Ein Endpunkt der Führung wird einem geeigneten Kopfhautdreieck zugeordnet. Ist er zu weit entfernt, verwerfen wir die Verbindung, statt ihn willkürlich bis zum Kopf zu strecken. Akzeptierte Wurzeln speichern die Scheitelpunktindizes und baryzentrischen Gewichte des Dreiecks.
Für die Dreiecksscheitelpunkte
Die Gewichte bleiben unverändert, während sich die Dreiecksscheitelpunkte mit dem Skin bewegen. Als die gesamte Darstellung lediglich dem Kopf untergeordnet war, blieb bei unserer stichprobenartigen Prüfung der Walk-Animation eine Wurzeldrift von bis zu 0,657 mm. Das Nachführen anhand der gespeicherten Dreiecksanbindung reduzierte diesen Fehler auf numerische Genauigkeit: weniger als
Dies ist eine numerische Konsistenzprüfung unter der Meterkonvention der Szene. Sie belegt weder eine visuell korrekte Haarlinie noch ausreichenden Oberflächenabstand entlang der Kurve oder Stabilität bei jeder Animation.
Fragmente verbinden, ohne Unsicherheit zu verbergen
Einige Frisuren bestehen aus vielen nicht miteinander verbundenen Teilen. Ein Fragment, das weit von der Kopfhaut entfernt ist, kann die Fortsetzung einer bereits angebundenen Locke sein. Wir prüfen beide Ausrichtungen und verbinden es nur dann mit einer akzeptierten Führung, wenn die Endpunkte nahe beieinanderliegen und ihre Richtungen übereinstimmen.
Die aktuelle Verbindungsregel verwendet unter dem Maßstab dieser Szene einen Abstandsgrenzwert von 25 mm und ein Tangentenskalarprodukt von mehr als 0,5. Nur bereits angebundene Pfade können zu übergeordneten Pfaden werden, wodurch Zyklen vermieden werden. Kurvenlänge, Punktanzahl und Verbindungsdurchläufe sind begrenzt. Diese Schwellenwerte sind Entscheidungen für den Prototyp und keine universellen Haarparameter.
Durch das Verbinden kommen 1.851 Verbindungen zur akzeptierten Menge hinzu. Bei der Variante des französischen Zopfs steigt die Zahl von 136 direkt angebundenen Führungen auf alle 509 verbundenen Führungen; der zerzauste Zopf erreicht 512 von 519. Die verbleibenden sieben Fragmente bleiben orange. Eine Verbindung muss dennoch geprüft werden: Nahe beieinanderliegende Geometrie ist kein Beweis dafür, dass zwei Teile zur selben Strähne gehören.
Die gemessene Abdeckung erkunden
Suche nach einer Frisur oder zeige nur solche mit verworfenen Führungen an. Die Links öffnen die entsprechende interaktive Inspektionsansicht. Diese Zahlen stammen aus der gespeicherten Prüfung der 46 Frisuren und sind kein fortlaufend berechneter Physikwert.
46 of 46 styles · saved audit
Die vollständigen Anbindungsergebnisse herunterladen.
Alle 46 Frisuren wurden bei der Prüfung ohne Browserfehler geladen. Bei der Extraktion wurden 90 Scheitelpunkte aus drei Elvs-Meshes ausgelassen. Vier gezielte Tests prüfen die Verbindungen, die Meldung ausgelassener Elemente, rekonstruierbare Kopfhautanbindungen, das Verbinden von Fragmenten und die Zurückweisung weit entfernter Fragmente. Die Desktopansicht und die mobile Ansicht mit 390 Pixeln wurden geprüft; auf der mobilen Seite trat kein horizontaler Überlauf auf.
Die Ergebnisse messen diese Bibliothek nach ihrer Anpassung an diesen Frosch. Sie decken weder beliebige generierte Geometrie noch alle Posen, Selbstkollisionen oder den Export in eine andere Engine ab.
Was muss geschehen, bevor daraus Haarphysik wird?
Die aktuellen Führungen liefern Wurzeln und mögliche Pfade. Ein erster Adapter verwendet nun unseren vorhandenen Solver mit festem Zeitschritt, Ruhezustandsform und Kontakten. Bei Long01 bindet er 18.204 von 39.804 Mesh-Scheitelpunkten an 24 Ketten; ein untersuchter Punkt im offenen Haar bewegte sich im kontrollierten Test relativ zum Kopf um 13,6 mm. Das bestätigt eine sekundäre Verformung, nicht aber natürliche Bewegung oder kollisionsfreie Animation. Das Mesh und die Einblendung verwenden dasselbe Skinning-Feld. Eine zuverlässige Richtung, kohärente Gewichte über jede einzelne Locke hinweg und umfassende Bewegungstests bleiben notwendig.
Als Nächstes müssen mehrdeutige Wurzeln und Fragmentverbindungen geprüft, Führungsauswahl und Gewichte verbessert werden, ohne separate Locken auseinanderzureißen, und Körperkontakte während der Bewegung validiert werden. Selbstkontakt erfordert zusätzliche Arbeit. Auch beim Exportieren und erneuten Laden müssen diese Bindungen erhalten bleiben.
Bei generierten Figuren ist der Austausch einer separaten Haaroberfläche ein praktikabler Ausgangspunkt. Ein zusammengefügtes Kopf-und-Haar-Mesh bringt eine weitere Voraussetzung mit sich: Die Haarregion muss identifiziert und darunter eine brauchbare Kopfhaut hergestellt werden. Unser Froschexperiment löst dieses Segmentierungsproblem nicht.
Wir verfügen nun über ein überprüfbares Zwischenergebnis: ein angepasstes Mesh, explizite mögliche Pfade, Anbindungen an eine bewegte Oberfläche und sichtbare Zurückweisungen. Die nächste Verbesserung muss dafür sorgen, dass sich diese Pfade überzeugend verhalten – nicht nur die Zahl der türkisfarbenen Kurven erhöhen.