Jump to content
Unity Insider Forum

Displacement Map erzeugen und einsetzen


Recommended Posts

Hihio,

 

ich hätte mal eine Frage zur Displacement Map.

 

Ich habe diese Displacementmap gestern das erste mal in ZBrush kennen gelernt und bin echt extrem positiv überrascht von dem Ergebnis.

Es scheint eine Art Highmap zu sein, so ähnlich wie die Normal Map jedoch irgendwie anders eher wie ein Mix aus AO und Normal Map...kannte das Teil wie gesagt bis gestern nicht.

 

Da ich ja nun aber vorhabe mein Model zu teilen um nur eine Hälfte des Models für die UV Map etc zu verwenden, kann ich leider diese Displacement Map von ZBrush so nicht verwenden.

 

Mein Plan ist daher diese Map mit XNormal herzustellen und dann in 3DS Max mal zuzuweisen.

 

Einfacher gesagt als getan, ich habe ein wenig gegooglet und erst hieß es die Heighmap von XNormal wäre das was ich suche, diese könne man jedoch nicht so einfach verwenden.

 

Danach habe ich ein Video gefunden wo es hieß das die Direction Map von XNormal das zu sein scheint was ich suche, das Video wo diese Map dann auch in Maya verwendet wurde sah auch so ziemlich danach aus als wäre es die richtige Map.

 

Nun frage ich mich aber 2 Sachen und hoffe jemand kann etwas Licht ins Dunkel bringen.

 

1) Ist die Directionmap das was ich suche und kann ich die einfach baken wie ich es gewohnt bin in XNormal ? (Also Lowpoly wählen und HighPoly und dann einfach baken ??)

 

2) Wie setze ich diese Map dann in 3DS Max und später unter Unity ein ??

 

Über Hilfe wäre ich sehr dankbar.

 

Gruss Just

Link zu diesem Kommentar
Auf anderen Seiten teilen

Als die Displacement ist wie du schon sagtest im weitestens sinne ähnlich wie die Bump oder die Normal. Bei der Bump und Normal wird geometrie gefakt, ist also nicht wirklich echt.

 

Mit dem Tessellation Shader kann man Bumbs in Unity verwenden dabei wird die Geometrie sofern sie in den Sichtbereich kommt dargestellt bzw die Geometrie erst dann erstellt.

 

Ich hab schon ein paar Tests Displacement VS Normals gemacht, man kann eine Textur in eine Displacement umrechnen. Oder auch die Displacement aus einem Objekt Baken.

Problemematisch finde ich das Handling mit displacement maps:

Weiß sind ja die Tiefen und Schwarz sind ja die hohen Punkte. Wandelt man nun eine Textur in eine Displacementmap um, sind die Tieferen Punkte nicht zwangsweise Weiß sondern vielleicht Grau. In der Engine berechnet nun Unity die Höhe dann von Grau zu Weiß, mit anderen Worten dein Objekt ist wird Höher dargstellt als es eigenlich sein sollte. (Ich hoffe du verstehst das Problem und wie ich das meine :)

Vor allem wenn du eine Displacement für den Boden erstellt wird dann dein Boden also schon weiter angehoben. und überdeckt eventuell den Übergang zu den Hauswänden. Dieses Problem kannst du minimieren in dem du in PS bischen mit den Levels rumspielst, und alles was Grau ist zu Weiß machst und was Schwarz ist evetuell etwas Heller. So kannst du die Höhe der Displacement Steuern.

 

Wenn man im 3D Programm in den Shader eine Textur + Displacement macht hat man zudem gute Einstellungsmöglichkeiten und kann die Displacement gut steuern. Bakt man das Highpoly dann auf das Lowpoly zb als Normal oder auch als Displacement hat man unter mehr Kontrolle , da man wie gesagt die Displacement besser einstellen kann.

Dieser Workflow ist deswegen meiner Meinung nach besser als einfach eine Textur in eine Normal umwandeln.

 

Ein weiteres Problem ist das die Tessellation im in die Normal Richtung der Faces Tesselliert wird. Stell dir vor du machst eine Displacement auf einen Cube drauf, nun wird das Face oben in Richtung Y Tesselliert und die anderen seiten dementsprechend in Z bzw X Richtung. An den Ecken hast du nun aber das Problem das hier keine Tessellierung stattfindet.

 

Das sind mal Grob meine Probleme auf die ich gestoßen bin für alles gibts natürlich Lösungen.

 

Hier mal noch ein nettes Bild: http://upload.wikime...acmentRight.png

 

Wobei man sowas baken kann und in Unity verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Displacement Map wird in ZBrush automatisch aus Low und HighPoly berechnet, ich muss mir also keine Gedanken machen das da was nicht passen könnte.

 

Der Fakt das aber aus der Displacement Map wirkliche Geometrie erzeugt wird wie Smash sagt, macht das ganze wieder unbrauchbar.

Man versucht ja mit der Normal gerade die Geometrie zu verringern... das passiert folglich bei der Displacement Map nicht .. daher ist sie für meine Zwecke unbrauchbar.

 

Finde aber den Effekt toll wenn ich eine Displacement Map vom Modell erzeuge und sie auf dieses Modell (HighPoly) anwende. Schlagartig wird mein Dämon dämonischer weil seine Muskeln zulegen und alles andere was sonst noch so heraus stach.

 

Lustiger Effekt. jaja.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Diese ganzen Maps sind ja im grunde nichts anderes als Informationskarten, Eine Normal enthält Normal Informationen wie welche Neigung hat ein Face usw.

Wenn man sich diese Normal anschaut erkennt man die unterschiedlichen Farben:

http://read.pudn.com/downloads113/sourcecode/windows/other/471455/Normal%20mapping/test_normal_map__.jpg

 

Nimmt man nun zb den Grünen bereich kann man sagen das diese Faces in eine Bestimmte Richtung ausgerichtet sind, die unterscheidlichen Grünvarianten sind mit dem Auge kaum erkennbar. Rot bedeutet in dem Fall eine Andere Ausrichtung zwischen grün und Rot gibt es also auch einen kaum sichtbaren Farbübergang.

Man kann also auch sagen es ist eine Informationskarte wie rum welches Face ausgerichtet ist.

 

Bei einer Bump ist dies ähnlich nur das eine Bump nicht mit Face ausrichtungen (den Normalen arbeitet sondern mit den Höhen unterschiede. Weiß sind Tiefe Bereiche und Schwarz sind hohe beriche.

Eine Displacement ist im grunde fast das selbe nur das eine Displacement diese Informationen in Geometrie umwandelt. Aber eine Bump könnte man genau so gut als Displacement verwenden. Rein Technisch gesehen wäre das kein Problem. Aber Praktisch ist dies weniger sinnvoll.

 

Stell dir dein Modell in Zbrush vor du bist fertig mit Modellieren und willst nun schupen mit einer Schable anbringen. Somit ist dein Nacktes Modell für eine Displacement komplett weiß (Also Tief) deine Schupen sollen herrausstechen sind also für die Displacment Punkte die sich irgend wo zwischen Grau und schwarz bewegen. Wobei schwarz dann schon extem herrausstechen soll, wie stark dies Interpretiert werden soll, kannst du in der Engine bzw im 3D Programm festlegen. Somit könnte Schwarz einem Extrude von 0.01 aber auch einem Extrude von 1 entsprechen.

 

hier siehst du Arbeiten wie du Zbrush und eine Displacement eventuell in Unity verwenden könntest:

http://nextgengameart.com/wp-content/uploads/2013/07/pillar.jpg

 

Die Displacement baken und mit dem Tessellation Shader in Unity verwenden.

 

Für einen Charakter sehe ich wie du schon sagtest nicht soviel Sinn. Was du machen könntest: Wäre eine Displacement vom deinem Charakter herrausbaken und in 3D Max mit Textur und Displacement wieder auf deinen Charakter legen. Somit würde die die Displacement als Textur wieder in Geometrie umgeandelt werden. Nun könntest du diese Geometrie dann wieder als Normal Baken.

 

Was dir das jetzt bringt ? Und warum du nicht gleich die Geometrie als FBX nach 3Dmax Importieren sollst ?

Mit der Displacement kannst du einstellen wie stark sie wirken soll, also wie stark zb Haut unebenenheiten sein sollen. Du kannst also mit der Displacement deine Oberflächeneigenschaft nochmal sehr gut Steuern, dies als Normal Baken und in Unity testen und dann gegenfalls nochmal die Displacement ändern.

 

Lustiger Effekt find ich Displacement übrigens nicht weil Displacement in der Zukunft eine immer grössere rolle spielen werden, der Tessellation Shader ist hierbei nur ein Anfang. Bin gespannt ob sie den in Unity 5 noch verbessert haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...