Nachdem meine eigenen Versuche mit
eigenen Programmen unter Verwendung von
Bezier- und/oder
B-Spline-Flächen ein
Gesicht zu modellieren nicht sonderlich weit gediehen sind,
was u.a. daran lag, dass es doch etwas zu aufwändig war einen
"fluffig" bedienbaren Editor zu bauen, habe ich mich mal den
freien Programmen auf diesem Gebiet zugewendet.
Meine Erfahrungen und natürlich auch die ersten Ergebnisse
werde ich in den folgenden Abschnitten darstellen.
Sculptris der Fa. Pixologic ist
ein sehr nettes kleines, fast vom Fleck weg sehr gut und
intuitiv bedienbares (noch?) freies Programm.
Einschränkungen sind:
- Stürzt öfter mal ab. Insbesondere mit Objekten die aus
sehr vielen Dreiecken bestehen gibt es Probleme. Ich komme
z.Zt. nicht über 1.3 Mio "Tris" hinaus (die aktuelle
Anzahl ist im Programm unten links abzulesen). Abhilfe
besteht z.B. darin den Detaillierungs-Brush invertiert
(+Alt) anzuwenden um die Anzahl der Tris in Bereichen zu
Reduzieren wo kein allzu hoher Detailierungsgrad benötigt
wird.
- Wenn man mehrere Objekte hat, insbesondere wenn diese
sich überschneiden, dann bemalt man diese besser einzeln,
indem man alle anderen Objekte weglöscht, bevor man in den
Paint-Modus wechselt (dann natürlich unter einem anderen
Dateinamen abspeichern!)
- Die Größe der Textur für das UV-Mapping ist stark
beschränkt. Bei sehr großen Objekten, die aber zumindest
teilweise (Gesichter) hohe Detaillierung erfordern wird
man Probleme haben. Dann trennt man das Objekt besser auf
(Körper / Kopf). Leider ist das nachträglich in Sculptris
nicht gut möglich.
- Man kommt vom Paint-Mode nicht zurück in den
Sculpt-Mode! Einzige Möglichkeit ist das Objekt neu zu
laden und die Frage "Go to Paint-Mode?" zu verneinen. Man
verliert aber dabei alles was man im Paint-Mode bereits
gemacht hat...
- Texturen die man z.B. mit einem Brush im Paint-Modus auf
das Objekt legt lassen sich nicht drehen. Man kann
entweder versuchen die Ansicht entsprechend zu drehen (was
aber nur eingeschränkt möglich ist) oder mehrere gedrehte
Versionen einer Textur erzeugen (z.B. mit Gimp). Im
Sculpt-Modus könnte man stattdessen auch noch das ganze
Objekt drehen, was man aber auch nicht unbedingt will und
recht unhandlich ist.
class="bsplineImage" Trotzdem ist es für den Einstieg IMO sehr
gut geeignet, weil man schnell ein paar nette Ergebnisse
erzielen kann....
Hier noch ein paar wenige
Shortcuts die man wirklich gut gebrauchen kann:
Key
|
Funktion
|
Mode
|
Left Mouse-Button |
aktuellen
Brush anwenden |
Sculpt-Mode
Paint-Mode |
Alt + Left Mouse-Button |
Invertiert
den aktuellen Brush |
Sculpt-Mode
Paint-Mode |
Right Mouse-Button |
Drehen |
Sculpt-Mode
Paint-Mode |
Alt + Right Mouse-Button |
Verschieben |
Sculpt-Mode
Paint-Mode |
h + Objekt anklicken |
Hide Object |
Sculpt-Mode
Paint-Mode |
Ctrl+h |
Unhide all |
Sculpt-Mode
Paint-Mode |
Ctrl+i |
invert
Selection |
Sculpt-Mode
Paint-Mode |
Space |
Brush-Attribute einstellen |
Sculpt-Mode
Paint-Mode |
c + Objekt anklicken |
Color-Picker |
Paint-Modus
|
Ctrl+e |
Export als
*.obj-Datei, die in Blender importiert werden kann
(Achtung: Texture- und Normal-Maps müssen
gesondert exportiert und in Blender importiert
werden! Dazu im Paint-Mode die "Show advanced
tools" aktivieren) |
Sculpt-Mode
Paint-Mode
|
Blender ist ein bisschen das
Gegenteil von Sculptris: sehr mächtig, aber dadurch auch sehr
komplex in der Bedienung, zumal die Bedienlogik ausgesprochen
ungewohnt ist.
Features, die ich besonders
genutzt habe (es gibt sehr viel mehr):
- Objekte, die aus Sculptris als *.obj-Dateien exportiert
wurden können importiert werden (Texturen und Normal-Maps
müssen aber getrennt importiert und als Texturen
zugewiesen werden - dafür unbedingt im Textur-Tab unter
Mapping - Cooridnates auf "UV" umstellen und für
Normal-Maps außerdem Influence "Normal" statt "Color"
auswählen, sowie unter "Image Sampling" "Normal Map"
anhakern, siehe auch unten)
- Haare (Fell, Gras, etc) können mit dem Partikelsystem
erstellt werden
- Wasser (Flüssigkeiten), Rauch und Flammen, Textilien und
andere weiche Objekte können simuliert werden
Einschränkungen über die ich
gestolpert bin:
- Auch Blender stürzt oft und gerne ab. Bei mir waren es
zunächst aber wohl meist Probleme mit zu wenig Speicher,
da ich versehentlich die 32-Bit-Version installiert hatte,
was den allocierbaren Speicher je Programm für komplexe
Szenarien (zu) stark einschränkt. Zu hektisches Klicken,
insbesondere in Simulationen bringt aber auch die
64-Bit-Version noch diverse Male zum Absturz...
- Der Sculpting-Mode kommt IMO nicht an Sculptris heran,
obwohl in Blender inzwischen auch ein dynamisches
Verfeinern der Struktur möglich ist, denn die Performance
ist bei komplexen Meshes einfach nicht so richtig
prickelnd.
- Vom Simulieren von Textilien, die sich tatsächlich
angezogen an einem Körper befinden sollen, bin ich nach
einigen Versuchen, wieder etwas abgekommen. Lieber
korrigiere ich die Kleidungsstücke "händisch" etwas nach -
allerdings will ich momentan auch keine Animationen
machen, sondern nur "Still-Images" rendern.
- Haare, Fell, Gras, etc. die mit dem neueren "Strand
render" für Partikelsysteme erstellt wurden werfen im Blender-Internal-Renderer
keine Schatten (in Cycles aber schon, s.u.)!
Abgesehen davon sehen Strand-gerenderte Haare aber
realistischer aus (insbesondere bei hellen Haarfarben).
- Deaktiviert man die Strand-Render-Option wird man
evtl. mit deutlich weniger Partikeln (inkl. Children)
arbeiten müssen, um den Rechner nicht zu überfordern.
Außerdem sollte man dann eine Blend-Textur über die
Haare legen, die das Ende jedes Haars transparent
auslaufen lässt (dazu unbedingt Transparency im Material
aktivieren und im Textur-Tab unter Mapping - Coordinates
auf "Strand/Particle" umstellen, unter Influence "Alpha"
(statt "Color") aktivieren, DVar auf "0" und Influence
auf Alpha=-1 setzen). Ich habe außerdem mit derselben
Blend-Textur auch den Anfang der Haare leicht
transparent gemacht, was IMO besser aussieht (jedenfalls
dort wo man den Haaransatz sehen kann).
- Man kann aber die eigentlichen Haare mit der Option
"Strand Render" rendern und einen zweiten identischen
Satz Haare erzeugen, die aber nur die Schatten werfen -
d.h. für diese Haar-Kopie nicht die Option "Strand
Render" aktivieren. Damit das Partikelsystem beim
Kopieren eines Objekts mitkopiert und nicht einfach auf
dasselbe Partikelsystem referenziert wird muss man unter
"User Preferences" (Menü "File") im Tab "Editing" die
Option "Duplicate Data" "Particle" anhakern. Für das, so
kopierte, Objekt muss man dann im Material-Tab die
Optionen "Cast only" und "Shadows only" aktivieren,
damit es wirklich nur Schatten erzeugt, ansonsten aber
unsichtbar bleibt. Lästig ist nur, dass man die Aktion
jedesmal wiederholen muss, wenn man die Frisur ändert
und natürlich der erhöhte Ressourcen- und Rechenbedarf
(man kann evtl. noch die Anzahl der Kinder im
Partikel-System der "Schatten-Haare" etwas verringern).
- Auch ganz hypsch, aber noch viel
ressourcenfressender sieht es aus, wenn man wieder das
Nicht-Strand-Render-Haar-Objekt kopiert aber diesmal
beiden nur unterschiedliche Materialen zuweist: einmal
etwas dickere Strands, die leicht transparent sind (z.B.
Alpha 0.75) und dem anderen ein ansonsten identisches
Material mit dünneren nicht transparenten Strands. Auch
hier muss man daran denken die Kopie nach jedem
umfrisieren neu zu erzeugen und das Material
entsprechend zu ändern.
Ohne
Strand-Render-Option: Schatten
werden geworfen, Haare wirken nicht wirklich
rund (Bilder jeweils anklicken für volle
Auflösung)
|
|
Zwei identische Haar-Partikel-Systeme,
beide ohne die Strand-Render-Option, aber
mit unterschiedlichen Materialen (einmal
dickere leicht transparente Strands einmal
dünne nicht transparente Strands)
|
Mit Strand-Render-Option: Kein
Schattenwurf der Haare; Haare wirken dafür
runder, aber auch heller und dünner bei
ansonsten identischen Einstellungen zu den
vorigen Beispielen
|
|
Zwei fast identische
Haar-Partikel-Systeme einmal mit
Strand-Render-Option und einmal ohne und mit
einem Material, das nur Schatten wirft,
ansonsten aber unsichtbar bleibt (sogar die
Schatten auf den Haaren selbst
funktionieren!)
|
Der neue Cycles-Renderer, der
den alten, Blender-Internal genannten Renderer, wohl
irgendwann ganz ersetzen wird, ist sehr interessant, weil er
die Licht-Verteilung realistischer berechnet. Cycles kann
inzwischen auch Haare/Fell (Blender 2.66) und im allerneuesten
Latest Build (03.04.2013) auch Subsurface Scattering
darstellen (offiziell erwartet für Version 2.67). Wie das
Subsurface Scattering im Vergleich zu den bisherigen
Workarounds abschneidet konnte ich noch nicht wirklich testen.
Ich zeige hier noch zwei Workarounds - evtl. kann man diese
Ansätze ja zukünftig mit dem Subsurface Scattering Node
kombinieren... Haare werfen in Cycles übrigens immer Schatten,
egal, ob die Option "Strand Render" aktiviert ist oder nicht.
Cycles:
Haare werfen immer Schatten, mit oder ohne
Strand-Render-Option, ist aber noch recht langsam
(4'05h für dieses Bild in 1080x1200 mit 1500
Samples)
|
bezüglich des, für Haut praktisch unverzichtbaren,
Subsurface-Scatterings gibt es einen ganz interessanten
Workaround, bei dem man andere Shader (z.B. Diffuse, Glossy)
über einen Mix-Shader mit einem Translucent-Shader kombiniert.
Dadurch kann ein Teil des Lichts (einstellbar über den
Mix-Shader) die Oberfläche durchdringen. Zusätzlich wird eine
Art Skelett erzeugt, welches dieses Licht unter der Oberfläche
wieder nach außen reflektiert. Das Skelett hat dann eine nicht
durchscheinende Oberfläche (Diffuse Shader) und ist mehr oder
weniger einfach eine leicht verkleinerte Kopie des äußeren
Meshes (zum Verkleinern ist die Funktion "Scale along Normals"
im Edit-Mode sehr hilfreich, die mit "Alt+S" aktiviert wird).
Bestimmte Teile, wie Ohren, unterer Teil der Nase, usw., die
tiefer durchscheinen sollen kann man im Skelett-Objekt
komplett wegnehmen (aber ohne Löcher zu hinterlassen!), bzw.
im Sculpting-Mode einfach wegglätten. Der Effekt ist sehr
interessant, insbesondere für durchscheinendes Licht von
hinten - das fehlende Subsurface Scattering ersetzt es aber
eigentlich nicht wirklich.
Links:
gerendert mit Cycles (gut zu sehen die durchscheinenden
Ohren);
Rechts: Kopf und "Schädel" (Kopie, der richtige
"Schädel" ist natürlich im Kopf)
Unten: Einstellungen via Nodes für den Kopf
Ich habe diesen Ansatz noch etwas abgewandelt und benutze
hauptsächlich einen Subdermal-Layer, der über
Displace-Modifier aus dem Haut-Oberflächen-Objekt erzeugt
wird. Interessant ist, dass dieses Subdermal-Objekt ein linked
Duplicate des Oberflächen-Objekts sein kann. Damit teilen sich
Skin-Oberfläche und Subdermal-Objekt immer dasselbe Mesh!
Dieser Ansatz ist unten dargestellt und kann zusätzlich mit
einem weiteren, noch tiefer liegenden Layer, wie oben
beschrieben kombiniert werden. Nachteilig ist, dass man in
Cycles sehr viele Samples braucht, um das Rauschen weitgehend
zu eliminieren (d.h. Rendern dauert recht lange). Zumal der
hier gezeigte Ansatz nicht zusammen mit der Option "No
Caustics" zur Rauschreduktion funktioniert.
Skin und
Subdermal-Layer: Der Subdermal-Layer
(rechts, rot) ist ein Linked-Duplicate des
Skin-Mesh-Objekts (links in Hautfarbe) - d.h.
das Mesh ist immer identisch! Die grün
umrandeten Modifier gehören zum originalen
Skin-Mesh, die beiden rot umrandeten
Displace-Modifier sind nur beim
Subdermal-Mesh-Duplikat zusätzlich hinzugefügt
worden:
Displacement nach einer Textur-Image und
(weniger wichtig) Displacement nach einer
Noise-Textur (das Textur-Image für den ersten
Displace-Modifier ist übrigens dasselbe das hier
auch auf dem Skin-Oberflächen-Objekt zu sehen
ist). Probleme macht, dass an einigen Stellen
der Subdermal-Layer die Hautoberfläche
durchdringen kann (hier am Oberen Augenlid zu
sehen)
|
Skin-Nodes:
Hauptsächlich Translucent mit Umrechnung der
Ray-Length in Hautton (je länger der Strahl desto
röter). Dazu etwas Diffuse- und ein Glossy-Shader,
wobei die "Glossyness" einzelner Bereiche über
eine weitere Textur gesteuert wird.
|
|
Subdermal-Nodes:
Eigentlich überwiegend ein einfacher Glossy-Shader
mit ein bisschen zusätzlichem Rauschen (Glossy
brachte bessere Ergebnisse als ein
Diffuse-Shader). Damit der Translucent-Shader
("Flesh") vernünftig arbeitet bräuchte man eine
weitere noch tiefere und wirklich
lichtundurchlässige Schicht. Dann kann man damit
z.B. im Gegenlicht durchscheinende Ohren
realisieren. Leider muss diese dritte Schicht wohl
ein eigenes Mesh haben und kann kein linked
Duplicate des Original-Meshs sein...
|
Mit dem neuen Subsurface-Scattering-Shader kann man es sich
nun einfacher machen. Hier eine erste Abwandlung des oben
gezeigten Setups unter Verwendung des Subsurface Scattering
Shaders. Der Subdermal-Layer entfällt damit. Ähnlich dem oben
gezeigten Ansatz wird die Eindringtiefe des Lichts in die Haut
anhand der Farbe (Helligkeit) der Hauttextur an der jeweiligen
Stelle variiert.
Skin-Nodes:
Glossy und der neue Subsurface-Sacttering-Shader
werden genutzt. Ähnlich dem Subdermal-Layer-Ansatz
hängt die Tiefe (Scale) des Subsurface-Sactterings
bei mir von der Farbe der Hauttextur an der
jeweiligen Stelle ab (dunkler = tiefer). Der
"alternative" Diffuse Shader wird nicht benutzt
(Gewicht = 0 im Mix-Shader)
|
|
Vergleich Subdermal-Layer vs Subsurface
Scattering: Irgendwas stimmt mit dem Glanz
noch nicht, ansonsten ist natürlich insbesondere
gut, dass die Hauttextur vom SSS-Shader direkt
benutzt und wiedergegeben wird. Auch entfallen die
kleinen Fehler, wo der Subdermal-Layer die
Hautoberfläche durchdringt (obere Augenlider)
|
Die (mich) ohnehin nicht überzeugenden Workarounds für
Haare/Fell entfallen seit man in Cycles auch regulär
Haare/Fell rendern kann: z.B. konnte man das Haar in Curves
umwandeln (apply Modifier) und diese dann im Edit-Mode zu
Meshes "extruden" (im Edit-Mode alle Curves selektieren mit
"A", dann "E" für extrude tippen und leicht in eine Richtung
ziehen). Texturen auf den Haaren bekam man damit aber nicht
konvertiert, auch variiert die dicke der Haare dann je nach
ihrer Richtung, nimmt aber nicht zur Spitze hin ab...
Besondere Komplikationen, bzw. meine Erfahrungen damit:
- Um eine Normal-Map (z.B. aus Sculptris importiert) auf
ein Mesh zu legen, muss dieses zunächst eine UV-Map
besitzen (ist bei aus Sculptris importierten Objekten
bereits der Fall, sofern diese erst im Paint-Modus
exportiert wurden).
Wenn noch kein UV-Mapping erfolgt ist kann das im
Edit-Mode angelegt werden (siehe Optionen, ggf. mit "T"
öffnen). Für ein klassisches UV-Mapping müssen zuvor Seams
(Trennkanten) definiert werden. Alternativ kann man aber
auch ein "Smart UV-Mapping" ohne Seams erzeugen lassen -
nur hat man da eben keine Kontrolle über die Trennstellen.
Dann muss eine Textur vom Typ "Image or Movie" angelegt
werden. Hier müssen nun unter "Mapping" die "Coordinates"
auf "UV" (statt "Generated") die "Influence" statt "Color"
auf "Normals" gelegt werden und außerdem (ganz wichtig,
aber selten beschrieben) unter "Image Sampling" "Normal
Map" angehakert werden (sonst wird die Textur als Bump-Map
interpretiert, was manchmal nicht oder erst spät auffällt,
einen aber in den Wahnsinn treibt, wenn man versucht ein
ge-re-meshtes Low-Poly-Objekt mit einer Normal-Map, die
von einem entsprechenden High-Poly-Objekt gebacken wurde
zu texturieren)
- Um eine Normal-Map von einem High-Poly-Objekt zu
bekommen, die man über ein entsprechendes Low-Poly-Objekt
legt müssen sich diese zunächst an derselben Position
befinden (ggf. aber in verschiedenen Layern). Außerdem
müssen beide Objekte sichtbar und renderbar sein! Für das
Low-Poly-Objekt muss ein UV-Mapping existieren (s.o.) und
ein Image muss als UV-Map zugeordnet sein. Dazu im
Edit-Mode alles selektieren ("A") im zweiten Teilfenster
"UV/Image Editor" (ganz links unten in der Ecke auswählen)
anzeigen und ein Image auswählen oder ein neues erzeugen.
Auf diesem Image sollte nun das UV-Mapping dargstellt
sein.
Nun im Object-Mode das High-Poly-Objekt mit der rechten
Maustaste selektieren, dann mit Shift + rechter Maustaste
auch das Low-Poly-Objekt selektieren (in dieser
Reihenfolge!). Dann im Scene-Tab (kleines Kamera-Icon)
ganz unten unter "Bake" den Bake-Mode "Normals" aktivieren
und "Selekted to Active" anhakern, bevor mit Bake die
Normal-Map erstellt wird. Bei Problemen, ggf. das Material
des Low-Poly-Objekts vor dem Baken nochmals entfernen.
- Sehr spannend ist die Möglichkeit über Array- und
Curve-Modifiers z.B. einen Reißverschluss zu erzeugen.
Dazu existieren gute Anleitungen im Netz (insbesondere für
Ketten - Stichwort "Chain").
Hier daher nur ein Hinweis dazu: Das Objekt und die Curve
niemals rotieren, da man sonst niemals mehr vernünftig
Änderungen am Objekt im Edit-Mode vornehmen kann! Daher
Objekt+Curve nur ungefähr an die gewünschte Position
schieben und dann die Curve-Punkte im Edit-Mode an die
gewünschten Positionen setzen, bzw. neue Curve-Punkte
erzeugen, indem man an den Endpunkten Extrude ("E")
drückt, oder mit "W" "Subdivide" bestehende Segmente
weiter unterteilt.
Beim Ansatz über einen Array- und einen Curve-Modifier
verformen sich allerdings die Objekte, also hier z.B. die
einzelnen Zähne des Reißverschlusses. Das kann unangenehm
auffallen. Für das Textilband auf dem die Zähne sitzen ist
aber genau das extrem praktisch. Für die Zähne gibt es
aber noch den alternativen Ansatz über "DupliFrames". In
den Object-Einstellungen des zu vervielfältigenden Objekts
stellt man unter Duplication "Frames" statt "None" ein und
deaktiviert "Speed". Unter den Object-Data-Einstellungen
des Curve-Objekts (Nurbs-Path) aktiviert man "Path
Animation", stellt die Anzahl der Vervielfältigungen unter
"Frames" ein und aktiviert "Follow". Nun macht man das zu
vervielfältigende Objekt zum Kind der Curve (erst
Rechtsklick auf das Objekt, dann mit Shift auch auf die
Curve und dann Ctrl+P) und zieht das Objekt auf den Anfang
der Curve.
- Vorteil: die Objekte verformen sich nicht.
- Nachteil 1: anders als beim Array-Modifier kann man
den Abstand zwischen den Objekten nicht direkt
einstellen (es wird einfach die Curve gefüllt)
- Nachteil 2: nur anwendbar wenn man nicht animieren
will bzw. das Objekt nicht in die Animation involviert
ist.
Reißverschluss mit Array- und Curve-Modifiers
(beliebig verlängerbar)
Zähne und das Textilband sind jeweils einzelne
Objekte, die sich aber
an
derselben Curve ausrichten
- Wenn man ein Objekt, insbesondere Kleidungsstüke, wie
z.B. ein T-Shirt erzeugt, sollte man erst ein Mesh aus
relativ wenigen Flächen im Edit-Mode anlegen. Dieses
sollte auch symmetrisch sein - dazu am besten einen
Mirror-Modifier benutzen. Wenn man damit fertig ist wendet
man zunächst den ggf. benutzten Mirror-Modifier an, da
sonst dieselben Teile der Texturen spiegelverkehrt auf
beide Seiten gelegt würden. Jetzt erzeugt man das
UV-Mapping (s.o.) und zuppelt es ggf. händisch noch etwas
zurecht (und fasst das ab nun am besten nicht mehr an).
Dieses Objekt-Template (z-B. T-Shirt) kann man nun relativ
leicht (da es nur aus relativ wenigen Punkte besteht) im
Edit-Mode in eine gewünschte Grundform bringen (d.h. an
einen bestimmten Körper/eine Körperhaltung anpassen). Den
Rest macht man indem man zunächst einen
Multiresolution-Modifier zuweist und dann die Form mit
zunehmendem Detaillierungsgrad sculpted bis es passt.
Außerdem benutze ich noch gerne einen Solidify-Modifier,
damit der Stoff eine bestimmte (wenn auch geringe) Dicke
hat, sowie hinten drauf noch einen Subdivision-Modifier um
die vom Solidify-Modifier erzeugten Stoff-Kanten etwas
abzurunden. Bei keinem dieser Modifier benutzt man jemals
"Apply Modifier", sonst wird man nie wieder vernünftig
Änderungen vornehmen können! Anmerkung: Der
Solidify-Modifier ist etwas problematisch wenn der Stoff
teiltransparent sein soll
- Um in Blender-Internal Alpha-Texturen zu verwenden, die
transparente Bereiche des Meshes bestimmen muss man
mehrere Dinge beachten, damit dann das Mesh entsprechend
des Alpha-Werts der Textur transparent wird:
- In den Material-Settings müssen Transparencies
aktiviert sein
- In den Textur-Settings setzt man Influences auf Alpha
und den Wert dafür auf -1 (nicht 1) außerdem setzt man
dort auch DVar auf 0 (Default ist 1)
- Haare: Zunächst muss man sich für eine Anzahl Segmente
entscheiden. Damit man diese im Particle Mode auch
entsprechend frisieren kann muss man in den dortigen
Optionen die "Path Steps" hochsetzen. Damit das dann auch
"rund" gerendert wird muss im Particle-System-Tab unter
"Render" die Anzahl "Steps" ebenfalls angepasst werden.
Man kann die Anzahl der Haare verringern, indem man nur in
den Rand- und Scheitelzonen viele (Kind-)Haare generiert.
Das lässt sich über eine Vertex-Group für die Haardichte
(Density) steuern.
Bei Frisuren mit Scheitel ist es besser getrennte
Partikelsystem für die Seiten links bzw. rechts des
Scheitels anzulegen (bei einem Pony kommt noch ein
weiteres Partikelsystem in Betracht). Andernfalls werden
einige Kind-Haare zwischen linker und rechter Seite
interpoliert und liegen damit an Stellen wo sie nicht sein
sollen (gehen z.B. mitten durch den Kopf)
Vertex-Group und Partikel-System für die Haare links
des Scheitels - Randzonen mit höherer Haardichte
(rot)
in der Mitte kann man etwas Haare "sparen" (türkis)
Momentan versuche ich eine
Figur komplett in Blender zu erstellen. Mein Ansatz dabei:
Verwendung eines Base-Meshs mit möglichst
wenigen
Knoten. Allerdings tauchen bei diesem Ansatz diverse Probleme
auf, die ich nun mitsamt meiner Lösungsansätze beschreibe.
- Das Base-Mesh wird durch einen Multires-Modifier
weiter unterteilt. Darauf im Sculpt-Mode alle Details
sculpten - bis hin zu Hautporen (dafür im
Multires-Modifier entsprechend oft auf Subdivide
klicken).
- Gerendert wird das Objekt aber in einem geringeren
Subdivsion-Level. Für die feinen Details wird vorher eine
Normal-Map erzeugt (Baken, s.o.). Eine solche
Normal-Map kann man recht schnell erstellen, indem man
eine temporäre Kopie des Objekts anlegt, dieser Kopie die
zu erstellende Normal-Map als Textur zuweist und dann für
das Baken den Render-Subdivision-Level des
Multires-Modifiers des Original-Objekts auf den maximalen
Wert setzt. Die erzeugte Normal-Map dann schnell
abspeichern, das kopierte Objekt kann man nun schon wieder
löschen und die Normal-Map dann für das Original-Objekt
verwenden (nicht vergessen den Subdivision-Level wieder
runterzusetzen) . Baken geht übrigens bisher nur in
Blender-Internal (BI), wenn man also Cycles verwendet muss
man dafür auf BI umstellen. Die erzeugten Normal-Maps sind
aber mit Cycles kompatibel...
- Das erste Problem liegt im Auftauchen unschöner Effekte
in einigen Zonen beim Verformen eines Körpers durch eine
Armature. Hier kann man mit dem Smooth-Modifier
ein bisschen nachhelfen. Dafür ist es gut, dass wir die
ganz feinen Details im vorigen Schritt schon in eine
Normal-Map ausgelagert haben. Ich benutze zwei
Smooth-Modifier: einen nach dem Armature- aber noch vor
dem Multires-Modifier und einen nach dem
Multires-Modifier. Beide arbeiten, gesteuert durch eine
(dieselbe) Vertex-Group nur auf den Zonen, die anfällig
für solche Artefakte sind (s. Grafiken unten).
Smooth-Modifiers zum Ausgleichen von
Artefakten beim "Verbiegen" durch Armatures
|
|
Vergleich ohne (links) und mit
Smooth-Modifiers (rechts) - die Artefakte
unter den Achseln werden deutlich gemildert -
wenn auch hier leider keine Wunder passieren
:-)
|
- Ein weiteres Problem, dass mir die Verwendung einer
Armature immer wieder macht, ist dass manche Bereiche des
zu verformenden Körpers dabei schrumpfen bzw.
abflachen. Das mag zum Teil an einem sch...lechten
"Edge-Flow" liegen und auch einer suboptimalen Armature.
Allerdings möchte ich sowohl Base-Mesh als auch Armature
nicht übermäßig verkomplizieren. Trotzdem habe ich einen
Workaround gefunden, der relativ simpel ist und ganz gute
Ergebnisse bringt:
- Ich erzeuge eine Kopie (echtes Duplicate, kein linked
Duplicate) des Original-Objekts (mit allen Modifiern,
insbesondere dem Armature- und dem Multires-Modifier,
sowie auch den zuvor besprochenen Smooth-Modifiern).
- Dieser Kopie füge ich noch einen Smooth-Modifier hinzu
und bringe diesen Smooth-Modifier in der Liste aller
Modifier über den Armature-Modifier. Bei
ausreichedem Smooth-Factor / Repeats bewirkt dieser
Modifier, dass das Objekt deutlich schrumpft -
insbesondere an den Armen, Schultern und Beinen. Ein
ausreichender Schrumpf-Effekt tritt aber nur ein, wenn
das Base-Mesh wirklich wenige Vertices hat! Fein
strukturierte und von der Armature ohnehin nicht
deformierte Bereiche - wie insbesondere den Kopf - nehme
ich davon aus, indem ich eine Vertex-Group benutze, die
ich diesem Smooth-Modifier mitgebe.
- Nun selektiere ich erst das Original, dann die Kopie
und klicke dann im Multires-Modifier der Kopie auf
"Reshape", wodurch die Form des Originals wieder
angenommen wird. Das war's! Anmerkung: Beide Objekte
müssen dafür sichtbar sein - d.h. insbesondere in
selektierten Layern liegen.
- Ganz wichtig ist, dass die Armature dabei in der
Rest-Pose ist, sonst kann es zu Artefakten kommen, die
man nur beseitigt bekommt indem man den
Multires-Modifier komplett entfernt, einen neuen anlegt
und dann mit Reshape die Form wiederherstellt!
Der Trick liegt eigentlich im Schrumpfen
bestimmter Bereiche, was sich natürlich auch anders als mit
einem Smooth-Modifier erreichen ließe - z.B. indem man das
Mesh von Hand entsprechend verändert. Kurz gesagt: ein
dünnerer Arm wird durch die Armature-Deformation absolut
gesehen weniger abgeflacht als ein normal dicker Arm. Dieser
zwar noch vorhandene aber deutlich kleinere Abflach-Effekt
fällt kaum noch auf, nachdem der Multires-Modifier den Arm
(fast) wieder auf seinen normalen Umfang verdickt hat. Der
Smooth-Modifier hat dabei den Vorteil, dass er den
(berühmt-berüchtigten) "Edge-Flow" gleich noch etwas
"gerade" rückt. Nicht so gute Resultate habe ich dagegen mit
anderen prinzipiell in ähnlicher Richtung wirkenden
Modifiern, wie dem Displace-, oder auch dem
Laplacian-Smooth-Modifier erreicht.
Erwähnt werden muss hier noch, dass es sehr, sehr viel
komplexere Ansätze gibt um diesen und anderen unerwünschten
Effekten zu begegnen - diese Ansätze sind sicherlich z.T.
auch noch deutlich besser, aber eben auch deutlich
komplexer...
ACHTUNG: Dieser Trick
funktionierte bis Version 2.67. In Version 2.68
funktioniert "Reshape" offenbar nicht mehr relativ zum
darüberliegenden Smooth-Modifier, d.h. das Schrumpfen
des Meshes wird nicht wie gewünscht ausgeglichen. Ich
weiß noch nicht, ob es sich hier um einen Bug handelt,
oder wie man dieses Problem evtl. umgehen könnte...
UPDATE: Sieht so aus,
dass der Trick inzwischen (2.93.6) doch wieder
funktioniert. Für nicht ganz so low-poly-ge Meshes
eignet sich auch der Deform-Modifier gut - evtl. noch
mit einem anschließenden Smooth. Auch bei aktiviertem
"Preserve Volume" im ARMATURE-Modifier werden die
Ergebnisse noch etwas besser.
Smooth-Modifiers zum "Schrumpfen" des Base-Meshs,
was durch ein Reshape vom Original-Mesh wieder
korrigiert wird
|
|
Vergleich ohne (links) und mit Smooth-Modifiers
(rechts) zum verkleinern des Base-Meshs
(Ausgeglichen durch den Multires-Modifier) - die
Schulter rechts erscheint im Vergleich zur Version
links nicht mehr unnatürlich geschrumpft. Mit der
Armature-Modifier-Option "Preserve Volume" kann
man den Effekt zusätzlich unterstützen; "Preserve
Volume" alleine reicht hier jedoch nicht aus.
|
- Besondere Probleme machen bei diesem Ansatz auch noch
die Haare. Die lassen sich nicht vernünftig auf
einem Multires-Objekt erzeugen, da zum einen bei mir das
Base-Mesh so wenige Polygone hat, dass man die
Vertex-Groups für die Haarzonen (Kopfhaare, Augenbrauen,
Wimpern oben/unten) nicht genau genug bestimmen kann. Zum
anderen hat Blender da aber scheinbar auch einen Bug (oder
es ist schlicht nicht unterstützt) - jedenfalls kommen die
Haare dann überall aus der Oberfläche, aber nicht da wo
sie laut Vertex-Group-Zuordnung sollen... Daher benutze
ich eine Kopie des normalen Meshes, bei dem ich den
Multires-Modifier angewendet ("applied") habe und zwar mit
einem Level, der ausreicht um die Haarzonen genau genug
eingrenzen zu können (eben über entsprechende
Vertex-Groups).
Base-Mesh mit wenigen Vertices (1804 Vertices)
|
|
Hair-Mesh mit genug Vertices um Haarzonen (rot
markiert sind
die Augenbrauen) genau genug definieren zu können
(231490 Vertices) |
- Da ich auch Shape-Keys verwende (insbesondere
für Gesichtsausdrücke) habe ich nun ein weiteres Problem:
Selbst wenn ich alle Shape-Keys fertig hätte, bevor ich
das Haar-Mesh erzeuge (als Kopie des Original-Meshs) kann
ich dann den Multires-Modifier nicht anwenden, solange
Shape-Keys existieren (Blender verweigert das Anwenden von
Multires-Modifiern wenn Shape-Keys existieren).
Ein weiteres Problem hatte ich kürzlich mit Shape-Keys die
den Bezug zum Basis-ShapeKey verloren hatten.
Reparturanleitung siehe hier: Repair Basis Shape Key.
Eine Armature steuert die Gliedmaßen, die Gewichte
der Vertex-Groups wurden überwiegend automatisch
bestimmt (Skin-Objekt zum Kind der Armature
machen). Einzelne Gewichte wurden händisch
angepasst (z.B. Kopf, Finger und Zehen)
|
|
Mit Shape-Keys realisierte Gesichtsausdrücke
(Mund/Augenlider/Augenbrauen einzeln)
|
Um nun Shape-Keys einigermaßen elegant (wenn auch
etwas langsam) übertragen zu können habe ich ein Python-Script mit dem
Copy-Shape-Keys- und einigen weiteren Operatoren
geschrieben.
Installation in Blender über Menü "File→User Preferences..."
dort im Tab "Addons" unten auf den Button "Install from
File..." klicken und das Python-Script auswählen. Danach
noch mit der kleinen Check-Box aktivieren (ggf. nach "SKOP"
für "Shape-Key-Operators" suchen). Die verfügbaren
Operatoren sind:
- SKOP:
Copy Shape Keys - Kopiert alle Shape-Keys vom
aktiven auf alle (anderen) selektierten Objekte.
Zusätzlich können automatisch "Driver" erzeugt
werden, so dass die Shape-Keys der Zielobjekte
direkt von denen des Quellobjekts gesteuert werden.
Multires- und Subsurf-Modifier auf dem Quell-Objekt
können dabei virtuell angewendet werden (mit dem
aktuell sichtbaren Subdivision-Level), damit das
Mesh mit dem/den Zielobjekt(en) übereinstimmt.
Achtung: das Skript prüft zwar lediglich ob
die Anzahl der Knoten in den Meshes übereinstimmt,
funktionieren kann die Übertragung aber nur wenn die
Zielobjekte aus dem Quellobjekt erzeugt wurden (d.h.
durch Kopieren + ggf. Anwenden von
Multires-/Subsurf-Modifiern). Andernfalls wird das
Zielobjekt total zerstört!
Nachteil: Wenn im Quell-Objekt z.B. ein
Armature-Modifier vor dem Multires-Modifier
liegt wird das Haar-Mesh in Armature-gesteuerten
Posen nicht ganz genau mit dem Quell-Objekt
übeinstimmen (s.a. SKOP: Copy as Shape Key). Wenn
man es wie ich für die Haare verwendet und die sich
in Bereichen befinden die nicht durch einen
Armature-Modifier, sondern nur durch Shape-Keys
verformt werden (wie z.B. bei mir der Kopf)
kann man diesen Nachteil, aber vernachlässigen.
Verfügbar: via Space-Menü im Object-Mode
- SKOP:
Copy as Shape Key - Kopiert die Form des
aktiven Mesh-Objekts als neuen Shape-Key auf alle
(anderen) selektierten Mesh-Objekte. Dabei werden
vorab virtuell alle aktiven Modifier und/oder
Shape-Keys des Quell-Objekts angewendet. Das heißt:
es wird genau die momentan sichtbare Form
übertragen.
Achtung: Die Meshes müssen wiederum genau
zueinander passen (d.h. Zielobjekte sollten aus dem
Quellobjekt durch Kopieren enstanden sein,
wobei ggf. noch Multires-/Subsurf-Modifier
angewendet wurden).
Nachteil/Vorteil: Dies kann alternativ zu
obiger Methode benutzt werden, indem für jede Pose
ein entsprechender Shape-Key auf das Haar-Mesh
übertragen wird. Das ist zwar umständlicher, erzeugt
aber ein Haar-Mesh, dass mit dem Original-Mesh
bestmöglich übereinstimmt. Dabei nicht vergessen,
dass das Haar-Mesh dann nicht noch zusätzlich den
Armature-Modifier benötigt, da es sonst ja doppelt
"verbogen" würde...
Verfügbar: via Space-Menü im Object-Mode
- SKOP:
Duplicate Shape Key - Dupliziert den
aktivierten/selektierten Shape Key des aktiven
Objekts. Dabei können die Shape-Keys
(Original/Duplikat) gleich noch umbenannt bzw. mit
einem Postfix versehen werden. Außerdem können
Original- und dupliziertem Shape-Key
Blend-Vertex-Groups zugewiesen werden. Die Funktion
ist hilfreich um aus einem Shape-Key, der
symmetrisch für beide Seiten des Objekts
(rechts/links) erzeugt wurde zwei Shape-Keys zu
erzeugen, die jeweils getrennt nur auf die rechte
bzw. linke Seite des Objekts wirken (vorher müssen
die Vertex-Groups für rechts/links erzeugt werden).
Zusätzlich kann man den Orignal-Shape-Key erhalten -
dann ist es eine "Triplicate Shape Key"-Funktion...
Verfügbar: via Space-Menü im Object-Mode
- SKOP:
Apply Shape Key - Anwendung des
aktiven/selektierten Shape Keys des aktiven Objekts.
Das heißt, dass das Objekt hinterher fest die durch
den Shape-Key bestimmte Form hat.
Achtung: Alle Shape Keys werden gelöscht!
Alternativ: Kann auch einfach zum Löschen
aller Shape-Keys benutzt werden, indem der
Basis-Shape-Key "angewendet" wird...
Verfügbar: via Space-Menü im Object-Mode
- SKOP:
Drive Shape Keys by Bones - Erzeugt Driver,
die die Shape-Keys der selektierten Mesh-Objekte
durch die gleichnamigen Knochen (Bones bzw.
richtiger Pose-Bones) des aktiven Armature-Objekts
steuert. Im Edit-Mode werden nicht vorhandene
Knochen erzuegt, indem der aktive Knochen dupliziert
wird. Es kann ausgewählt werden durch welche
Pose-Transformation der Knochen die Shape-Keys
gesteuert werden.
Verfügbar: via Space-Menü im Object-Mode,
Pose-Mode und Edit-Mode (mit Zusatzfunktion "Create
Bones" im Edit-Mode, s.o.)
ACHTUNG:
Diese Operatoren wurden aktualisiert, da die alte
Version in Blender 2.68 nicht mehr funktionierte.
Umgekehrt funktioniert die neue Variante aber auch
in älteren Versionen von Blender.
In dem Zusammenhang wäre auch eine Funktion zum Kopieren von
Vertex-Groups von Objekt A nach Objekt B ohne
Löschen aller anderen Vertex-Groups von B sehr hilfreich.
Leider gibt's die Funktion in Blender nur mit Löschung aller
bisherigen Vertex-Groups von B. Daher noch ein Python-Skript - leider
sind die Funktionen bei nicht ganz kleinen Meshes aber sehr
langsam. Ich benutze das, da ich nach einem Update der
Gewichte auf meinem Low-Poly-Base-Mesh (z.B. durch autom.
Generieren der Gewichte entspr. der Aramature), genau diese
Gewichte auch gerne auf mein Haar-Mesh übetragen möchte -
aber ohne dabei die Vertex-Groups zu verlieren, die die
Haarzonen (Kopfhaare, Augenbrauen, Wimpern oben/unden)
festlegen! Installation des Skripts, wie oben für die
Shape-Key-Operatoren beschrieben (hier ggf. nach "VGOP" für
"Vertex Group Operators" suchen). In diesem Python-Skript
gibt es bisher diese Operatoren:
- VGOP:
Copy Vertex Groups - Kopiert alle oder
nur die aktuell selektierte Vertex Group vom aktiven
auf alle (anderen) selektierten Objekte.
Bemerkung: Es sollte die Option "Use class
BMesh" benutzt werden, da das deutlich schneller zu
sein scheint...
Achtung I: Sehr langsam!
Achtung II: Die Meshes müssen, wie oben bei
den Shape-Key-Operatoren beschrieben, kompatibel
sein! Da das ganze ohnehin recht zeitaufwändig ist
und ich noch hoffe eine schnellere Variante zu
entdecken, habe ich auch noch keine Zusatzfunktionen
zum autom. Anwenden von Modifiern (und ggf. dafür
nötigen entfernen von Shape-Keys integriert) - das
muss man also vorher von Hand machen (der Operator
"SKOP: Apply Shape Key" ist dafür aber sehr
hilfreich - s.o.)
Verfügbar: via Space-Menü im Object-Mode und
Weight-Paint-Mode
- VGOP:
Restore Vertex Groups - Stellt alle Vertex
Groups für die eine Kopie mit einem bestimmten
Postfix (Default: "_copy") angelegt wurde wieder
her. Dafür wird die Kopie abermals kopiert und
zurück in den Namen ohne Postfix benannt
Achtung: Entsprechende bestehende
Vertex-Groups gehen dabei verloren (werden
"überschrieben")
Anwendung: Wenn man Vertex-Group-Gewichte
automatisch bestimmen lässt, indem man ein
Mesh-Objekt zum Kind einer Armature mit
automatischer Bestimmung der Gewichte macht, dabei
aber bestimmte Vertex-Groups unverändert behalten
will. In diesem Fall kopiert man ("händisch") die
betreffenden Vertex-Groups und stellt sie mit diesem
Operator nach der automatischen Bestimmung der
Gewichte wieder her.
Verfügbar: via Space-Menü im Object-Mode und
Weight-Paint-Mode
Meine persönliche Hit-Liste der wichtigsten
Tastenkürzel:
Key
|
Funktion
|
Mode
|
Mittlere Maustaste |
Ansicht Drehen |
|
Shift+Mittlere Maustaste |
Ansicht
verschieben |
|
Mausrad |
Ansicht Zoomen |
|
Rechte Maustaste |
Selektieren
(+Shift für Mehrfachselektion) |
|
A
|
Alle/Nichts
selektieren (Object Mode: Objekte; Edit-Mode:
Punkte, Kanten, Flächen)
|
Object-Mode,
Edit-Mode
|
Tab
|
Wechsel in den
Edit-Mode und zurück
|
|
Z
|
Zwischen
Gitter- und "solider" Ansicht toggeln
|
|
N
|
View-Options
öffnen: z.B. kann man hier im Edit-Mode
einstellen, dass man die Normalen-Vektoren an
Flächen und/oder Kontrollpunkten angezeigt
bekommen möchte (sowie auch deren angezeigte Länge
einstellen)
|
|
Space
|
allgemeines
Menü über das man auch nach Funktionen suche kann
|
|
W
|
Menü über das
u.a. ein Fläche weiter Unterteilt werden kann
|
Edit-Mode
|
S
|
Skalieren
(dazu entweder mit Maus ziehen, oder Faktor
eintippen)
|
Object-Mode,
Edit-Mode |
S+{X,Y,Z}
|
Skalieren
entlang einer der Hauptachsen (s.o.) |
Object-Mode,
Edit-Mode |
S+Shift+{X,Y,Z}
|
Skalieren
entlang der anderen beiden Hauptachsen (s.o.) |
Object-Mode,
Edit-Mode |
Alt+S
|
Skalieren
entlang der Normalen-Vektoren (sehr nützlich z.B.
um eine Art "Skelett" zu erzeugen, s. auch
oben)
|
Edit-Mode
|
G
|
Grab: Objekt
bzw. Punkt, Kante oder Fläche greifen und bewegen
|
Object-Mode,
Edit-Mode,
UV-Map |
G+{X,Y,Z}
|
Grab Bewegung nur entlang einer der
Hauptachsen
|
Object-Mode, Edit-Mode,
UV-Map |
R
|
Rotieren um
die Sichtachse (dazu entweder mit Maus ziehen,
oder Winkel in Grad eintippen)
|
Object-Mode,
Edit-Mode,
UV-Map
|
2x R
|
Rotieren um
den Schwerpunkt
|
|
R+{X,Y,Z}
|
Rotieren um
eine der Hauptachsen |
Object-Mode,
Edit-Mode,
UV-Map, Pose-Mode
|
Alt-G, Alt-R,
Alt-S
|
Translation,
Rotation, Skalierung selektierter Elemente
zurücksetzen
|
Object-Mode,
Edit-Mode,
Pose-Mode |
Ctrl+R
|
Unterteilen
angrenzender Flächen.
Achtung: UV-Mappings werden zwar auch
unterteilt, jedoch einfach mittig, während man die
Teilung im 3D-Mesh noch verschieben kann!
|
Edit-Mode
|
Ctrl+T
|
Verdrehen von
Punkten in Curves
|
Edit-Mode
|
E
|
Extrude: Neue
Punkte aus einer Curve bzw. Kanten oder Flächen
aus einem Mesh herausziehen (aus selektierten
Punkten, Kanten).
Beim Remeshing eines komplexen z.B. in Sculptris
erzeugten Meshes intressant ist die Möglichkeit
Snap-to-Surface zu aktivieren (Hufeisensymbol
unten), so dass ein neuer Punkt auf die sichtbare
Oberfläche eines anderen Objekts ausgerichtet
wird.
|
Edit-Mode
|
F
|
Zwei
selektierte Punkte zu einer neuen Kante, bzw.
mehrere selektierte Kanten zu einer neuen Fläche
verbinden
|
Edit-Mode
|
B
|
Box-Selektion:
Achtung es werden nur sichtbare Punkte, Kanten und
Flächen selektiert! Ggf. vorher den
durchscheinenden Modus aktivieren, oder mit Z
(s.o.) in die Gitterdarstellung wechseln.
|
|
C
|
Circle-Selektion (beenden mit ESC). Achtung die
normalen Maus-Funktionen gehen dann nicht mehr,
das das Maus-Rad die Kreis-Größe verändert und die
rechte Maustaste Punkte/Kanten/Flächen
deselektiert, während die linke
Punkte/Kanten/Flächen selektiert
|
|
Ctrl+P
|
Selektierte
Objekte zu Kindern des zuletzt selektierten
(aktiven) Objekts machen
|
|
M
|
Objekte in
einen anderen Layer verschieben
|
|
Shift-D
|
Kopieren von
Objekten (Object-Mode), bzw. Mesh-Teilen
(Edit-Mode)
|
Object-Mode,
Edit-Mode, ...
|
Alt+B
|
Alles
außerhalb eines rechteckigen Bereichs unsichtbar
machen. Hilfreich insbesondere im Sculpt-Mode.
Achtung: Die unsichtbaren Bereiche werden
trotzdem editiert, wenn man z.B. mit einem
Sculpt-Brush darüberfährt!
|
Sculpt-Mode,
...
|
H
|
Hide:
Selektierte Elemente unichtbar machen
|
Object-Mode,
Edit-Mode |
Alt+H
|
Alle Elemente
(des aktuellen Layers) sichtbar machen
|
Object-Mode,
Edit-Mode |
L |
alle (auch
indirekt) verbundenen Punkte auswählen
|
Edit-Mode, UV-Map-Ansicht
|
Ctrl++
|
Auswahl
ausweiten
|
Edit-Mode
|
Ctrl+-
|
Auswahl
verkleinern
|
Edit-Mode
|
F12
|
Rendern (mit
F11 zurück zur 3D-Ansicht, allerdings ist es IMO
besser gleich das Fenster so zu teilen, dass man
eine 3D und eine Render-Sicht nebeneinander hat) |
|
Ganz alte Ergebnisse meiner ersten Versuche. Sculpting
Texturieren (inkl. Normal-Maps) in Sculptris, alles weitere in
Blender...
"Painted Head"
Der Kopf mit erhöhten Werten
für Specular Intensity (1.0) und Hardness (ca.
350), was einen glänzenden (feuchten) Eindruck
ergibt. Außerdem wurde eine Textur (Marble)
gespiegelt (Mapping-Coordinates: "Reflection")
darübergelegt, welche die Farbe (Color) und die
Translucency beeinflusst (Influence). Das
Partikelsystem für die Kopfhaare wurde
deaktiviert. Das Ganze ist eine Spielerei, um
ein neues Titelbild für meine Homepage zu
kreieren.
|
|
"Unpainted Head"
...daselbe ganz ohne
Texturen, aber weiterhin mit "Subsurface
Scattering", was Haut (und vielen anderen
Oberflächen) erst ein realistisches Aussehen
gibt.
|
|
High Saturation
Untexturierter Kopf ohne
Kopfhaare und hohen Specular-Intensity und
-Hardness-Werten (glänzend-feucht). Die leichte
Färbung der Haut kommt ausschließlich von der
eingestellten Farbe für das Subsurface
Scattering. Dieses Bild ist mit Gimp
nachbearbeitet worden, indem der Sättigungswert
(Saturation) extrem hochgezogen wurde, was die
Hautfärbung erst deutlich werden lässt.
|
"Painted Head"
|
|
"Unpainted Head"
|
|
High Saturation |
Portrait
Beleuchtung: flach stehende
Sonne (Sun) leicht rötliches Licht und ein
leicht bläuliches "Area Light" von links, um die
Schatten etwas aufzuhellen. Es bietet sich an,
die Haare an einem ggf. vorhandenen Scheitel
besonders dicht zu machen, da zu wenige Haare
dort extrem auffallen. Die Haare wurden mit
einer Alpha-Blend-Textur versehen, die sowohl
ein (schnelles) Fade-In als auch ein (langsames)
Fade-Out realisiert. Ohne das Fade-In ist der
Übergang zur Kopfhaut IMO zu hart. (Bild ist
sehr groß - klicke rechts oben für 100%-Zoom)
|
|
Draufsicht
Man erkenn insbesondere,
dass die Haare im Bereich des Scheitels noch
dichter sein müssten. Ein paar Artefakte an den
Haarrändern gehen dagegen auf das Konto des
Tiefenunschärfefilters von Blender.
|
Portrait |
|
Draufsicht |
Reines Blender-Modell
(Cycles-Render)
Komplett in Blender
erstelltes Modell, gerendert mit Cycles. Für die
Haut gibt es die Oberfläche, die aber
lichtdurchlässig (translucent) ist. Darunter
befindet sich ein reflektierender Layer (Linked
Duplicate des Oberflächen-Meshs), dessen Abstand
über eine Textur mit einem Displace-Modifier
geregelt wird. Die Ray-Länge wird dann in einen
Haut-Ton umgerechnet... (simuliert Subsurface
Scattering, welches aber für Cycles für die
nächste Blender-Version angekündigt ist).
Gerendert in 1200x2400 mit 1500 Samples in 5'24h
|
|
Verfeinerung
...nach kleineren
Anpassungen (Haardicken, Hauttöne, ...): Zwei
Shape-Key-gesteuerte Gesichtsausdrücke
|
Blender-only
Very low-poly base mesh |
|
Verfeinerung
|
Und nun noch ein paar deutlich neuere Sachen, bei denen das Base-Mesh in MakeHuman erstellt wurde und alles andere dann nur noch in Blender gemacht wurde...
Filmic Blender
Gerendert mit Filmic Blender
und sehr hell - was einige Unzulänglichkeiten ganz hübsch kaschiert - genauso wie die Kapuze das nicht so überzeugende Haar ... was habe ich mir mit Haaren schon einen abgebrochen :-)
(Work in progress)
|
|
Filmic Blender
(und sehr hell) |
|
Higher-poly base mesh
Base-Mesh nicht ganz so
low-poly, aber über Armature und Shape-Keys
steuerbar
Kleidung als "Schnittmuster" vor und hinter die Figuer gelegt, so dass die Stoffteile sich dann dank Sewing simuliert zusammenziehen.
Das funktioniert recht gut, man braucht aber genug Nahtstellen. Es ist mir nicht gelungen welche durch Modifier zu erzeugen, aber da muss ich
nochmal mit Geometry Nodes ran, die ich noch nicht kannte als ich das gemacht habe...
Rest: Haare - naja das übliche Disaster (mühsam durch eine "wilde" Frise kaschiert), aber mehr dazu s. nächstes Bild...
(Work in progress)
|
|
Cloth Simulation mit Geometry Nodes
Sewing Edges und diverse spezielle Optimierungen mit Geometry Nodes (z.B. Reißverschluss, Hosenträger, Nähte).
|
|
Cloth Simulation mit Geometry Nodes ... einige Iterationen später
Der Pulli, die Nähte der Hose, sowie auch die Fransen und einzelnen Fäden der Löcher sind (wie jetzt auch alle Haare) mit Hair Curves gemacht.
Die Löcher werden autom. erzeugt (weshalb im Moment auch noch der eine Flicken von den Fransen eines Risses durchdrungen wird). Der Pulli-"Stoff" liegt flach in der Z-Ebene
und wird entspr. der UV-Map zugeschnitten und dann mit einer eigenen "Surface Deform" Geometry-Node-Group auf den Cloth-Simulierten Pulli gelegt. Dieselbe Group wird auch verwendet
um die Flicken und Taschen auf die simulierte Hose zu applizieren (ersetzt den vorher verwendeten Surface Deform Modifier der leider manchmal spinnt und das zu deformierende
Mesh komplett zerfetzt.
|
|
Cloth Simulation mit Geometry Nodes ... weitere Verbessurungen
Die Brusttasche sowie die Gürtelhalter-Laschen sind jetzt selbst Cloth-simuliert und mit Hilfe meiner Surface Deform Geometry Node Group auf den Hauptteil der Hose gepinnt
(d.h. die Pinning Group wird per Surface Deform entspr. des selbst Cloth-simulierten Hauptteils bewegt).
Vorteil: die Tasche kann ausladender sein und die Gürtellaschen werden nicht mehr so wild verformt sondern fallen natürlicher.
Die Nähte (auf dem Hauptteil) waren vorher auf Kanten des Meshs gelegt. Der Nachteil ist, dass das Mesh entsprechende Randzonen definieren muss, was die Simulation versaut
(da diese Faces bei mir sehr viel kleiner waren als die anderen), was ich dann mühsam mit allerlei GeoNode-Tricks versucht habe wieder auszugleichen.
Nun habe ich ein zweites Mesh definiert, das nur die Nähte als Edges modelliert (keine Faces).
Diese werden dann per Geometry Nodes in Curves konvertiert, diese dann in äqudistante Points auf die dann die Nahtelemente instanziiert werden
(die Nahtelemente sind ürigens selbst kurze Curves.
Das ursprügliche Mesh wird wieder mit der Surface Deform Geometry Node Group auf den Cloth-simulierten Haptteil projeziert (unfassbar hilfreiche GN Group :-))
|
MakeHuman
Model
(Kleidung mit "Sewing")
|
|
Cloth Sim. mit Geometry Nodes
|
|
Cloth Simulation continued
|
|
Cloth Simulation continued
|
Prozedurale Haare, Poren (Hautstruktur) mit Geometry Nodes
Dasselbe Modell wie vorher, aber diesmal sind sowohl die Haare als auch Poren, Pickel und Flecken (Hautstruktur) prozedural mit Geometry Nodes erzeugt worden
- die Hautstruktur ist vielleicht noch ein bisschen übertrieben, aber ich bin jetzt sowohl mit den Haaren als auch der den Hauteffekten relativ zufrieden ;-)
Die Haare werden zunächst über Geometry Nodes als Hair Curves erzeugt. Das Hair Curves Objekt wird dann von mir manuell erst dupliziert,
dann der Geometry-Nodes-Modifier applied und dann in ein Particle System umgewandelt
(ich war bisher nicht in der Lage mit Hair Curves genug Haare zu erzeugen, ohne dass mein Rechner in die Knie geht, außerdem sind die Effekte der Partikel-System-Haare
schon immer noch recht nett, aber mal sehen wie such die Hair Curves weiterentwickeln)
Die Poren / Hautstruktur geht komplett über Geometry Nodes, braucht aber naturgemäß eine hohe Mesh-Auflösung! (Ich packe auf meinen Multi-Resolution Modifier
dafür am Ende noch einen Subdivision Surface Modifier obendrauf, bevor der Geometry Nodes Modifier sein Werk verrichtet...
|
|
Mit und ohne Poren (Hautstruktur)
...zum Vergleich...
Die Geometry Nodes Groups, die die Poren etc. machen, geben auch Fields aus, u.a. bzgl. der Porentiefe, die dann von den Shader Nodes benutzt werden,
um die Poren dunkler und weniger lichdurchlässig (reduziertes Subsurface Scattering) zu machen.
|
|
...im Profil...
Der Pferdeschwanz hat vor allem im obersten Teil noch erhebliche Schwächen - ansonsten bin ich mit den autom. generierten Haaren jedoch recht zufrieden
- besser als alles was ich bisher handmodelliert habe und immer bestenfalls "wild" aussah...
Ansonsten noch diverse Baustellen, wie z.B. die Augen.
Den unschöne Übergang zwischen dem höher aufgelösten Kopf-/Halsbereich und dem restlichen Körper,
der nur wegen des Subsurface Scattering sichtbar ist, hoffe ich jetzt mit Geometry Nodes (Merge by Distance) und/oder dem Weld Modifier beseitigen zu können.
|
|
Poren per Shader
Hab das ganze umgebaut und mache die Poren, Pickel, Flecken jetzt doch per Shader und nicht mit Geometry Nodes.
Vorteil: Man kommt mit viel weniger Subdivisions aus und kann die Poren trotzdem beliebig klein machen.
|
Prozedurale Haare, Poren (Hautstruktur) mit Geometry Nodes
|
|
Mit vs. ohne Poren (Hautstruktur)
|
|
...im Profil...
|
|
Poren per Shader
|
Mit und ohne adaptive Hair-Density (etwa gleich viele Haare)
Mein Guide-Hair-Generator sollte immer auch solche Scheitelfrisuren abdecken. Das Problem war eben der Scheitel. Dort braucht man unfassbar viele Haare damit das gut aussieht. Nun ergibt sich die Position des Scheitels aber bei mir dynamisch.
Die Lösung: Per Geometry-Nodes wird ein Dichte-Feld generiert, welches dafür sorgt, dass Haare der äußeren Layer wesentlich dichter sind. D.h. insbesondere auch solche die am Scheitel entspringen. Dadurch wirken die Haare am Scheitel wesentlich dichter (sind sie ja auch), ohne dass sich der restliche Eindruck wesentlich verändert und ohne dass deutlich mehr Haare erzeugt werden müssen (75.6K links, 75.8K rechts). Extrem hilfreich dabei der neue Points to Curves Node in Blender 4.0.0.
|
|
Unterschiedliches "Clumping" (und "Noise") in (48) Layern
Von vorne sah das vorher schon nicht schlecht aus (finde ich), aber am Hinterkopf z.B. klafften riesen Lücken im Haar - vor allem bei höheren Clumping-Werten (der Clumping-Wert beeinflusst bei mir wie stark Kantenlängen randomisiert werden wenn sie
für Shortest Edge Paths als Kosten verwendet werden - hohe Werte führen dazu dass sich viele Curves vereinigen und dann am selben Zielpunkt enden). Mit der neuen Repeat Zone (Schleife) in Blender 4.0.0 ist es relativ einfach das
Ausgangsmesh (Kopf) in mehrere Sektionen entsprechend des Abstands von jedem möglichen Startpunkt zum jeweils nächstgelegenen Endpunkt zu unterteilen und dann für dieses Sektionen einzeln Guide-Hair-Curves zu generieren, jeweils mit unterschiedlichen Random-Seeds für das Clumping. Das führt dazu dass es mehrere Layer (im Bild rechts 48) gibt in denen die Haare unterschiedlich "klumpen". Das vermeidet die Löcher auch für hohe Clumping-Werte wie hier.
|
Mit und ohne adaptive Hair-Density
|
|
Unterschiedliches "Clumping" (und "Noise") in (48) Layern
|