Subsurface Scattering Verhalten in C4DR13 nicht nachvollziehbar

Welven

Mitglied
Hallo liebe Tutorials.de Leser!

Ich habe gestern im Content Browser ein Beispiel-File für den neuen SSS-Shader in R13 gefunden. Es beinhaltet einen recht bekannten Modelkopf, bei dem das Haut-Material größtenteils mit SSS realisiert wird. Das wollte ich gleich mal nachbilden und habe mich daran versucht das Ganze auf Genesis von Daz3D zu übertragen. Leider bin ich da ganz schnell an Grenzen gestoßen und habe keine Ahnung woran es scheitert.

Als erstes ist mir aufgefallen, dass der Modelkopf aus dem Beispiel 3 Meter hoch ist, was ja in keinster Weise realen Verhältnissen entspricht. Jedenfalls habe ich dann mein Model auf ungefähr gleiche Größe hochskaliert. Dann habe ich alle Kanäle außer Leuchten ausgeschaltet. Ich habe am SSS-Shader der im Beispiel eingestellt war nichts verändert, außer die Textur für mein Model ausgetauscht. Wie im angehängten Bild zu sehen ist, sieht das ganze auf dem Modelkopf gut aus, jedoch ist der Arm meines Models einfach nur irgendwie helles Weiß (Die Fingernägel sind ohne SSS, nur mit dem Farbe Channel). Die Textur kommt in keinster Weise zur Geltung. Wenn ich bei beiden Modellen die Texturen aus dem SSS Shader lösche, sehen sie wiederum sehr ähnlich aus... (Übrigens sind die Dicke des Modelkopfs am Hals und die Dicke von Genesis am Vorarm nach Skalieren ungefähr gleich).

Nun kann ich mir eben nicht erklären warum der gleiche Shader bei zwei Modellen mit ungefähr gleichen Dimensionen so unterschiedliche Ergebnisse erzielt. Ich habe auch schon probiert bei meinem Model im Shader mit der Pfadlänge runterzugehen, was zu keiner großartigen Veränderung geführt hat...

Habt ihr dafür eine Erklärung?
 

Anhänge

  • SSS.jpg
    SSS.jpg
    553,5 KB · Aufrufe: 32
hi,

Bei Kopfmodellhöhe 3m könnte es doch sein, dass da was beim Skalieren um den Faktor 10 in die Hose ging... Ist die Grösse der Kopfmatrix denn auch schön 1? (Koordinaten-Editor -> Grösse) Und der Rest möglicher Skalatoren auch überall auf 1 normalisiert? (Mesh -> Befehle -> Grösse zurücksetzen)
Wenn ja, schreib' nochmal - dann wärs wohl ein etwas exotischeres Problem.

Liebe Grüsse
Matthias
 
Hey Matthias,

Danke für die schnelle Antwort. Leider kann ich dir nicht ganz folgen. Also wie gesagt, den Kopf des Models aus dem Beispiel habe ich nicht angerührt, der war von Anfang an ~300 cm groß. Was du mit Größe der Kopfmatrix meinst weiß ich leider nicht genau - solltest du die Skalierung im Struktur-Manager meinen, da ist unter Größe überall eine 1 (bisher stand da bei mir immer eine 1, noch nie etwas anders) und bei Abmessung eine Höhe von 333 cm. Aus diesem Grund habe ich ja das andere Model hochskaliert ~ auf das zehnfache. Bei diesem steht aber bei Skalierung im Struktur-Manager auch eine 1, falls das deine Frage war.
Könnte es eventuell damit zu tun haben, dass das KopfModel aus dem Beispiel komplett geschlossen ist, also keine Polygonlücken besitzt? Ich glaube mal irgendwo gelesen zu haben, dass das wohl wichtig für SSS sei, aber ob das auf Cinemas Shader auch zutrifft, weiß ich nicht. Bei dem Genesis Model sind Löcher in den Augen und es hat verschiedene Polygonselektionen und muss dadurch mit mehreren Materialien versehen werden, die auch unterschiedliche UVMaps haben.

@Cube - Ich hoffe es gibt da mit dem Copyright keine Probleme? Wobei beide ja frei verfügbar sind... Ich machs einfach mal, falls es Probleme geben könnte bitte Bescheid sagen oder gleich löschen ;)
Die Datei und Render sind im Anhang.

Edit: Ich habe jetzt mal versucht die Polygonlöcher in den Augen und im Mund manuell zu schließen, das hat jedoch keine Auswirkung...
 

Anhänge

  • Test.rar
    4,3 MB · Aufrufe: 16
  • SSS2.jpg
    SSS2.jpg
    424,7 KB · Aufrufe: 24
Zuletzt bearbeitet:
Ich denke, es liegt an den vermurksten UV Koordinaten. Du wirst wohl nicht umhinkommen, das Mesh noch einmal sauber abzuwickeln.

Grüße, CUBE
 
Was meinst du denn genau damit? Die UV-Koordinaten sind orignial aus DazStudio importiert. Warum sollen die vermurkst sein? Meinst du, dass es ein Problem ist, dass das Model mehrere UV-Sets hat, welche überlappen? Das ist ja eigentlich per Polygonselektion gelöst... Darüber hinaus ist es keine Option die UV-Kooridinaten zu verändern, weil ich auch Texturen von Daz3D für das Model benutzen möchte. In wie fern denkst du, dass der SSS-Shader mit den UVs Probleme hat?

Ok Cube, du hattest den Nagel doch auf den Kopf getroffen! Ich habe jetzt einfach mal den Kopf vom Genesis Model "ausgeschnitten" und die UVs so angeordnet, dass sie sich nicht mehr überlappen. Siehe da, jetzt funktioniert es einwandfrei. Vielen Dank für den Tip!
Aber der Grund dafür leuchtet mir nicht ein? Für so ein Model wie Genesis ist das wie gesagt ziemlich limitierend. Um jetzt weiter zu arbeiten, müsste ich die kompletten UV Sets umarbeiten, damit einhergehend natürlich auch die ganzen Texturen, die ich schon habe... Gibts da evtl. Tricks um das zu umgehen, oder muss ich da in den sauren Apfel beißen? Habe das File nochmal als Anhang eingefügt, falls es jemanden interessiert.
 

Anhänge

  • Test2.rar
    4,4 MB · Aufrufe: 25
  • SSS3.jpg
    SSS3.jpg
    75,5 KB · Aufrufe: 19
Aber das ist das Problem. Die Textur wird nicht korrekt projiziert, weil die UV-Inseln sich überlagern. Daran ändern die Polygon Selektionen gar nichts. Mag ja sein das das im Ursprungsprogramm funktioniert. In C4D aber nicht. (Wenigstens soweit ich es weiß). Sieh dir das UV Layout des anderen Kopfes an. Da passt alles zur Textur.
Du kannst ja die Inseln separat selektieren und an die richtige Postion auf der Textur schieben. Etwas besseres fällt mir nicht ein.

Grüße CUBE

... Okay, ich hätte vor dem posten noch einmal aktualisieren sollen ...
 
Ich habe nochmal ein bisschen rumprobiert und festgestellt, dass das Problem nicht primär an den UVs lag. Irgendwie hat Cinema beim importieren des OBJs Mist gebaut, welches ich aus DazStudio exportiert hatte. Irgendwas ist da bei dem automatischen Erstellen der Textur-Tags schiefgelaufen. Sobald ich die automatisch generierten Textur Tags gelöscht hatte und alle Textur-Tags mit Polygonselektion neu generiert hatte, funktionierte auch die Texturprojektion bei überlappenden UVs im SSS.
Eine Ausnahme gibt es jedoch - bei Nutzung von SSS-Mehrfach-Diffus-Modus "Cache", wie im Bild unten zu sehen. Hier scheint er die Textur des obersten gestackten Textur Tags auf alle Polygone zu legen, und beachtet die Polygonselektion der anderen Textur Tags nicht...
Das ist aber nicht so schlimm, weil ich sowieso den "Direkt"-Modus benutzen möchte (lässt die Texutr schärfer wirken bei kurzer Pfadlänge).
Soweit so gut, leider gibt es jetzt ein Problem: An den Seams des Models tauchen hässliche Artefakte auf. Ich hab schon an allen möglichen Slidern rumgespielt, diese Artefakte bleiben immer bestehen und es ist kein Problem der Textur.
Hat irgendjemand eine Idee wie ich dieses Problem lösen könnte? Gibt es evtl. einen Shader der UV-Kanten/Seams erkennt und mit dem ich diese Seam Regionen abdunkeln/ausbessern könnte?
(Ich würde gerne davon absehen Cubemans Vorschlag mit dem Verschieben der UV-Inseln zu folgen. Um die Textur-Qualität und Pixeldichte zu erhalten, müsste ich von jetzt 4k auf 12k Texturen wechseln, was natürlich einiges mehr an Speicher in Anspruch nehmen würde...)
 

Anhänge

  • Test3.rar
    1,4 MB · Aufrufe: 21
  • SSS4.jpg
    SSS4.jpg
    92,2 KB · Aufrufe: 21
Zuletzt bearbeitet:
Zurück