Wie die meisten Webseiten nutzen wir Cookies. Nähere Informationen dazu, wie wir mit diesen Cookies umgehen, können Sie in unseren Datenschutzbestimmungen lesen.   Einverstanden
 
 

3D Forum > High Poly UV-Maps auf Low Poly Models? (Wie funktioniert das?)

High Poly UV-Maps auf Low Poly Models? (Wie funktioniert das?)

20.11.2014 00:09
 
VisionOfVictorDo. 20 Nov. 2014, 12:26 Uhr
Das ist ist Super.
Ich denke, jetzt habt ihr mir sehr geholfen.

Naja... alles mit der Zeit... wird schon noch sitzen in mir.
Danke euch nochmals. Echt freundlich.
 
SleepySa. 22 Nov. 2014, 10:01 Uhr
Hi es wurde ja schon einiges zum Thema geschireben möchte trozdem noch ein paar dinge dazu schreiben.

Eine Normal map ist keine Textur im dem Sinne das hier ein Bild auf ein objekt gelegt wird.

Eine Normal ist viel mehr eine Informationskarte wo deine Engine weiter verarbeitet.

Eine Normal besteht im Grunde aus 4 Farben Hellblau, Grün, Rot, und Blau.

Das Hellblau steht für eine zur Kamera ausgerichteten Normale.

Eine Normal die also komplett hellblau ist, enthält keine Informationen

Eine Normale im Allgemeinen ist eine Ausrichtung im 3D Raum. Hellblau ist also immer Orthogonal zur Kamera ausgerichtet wärend Grün,Blau,Rot für die Richtungen XYZ stehen.

Du kannst dir das auch so vorstellen:

Wenn eine Normal viel Rot enthält bedeutet das das dein Objekt stark in X richtung ausgerichtet ist. usw

So funktioniert grob beschrieben eine Normal

Mit anderen worten dein 3D Programm kann bei einer Normalmap Richtungen auslesen.


Es gibt 2 Unterscheidliche Normals die du auch kombinieren kannst:

1.Die Textur Normal im Internet gibt es Programme wie Crazybump die dir eine Textur in eine Normal umrechnen.
Somit bekommt deine Textur einen besseren 3D Effekt.

Hier ein beispiel:
http://paulmartinez86.files.wordpress.com/2011/06/brick-texture-with-normal-map.jpeg

2. Du hast auch die Möglichkeit dein Mesh zu Baken.

Hierbei gibt es verscheidene Workflows.

zb.

Du kannst dir dein Lowpoly Mesh erstellen wo wie du es in eine Spiele Engine wie Unity CryEngine, Unreal Engine laden würdest.
Dein lowpoly Mesh benötigt hierfür eine Normal das ist wichtig sonst kommt nach dem Baken nur Blödsinn raus.

Um dein Modell aufzupolieren erstellst du dir ein Highpoly Objekt wobei hier wie oben schon beschireben wurde deine UV egal ist.

Normalerweise Dupliziert man sein modell nennt es in Hightpoly um und fügt Support Edges dazu. Support Edges sind dazu da um an Kanten festzulegen wie rund sie werden sollen.

Wenn du deine Support edges gesetzt hast, kannst du es Smoothen und dein Hightpoly wird runder und schöner.

Hier ein Beispiel für ein Mesh mit Supportedges und Smooth

http://www.philipk.net/tutorials/materials/metalmatte/metalmatte_01d.jpg

Nach dem Smooth entstehen hier also schönere rundere Kanten.

Auch hier sieht du den Unterschied:
http://th05.deviantart.net/fs71/PRE/i/2012/148/0/7/dumbster_3d___high_vs_low_poly_by_kentinhozdr-d51dmqh.jpg

Das obere Modell hätte zuviele Tris um es in einem Spiel zu verwenden. Das unter hat gerade mal 878 Tris das obere hat über 30000.

Ein Meshbake erzeugt in den meisten fällen also ein schöneres runderes Modell.
Eine Textur Normale erzeugt aus einer Textur mehr 3D Optik.

Du kannst somit auch eine Textur Normal mit der Mesh Normal kombinieren das machst du zb in PS in dem du beide übereinander legst und im Mischmodi ich glaube Multiply auswählst.

Somit ist dein 3D Modell rund und die textur sieht hübsch aus.

Zum Baken sind folgende dinge Wichtig:

1. Dein lowpoly braucht eine Normalmap (Dein Hightpoly nicht unbedinngt)
2.Lowpoly und Hightpoly müssen exact übereinander passen. In 3D Programmen kann man eine Cage einstellen damit wird der Bereich festgelegt wie weit das 3D Programm vom High aufs Lowpoly überträgt.
Diese Cage darf nicht zu hoch sein sonst gibt es Bake Fehler.
Mit übereinander passen bedeutet sie müssen im 3D Programm an der selben Stelle sein. zb gecenter auf Position 0

Hier mal ein Workflow den ich gerne Verwende:

1. Lowpoly Mesh erstellen.
2.Lowpoly Mesh duplizieren und die Kopie Highpoly nennen.
3.Support Edges beim Highpoly einfügen.
3.Highpoly Smoothen
4.Normalmap Baken.
5.Normalmap zur Cavity map umwandel.
6.Mit der UV des Lowpoly Modells die Textur erstellen
7.Cavity map + Textur in PS via Mischmod multiplizieren.
8. Die nun entstandene Textur in eine Ambient Occlusion umwandeln
9.Die Ambient Occlusion + Textur in PS Multiplizieren.
10. Diese Textur in eine Normal umwandeln

11. Diese Normal + Meshbake in Photoshop kombinieren

12.Textur + Normal abspeichern.

Hoffe ich hab nichts vergessen smile


So kannst du das machen

Zur Erklärung:
1.Die Bake Normal wird mit der Textur Normal kombiniert das ist denke ich klar.
2.Mit mancher Software kannst du Cavity map erstellen. Hierbei wird aus der Normal die Kanten Berechnet.
Verbindest du deine Textur mit der Cavity bekommst du schönere Kanten. die dann in der Textur drine stecken.
Das ist eine Cavity:
http://www.bs3d.com/tutorials/cavity/images/cavity_tuto_03.jpg

Du kannst die Cavity auch also Basis für eine Textur nehmen.

Hier ein Beispiel: Modell mit Cavity:

http://jayanam.com/wp-content/uploads/2014/01/3dcoat_stone_result.jpg

Diese Weißen Kanten an der Seite kommt von der Cavity das Modell sieht realistischer aus.

Siehe hier ein Modell ohne Cavity:
http://1.bp.blogspot.com/_YZ_HsQh19d0/THPWds0x1ZI/AAAAAAAAAJQ/XZK78xbQ2fs/s1600/all_low_poly2.jpg

Textur + Cavity werden also Kombiniert um leuchtende Kanten zu bekommen. Hört sich komisch an aber wenn du mal schaust ist das in der Realität echt so.

Dann wird deine Textur noch mit der Ambient Occlusion kombiniert.

Die Ambient Occlusion ist der sog. Kontaktschatten. Wenn ein Objekt auf dem Bodensteht so wirft dieses Objekt Schatten auf den Boden. Ebenso ist es bei einer Textur mit wie zb ein Relief hier wirft das Rilef schatten.

Hier ein beispiel:

http://4.bp.blogspot.com/-ytExZkBQ7gk/T7Uw1ncqsZI/AAAAAAAAAVs/az4R5b9yg0I/s1600/wacko.jpg


Hier ein Modell ohne Cavity und ohne Ambient Occlusion:

http://1.bp.blogspot.com/_YZ_HsQh19d0/THPWds0x1ZI/AAAAAAAAAJQ/XZK78xbQ2fs/s1600/all_low_poly2.jpg

Eine Szene nur mit Ambient Occlusion sieht so aus:

http://2.bp.blogspot.com/-YwLESahNn30/UD6Df0xIAlI/AAAAAAAACC8/ehmSasFJ99U/s1600/Ambient_Occlusion2.png

Das ist nur Kontaktschatten und keine Textur.
Verbindet man also Textur mit Schatten sieht die Textur besser aus.

Oh ist der Text lang geworden fall jemand bis hier her vorgedrungen ist hoffe ich das weiter hilft. smile







 
stoNeSa. 22 Nov. 2014, 10:44 Uhr
eine normalmap hat nur 3 info-kanäle Rot,Grün,Blau!
es gibt auch verschiedene arten der normalmap ausrichtung nach objekt-koordinaten, nach welt,koordinaten, oder tangential

am häufigsten werden tangentiale maps verwendet. bei mesh-deformationen würden die anderen varianten falsche ergebnisse liefern.

tangentiale maps sind nicht nach der kamera ausgerichtet, sondern nach den polygonen auf denen diese gemappt werden
 
mp5gosuSa. 22 Nov. 2014, 11:09 Uhr
Eine Normal map ist keine Textur im dem Sinne das hier ein Bild auf ein objekt gelegt wird.

Auch eine Normalmap ist eine Textur. Nur wird sie anders dargestellt.


Eine Normal ist viel mehr eine Informationskarte wo deine Engine weiter verarbeitet.

Genau so.

Eine Normal besteht im Grunde aus 4 Farben Hellblau, Grün, Rot, und Blau.

Eine Normmalmap hat genau 3 Kanäle. R,G,B. Einige Engines können zusätzlich noch nen Alpha nutzen, ist aber eher selten. Die Implementierung hängt vollständig von der Engine ab. (Stichwort Channel-Swizzling)

Das Hellblau steht für eine zur Kamera ausgerichteten Normale.

Blau gibt die Stärke der Abweichung in Z-Ebene an. R & G sind respektive die anderen Normalenvektoren. Dabei kann man wählen, ob man R für X oder Y nutzt, oder anders rum mit G.Sonderfall Blau: Hier kann es nur in eine Richtung eine Abweichung geben, daher kommt das hellblau zustande.
Blau stellt also die Basis als Orthogonale dar, dabei sollte man im Hinterkopf behalten, dass man hier mit Einheitsvektoren arbeitet.

Eine Normal die also komplett hellblau ist, enthält keine Informationen

Doch. Sie gibt an, dass die Oberfläche ohne Abweichung berechnet wird.

Eine Normale im Allgemeinen ist eine Ausrichtung im 3D Raum. Hellblau ist also immer Orthogonal zur Kamera ausgerichtet wärend Grün,Blau,Rot für die Richtungen XYZ stehen.


Eine Normale ist einfach nur eine Orthogonale, die sich aus mind. einem Vektor ergibt. Dabei ist es unerheblich, ob im 3D-Raum oder woanders. Und nochmal: es gibt nur 3 Kanäle. Auch mit Kameras hat das nichts zu tun. Die "Richtungen" sind Normalenabweichungen der zugrundeliegenden Oberfläche.


Du kannst dir das auch so vorstellen:
Wenn eine Normal viel Rot enthält bedeutet das das dein Objekt stark in X richtung ausgerichtet ist. usw
So funktioniert grob beschrieben eine Normal

Sehr grob.
Kann auch grün sein.


Mit anderen worten dein 3D Programm kann bei einer Normalmap Richtungen auslesen.

Jup.

...


Eine Textur Normale erzeugt aus einer Textur mehr 3D Optik.

Wat?
Eine Normalmap shadet die Oberfläche einfach anders. Ja, klar, es wird plastischer.

Du kannst somit auch eine Textur Normal mit der Mesh Normal kombinieren das machst du zb in PS in dem du beide übereinander legst und im Mischmodi ich glaube Multiply auswählst.

Und somit die Normalen kürzt.
Ist schon ein wenig komplizierter, da ist Farblehre ganz nützlich.


Zum Baken sind folgende dinge Wichtig:

1. Dein lowpoly braucht eine Normalmap (Dein Hightpoly nicht unbedinngt)
2.Lowpoly und Hightpoly müssen exact übereinander passen. In 3D Programmen kann man eine Cage einstellen damit wird der Bereich festgelegt wie weit das 3D Programm vom High aufs Lowpoly überträgt.
Diese Cage darf nicht zu hoch sein sonst gibt es Bake Fehler.
Mit übereinander passen bedeutet sie müssen im 3D Programm an der selben Stelle sein. zb gecenter auf Position 0


Die Oberflächen sollten sich einander so stark annähern, wie es geht, um Fehler zu vermeiden. Es gibt noch ne ganze Reihe andere Dinge zu beachten - bspw. Symmetrien, korrekte UV Shells, die zum Shading passen, und und und.


Hier mal ein Workflow den ich gerne Verwende:

1. Lowpoly Mesh erstellen.
2.Lowpoly Mesh duplizieren und die Kopie Highpoly nennen.
3.Support Edges beim Highpoly einfügen.
3.Highpoly Smoothen
4.Normalmap Baken.
5.Normalmap zur Cavity map umwandel.
6.Mit der UV des Lowpoly Modells die Textur erstellen
7.Cavity map + Textur in PS via Mischmod multiplizieren.
8. Die nun entstandene Textur in eine Ambient Occlusion umwandeln
9.Die Ambient Occlusion + Textur in PS Multiplizieren.
10. Diese Textur in eine Normal umwandeln

11. Diese Normal + Meshbake in Photoshop kombinieren

12.Textur + Normal abspeichern.

Hoffe ich hab nichts vergessen smile


1.) Kann man so machen, ist aber ein nicht sehr produktiver Workflow. Ich habe damals auch so begonnen und schnell gemerkt, dass es mitm Highpoly zuerst deutlich schneller geht. Erst, wenn das Highpoly fertig ist (mit allen Änderungen, Revisionen, etc.) macht es Sinn, sich ans Lowpoly zu wagen.

6.) Unwrap machst Du nicht?

7.) Kann man so machen. Es gibt mehrere Wege, Cavitymaps zu verwenden.

8.) Warum nicht AO vorher backen?

10.)? AO in eine Normalmap drücken?????????

Eigentlich musst Du nicht mehr tun, als das hier zu lesen: http://oldwiki.polycount.com/NormalMap

edit: Mein Beitrag zielt NUR auf Tangentspace-Normalmaps ab.
 
VisionOfVictorSa. 22 Nov. 2014, 16:01 Uhr
Super. Danke auch für deine Antwort.
Werde ich mir sicherlich alles noch durchkauen.
Da hiermit auf Deutsch somit auch besser ;o)

Danke allen nochmals.
 
SleepySa. 22 Nov. 2014, 19:58 Uhr
Eine Normalmap shadet die Oberfläche einfach anders. Ja, klar, es wird plastischer.

Nein ich denke nicht, dass die Normalmap der Oberfläche schadet.


Dein Ernst lol ?

Da stand shadet nicht schadet.
 
jonnydjangoSa. 22 Nov. 2014, 20:24 Uhr
Ich find die Ausführung gut. Danke für die ausführliche Antwort Sleepy...
 
 

 


 
 
© 3D-Ring - deutsche 3D Software Community, Archiv 2001 - 2006