Cycles – Hair Modeling & Rendering in Nahe-Echtzeit

Der E-Commerce ist stark im Wachstum. Einen großen Anteil beim Umsatz hat die Fashionbranche, die allerdings an hoher Retouren-Quote „leidet“. Für den Kunden Admoreal haben wir einen Produktkonfigurator entwickelt, mit dem Kleidung auf eigenen Körperproportionen getestet werden kann.

Diese Präsentation wurde auf dem Blender-Day in Stuttgart am 27.07.14 gehalten. Vielen Dank an den Shackspace Stuttgart für die Bereitstellung der Räumlichkeiten und auch vielen Dank an das Blender-Day Orga-Team, besonders auch an Thomas Dinges vom Blender-Network!

HairModelling_Blenderday-2

 

Der E-Commerce ist stark im Wachstum. Der größten Anteil beim Umsatz hat die Fashionbranche, welche dadurch aber auch die größten Probleme hat, z.B. bei der Retouren-quote, die bei bestimmten Händlern schonmal zwischen 50% und 60% erreichen kann. Die Firma Admoreal (Video) möchte die Retourenraten senken, indem Bekleidung vor dem Kauf anprobiert werden kann (wie man es vom Ladengeschäft gewöhnt ist).

 

 

HairModelling_Blenderday-3

 

Eine Anprobier-App (engl. Virtual Mirror) muss in der Lage sein die Körpermaße und Proportionen der User aufzunehmen und für diese das Fallen und Aussehen der Bekleidung zu simulieren. Damit der User die Kleidung auf daraufhin prüfen kann, ob diese zu seinem Look passt, sollte die Anwendung weitere Customizing Möglichkeiten bieten, wie Frisur, Körper- und Haarfarbe einzustellen. Die App sollte auf allen Web-fähigen Endgeräten laufen und auch leicht in die Seiten der Webshops einbaubar sein.

 

HairModelling_Blenderday-4

 

Hier sind 3 Bilder aus der Visualisierungskomponente zu sehen. Die Ansichten können beliebig eingestellt werden. Neben der Visualisierung war das Frontend der zweite große Bestandteil der Applikation.

 

HairModelling_Blenderday-5

 

Für die Modellierung der Haare haben sich folgende Schritte bewährt: Nach Sichten der Referenzfotos wird ein Haar-Partikelsystem aufgesetzt und dort die durchschnittliche Haarlänge eingestellt (wird eine Haarsträhne hinzugefügt, erhält diese dann gleich die richtige Länge). Danach wird die Segementanzahl angepasst im Particle-Edit- und Rendering Modus. Der Hauptteil der Haar-Modellierung findet im Particle Mode statt. Hier wird das Haar gesetzt und gelegt mit Hilfe der unterschiedlichen Modi. Wichtig ist die Verwendung des Deflect-Emitters, damit das Haar niemals im Kopf eintaucht. Durch Verwendung des Point-Select-Modes können einzelne Haare selektiert werden, um diese gezielt zu bearbeiten.

 

HairModelling_Blenderday-6

 

Um nun verschiedene Haar-Settings zu zeigen habe ich mir den Brush von Jabobus Johannes Pieter geladen, aber dort die Haarspitze mit Cycles-Haaren ausgetauscht.

 

HairModelling_Blenderday-7

 

Mit der Einstellung Root-Tip-Size kann die Dicke des Einzel-Haars bestimmt werden. Meistens wird eine dicke Wurzel (root=1.0) und eine dünne Haarspitze (tip=0.1) verwendet. Irgendwelche Transparenz-Verlauf-Effekte wie es bei Blender-Internal-Haar üblich war, wird hier nicht mehr benötigt.

 

HairModelling_Blenderday-8

 

Die Geomatrische Ausprägung der Haare kann über die Primitiv-Einstellung gewählt werden. Besonders schön, aber sehr teuer in Bezug auf Render-Zeit sind die Curve-Segments. Wir verwenden die etwas „billigere“ Variante der Line-Segments. Die Triangles sind nicht zu empfehlen (sieht sehr platt aus).

 

HairModelling_Blenderday-9

 

Die Stelle der Verfügung wird über den Shape-Slider bestimmt. Nach Angabe der Root- und Tip- Größe wird damit eingestellt ab wann das Haar dünner werden soll. Bei menschlichem Haar wird der Wert -0.7 empfohlen.

 

HairModelling_Blenderday-10

 

In meiner Pinsel-Szene habe ich für den Pinsel nur 20 Haare verwendet. Um ein ausreichendes Volumen zu erzeugen wird jedes dieser 20 Haare jeweils 30 Kind-Haare erhalten, die sich entlang des Mutterhaares legen. Wie sich die Kinder dabei genau verhalten kann sehr detailliert (aus meiner Sicht etwas over-engineered) eingestellt werden.

 

HairModelling_Blenderday-11

 

Nun kann die Frisur betrachtet werden. Hierbei hat sich gezeigt, dass es sinnvoll ist die Frisur in einzel Haar-Teile aufzuteilen, die dann jeweils eine eigene Partikel-Quelle besitzen. So kann z.B. ein Haarteil die unterste Deck-Haar-Ebene bilden und sehr dickes Haar besitzen, um die Kopfhaut komplett abzudecken, während andere Haarteile sehr dünn platziert werden können. Durch diese Aufteilen kann sehr flexibel und isoliert gearbeitet und gerendert werden.

 

HairModelling_Blenderday-12

 

Der Hair BSDF-Shader leistet sehr gute Dienste. Was vorher mit 10-Nodes erstellt wurde, kann jetzt sehr einfach durch den Hair-Shader erreicht werden. Von den zwei Betriebsarten haben wir nur die Reflection genutzt,da die Transmission (simuliert Sub-Surface-Scattering) bei unserer geringen Haar-Auflösung so gut wie unsichtbar ist. Ganz wichtig für einen überzeugenden Look ist die Farb- bzw. Helligkeitstextur als Input in den BSDF-Shader. Dieser sorgt dafür, dass jedes einzelne Haar eine eigenen Farbe hat, wodurch erst die Haar Struktur richtig zur Geltung kommen kann.

 

HairModelling_Blenderday-14

 

Da die Anwendung in 2-3 Sekunden antworten muss (kein User wartet gern) war klar, dass wir das Cycles-Hair-Rendering nicht Live machen können. Hierfür haben wir den Diffus-Pass und den AO-Pass für jede Kameraansicht gebacken und dann im Compositing mit der Live-berechneten Figur verbunden. Erst beim Compositing wird die Farbe im HSV-Raum ausgetauscht, so dass trotzdem Millionen von Haarfarben technisch möglich sind.

 

HairModelling_Blenderday-15

 

 

Auf der Admoreal-Seite kann die Demo-Applikation betrachtet werden. Zur Zeit wird noch eine Mobil-optimierte und durch weitere Freiheitsgrade erweiterte Version erstellt. Am Projekt waren beteiligt:
Idea & Conception Anna Wieland
Design & Testing Lina Lubig (Elaspix)
Frontend Programming Thomas Köhler (Elaspix)
Face Modeling Allan Liddle (Blender-Network)
Hair Modeling Tomasz Kraszewski (Freelancer aus Polen)
Producer & Backend Programming Tobias Günther (Elaspix)

Ich bedanke mich bei unserem Team und freue mich auf mehr!