Jump to content
Unity Insider Forum

Baked Lighting auf größeres CombinedMesh "schrecklich"


3ncrypt0

Recommended Posts

Guten Morgen zusammen,

ich habe gestern in einer Map mehrere Meshes zu einem zusammengeführt und dann meine Baked Lighting gestartet - das Ergebnis ist aber alles andere als gut. Auf anderen Maps mit zusammengeführten Meshes hatte ich keine Probleme. 

Wenn ich das Baked Lighting auf das/die originalen Meshes ausführe, sieht alles gut aus. 

bakefehler.thumb.png.93bbae6331292dd5e8ec2fd78e265377.png

Indirect Resolution steht nun zwar auf 0.02 und Lightmap Resolution auf 30, aber nur weil ich das backen gestern 4 mal ausgeführt habe und es schon eine Weile dauert. Ich bekomme auch das gleiche Ergebnis mit Indirect Resolution 2 und Lightmap Resolution 40.

Auch die Speichergröße der Lightmaps finde ich heftig. Auf normaler Auflösung lag ich bei ca. 80MB (was für mobile schon heftig ist, wie ich finde).

Jemand eine Idee, was das sein könnte? Hatte zwar schon viele Probleme mit dem backen, aber noch nie sowas!

 

Danke und VG

Jochen

 

EDIT:

Hier mal ein Screenshot in der Baked Lightmap View

bakefehler2.thumb.png.7c552fec63c85ad75163c90dc661af71.png

Hier ein Screenshot, wie es bei gleicher Auflösung auf den original Meshes aussieht.

bakefehler-alles-richtig.thumb.png.025ab3897fa58b8f70e609513aadaf95.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist doch auch völlig klar die Lightmaps können ja nur eine bestimmte auflösung haben wenn unity nun ein sehr großes mesh auf eine Lightmap proizieren will hat es dafür nicht sehr viel platz heißt es kann weniger pixel für die einzelnen mesh teile aufwenden. Heißt die qualität des lichtes leidet und da jeder Pixel der Lightmap informationen enthält lässt es sich auch schlecht komprimieren und frisst ein haufen speicher.

 

Das ganze lässt sich in der UE4 besser sehen muss ich sagen da man sich dort die generierte lightmap anschauen kann da sieht man dann auch ob es z.B überlagerungen gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

das kann ich so nicht ganz nachvollziehen, da es auf anderen Maps in ähnlicher Größe auch funktioniert hat. Es werden ja je nach Bedarf mehrere Lightmaps angelegt. In dem ersten Screenshot sind es z.B. 18 Stück. Zudem habe ich gerade eben einfach nur einen Turm als zusammengeführtes Mesh genommen und dann den Bake Prozess gestartet mit dem gleichen Ergebnis!

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb malzbie:

@3ncrypt0Hast du bei dem zusammengefühten Mesh  in den Importeinstellungen mal den Haken "Generate Lightmap UVs" gesetzt?
Ich hatte mich selber erst letztens Dumm und Dämlich gesucht. :)

lightmapUV.JPG.c6192d05f9fb0546512def667500b8ae.JPG

Hi @malzbie,

ich verwende zum zusammenführen der Meshes hier ein Plugin.Auf dem original Mesh ist die Option allerdings gesetzt.

 

VG

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, genau davon gehe ich gerade auch mal aus - das Mesh ist jetzt auch nicht das sauberste, war halt ein Asset aus dem Store -_-

Dann werde ich wohl heute Abend mal mein 3D Programm anwerfen und die Objekte selber modeln. (Wenn das Texturieren nicht immer so lange dauern würde...und dabei setze ich schon Quixel ein).

 

Danke und VG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst wohl die UV2 Map von dem kombinierten Mesh im Editor mit folgender Editorklasse erzeugen lassen:
https://docs.unity3d.com/ScriptReference/Unwrapping.GenerateSecondaryUVSet.html

Hier ist ein Codebeispiel, wie man es verwenden kann (CombineChildrenAdvanced.cs):
https://forum.unity3d.com/threads/generatesecondaryuvset-destroying-mesh.159693/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen zusammen,

@Zer0Cool Die Idee ist nicht schlecht, allerdings hat das auch nichts gebracht - Ich habe die Idee mit den Models nun erst einmal verworfen und werde die wohl nocheinmal komplett neu moddeln.

Allerdings stehe ich gerade vor einem anderen kleinem Problem, welches hier auch reinpasst (bevor ich einen neuen Thread aufmache).

Ich habe mein Terrain zu einem Mesh gewandelt für bessere Performance auf dem mobil Gerät. Allerdings, kann ich meine Scene nun nicht mehr baken? Er hängt bei 5/11 Clustering | 1 Job. Auch wenn ich nur dieses eine Mesh aktiviert habe. Das Terrain hat die Größe 500x500. Ich hänge mal einen Screen an. Ich habe auch schon Lightmap Size vergrößert und  Scale in Lightmap auch schon auf 0.01. 

Ich kann zwar das Mesh in mehrere Teile generieren, allerdings erhalte ich dann so doofe Schatten an manchen Stellen. Oder ist das die einzige Möglichkeit, da das Terrain Mesh zu groß ist?

terrain_mesh_bake.thumb.png.a7b0238b011dd70d20e04f5cc059f359.png

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke er hat einfach nur zu tun und irgendwann wird er über die 5/11 hinweg gehen.
Stell doch mal testweise die Resolution von 20 runter auf 4. Nur um zu sehen, ob er es fertig bekommt, oder ob evtl. ein Fehler im Mesh ist, der den Vorgang so stark verzögert.
An der Größe des Meshes sollte es echt nicht liegen. Ich sehe da jedenfalls kein Problem.
Aber natürlich hat das Mesh echt Optimierungspotential, wenn ich da die ganzen Polys auf der Ebene sehe. Grob geschätzt kannst du da 4000 Polys einsparen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es scheint tatsächlich an der Größe zu liegen :huh:

https://forum.unity3d.com/threads/light-transport-problem-with-large-objects.310405/

Ich habe das Mesh erst einmal in 5x5 aufgeteilt, den Meshes in den Lightmap Settings Low Parameter zugewiesen und Scale in Lightmap auf 0.05 und es ging relativ schnell (15min ca.)

Das Ergebnis gefiel mir natürlich nicht (ist auch erst eine Testscene - will aber wissen was da geht). Nun habe ich das Mesh in 12x12 aufgeteilt und lasse es ohne Veränderung an den Settings laufen. Er ist auch direkt durch das Clustering so gelaufen. Natürlich habe ich nun 144 Objekte nur als Terrain. Ob das einen Vorteil bringt bleibt abzuwarten. Ich könnte evt. mit Occlusion Culling versuchen noch etwas rauszuholen. Aber die DC steigen trotzdem.

Mal abwarten, was dabei gleich rauskommt...

Und ja, das Mesh ist wirklich etwas heftig - habe aber ein Plugin verwendet :rolleyes: 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte auch schon einmal ein größeres Mesh und das Baken ging hier auch in den "Endlosmodus" über. Es scheint hier noch einen Fehler in Unity zu geben. Das Einzige was geholfen hatte, war das Mesh zu runter zu skalieren (1:10 oder 1:5) und dann zu Baken. Beim Skalieren in Unity muss man allerdings aufpassen, auch über den Inspektor ging das Skalieren bei mir schief (das Mesh wurde dabei verzerrt), daher hatte ich damals ein Skript in Unity zum Skalieren verwendet. Wenn man das Mesh runterskaliert, dann ist das Baken kein Problem mehr, man kann die Auflösung des Bakens wieder erhöhen, so daß das Ergebnis dann insgesamt wieder passt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

@Zer0Cool Das habe ich gerade eben mal ausprobiert. Ich habe alle Objekte in ein EmptyGO gepackt, dieses dann auf 0.1 runterskaliert und den Bake Prozess angeworfen. Nach 30sec war er fertig. Dann habe ich Lightmap Resolution auf 40 gesetzt und es dauerte insgesamt ca. 3min. Dann habe ich das Objekt wieder auf 1 skaliert, jedoch ist das Ergebnis nicht sooo hübsch. Ich taste mich gerade einmal ran und erhöhe immer weiter die Lightmap Resolution. Auch interessant ist, dass ich nun anstatt 20MB Lightmaps nur noch 2,7MB habe. Sobald ich z.B. die Skalierung auf 0.15 setze, geht garnichts mehr - dann dauert es 5 mal so lange. 

Hier mal ein vergleich:

scale_baked.thumb.png.3c2b302b131f910777c147950dcfeeea.png

Hier jetzt einmal das Ergebnis mit einer Lightmap Resolution von 200. Bakezeit ca. 7-8min. Lightmapgröße 5,3MB. Allerdings finde ich die "Dreiecke" an den Balken komisch. Da dürfte eigentlich kein Schatten sein, da aus der Richtung das Licht kommt. Scheint so, als würde dass von den inneren Balken gespiegelt werden. Kann auch sein, dass ich da einen UVW Fehler eingebaut habe....

baked_200.thumb.png.eb6c2bfb6ca492a5706e1a91fd300a0e.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte (1:10 runterskaliert):
- Resolution auf 40
- Padding 3
- Compressed aus (kann Artefakte verursachen)
- Ambient Occlusion ein ( 1 2 2)
- Final gather an (1024 Denosing an) (verbessert Qualität)
- Atlas Size 2048
- Directional (verbessert Qualität)
- Indirect 1
- Boost 1

und dann noch auf dem Object selber:
- Scale in Lightmap: 2

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...