Lightmap?

  • Hallöchen mal wieder^^,
    heute mit der Frage, was genau mir eine Lightmap bringt.
    Das gund Prinzip mit der Performance, Schatten Berechnung ect habe ich bereits verstanden...
    Jedoch mal zu folgendem Szenario:


    Ich habe in Blender eine Kiste, die einen Schatten auf dem Boden wirft. Diesen Schatten Speicher ich als eine Lightmap ab.
    So...
    Jetzt exportiere ich meine Kiste in die Un4. Was hat mir jetzt der Schatten darunter genützt? Dieser muss jetzt so oder so komplett neu in der engine gerendert werden.


    Szenario zwei:


    Ein Objekt wirft einen Schatten auf meine Kiste. Dieser wird als Lightmap gespeichert.
    - Kiste wird in die Un4 Exportiert.
    Nun muss ja das Objekt, was eben einen Schatten geworfen hat (auf die Kiste) genau an der selben Stelle stehen.


    Nun Frage ich mich was die Lightmap Geschichte bringt, wenn sowieso alles in der engine berechnet wird.
    Sobald ich auf BuildLights gehe, müsste ja jeder Schatten fest berechnet werden (daher warum Lightmap)


    Hoffe man versteht meine Frage hier einigermaßen ^^
    Mfg

    • Offizieller Beitrag

    Es gibt zwei Arten von Schatten Berechnungen:


    1.Bake Schatten: Beim Bake Schatten wird der Schatten quasi vorgerendert und in eine Map geschrieben, so das dies ingame nicht mehr passieren kann. Die Komplette Berechnung findet nicht im Gameplay statt.
    2.Dynamischer Schatten: Beim Dynamischen Schatten wird das Licht und der Schatten in Echtzeit während des Gamemodus berechnet. Das kostet natürlich Performance.

    Ich habe in Blender eine Kiste, die einen Schatten auf dem Boden wirft. Diesen Schatten Speicher ich als eine Lightmap ab.
    So...

    Gar nicht weil du eine Lightmap nicht in Blender speichern kannst. DU kannst dort nur den 2. UV Channel erstellen und die Unreal speichert dann die Lightmap so wie du es in Blender vorgegeben hast.



    Jetzt exportiere ich meine Kiste in die Un4. Was hat mir jetzt der Schatten darunter genützt? Dieser muss jetzt so oder so komplett neu in der engine gerendert werden.

    Objekte die Statisch sind (Static) die sich nicht bewegen sollte man Bake weil sich der Schatten hier niemals verändert. Alle Objekte die sich bewegen wie beispielsweise ein Charakter, brauchen bewegliches Licht. Man kann natürlich auch beides Kombinieren. Es ist nunmal viel performanter den Schatten zu Baken den dies geschieht quasi vor dem kompilieren und muss nicht ingame berechnet werden.

    Nun Frage ich mich was die Lightmap Geschichte bringt, wenn sowieso alles in der engine berechnet wird.

    Es wird so oder so alles in der Engine berechnet. Der unterschied zwischen Light Build oder Dyamisches Licht ist, das Dynamsiches Light in Echtzeit (frist mehr Performance) berechnet wird. Und gebaketes Licht vor dem Kompilieren. Hier wird das Schatten als Bild gepeichert und über deine Szene gelegt. Bei einem großen Spiel kann der Light Build dann aber auch mal mehre Stunden oder Tage dauert.

  • Lightmaps werden in der Regel auch erst in der Engine berechnet und zwar dann wenn du die im Editor zusammengebaute Szene berechnen lässt.


    In Blender musst du maximal die Grundlage also die Lightmap UV dafür erstellen.


    Bei vielen Modellen ist es sinnvoll das die Textur UVs und Lightmap UVs ein eigenes Layout bekommen, da jeweils andere Aspekte und Regeln wichtig sind.
    Auf der Lightmap dürfen sich z.B. keine UVs überlappen, bei der Textur ist das unter Umständen sogar erwünscht.


    Natürlich macht es bei der UE4 keinen Sinn die Lightmap-Texturen schon in Blender zu rendern.
    Viele ältere Engines (z.B. die von Halo 1) haben jedoch nur einen Level Editor zum Platzieren von interaktiven Objekten wie Player Spawns, AI-Navigation, Pickups usw. benutzt.
    Da wurden dann mitunter ganze Level oder Levelabschnitte im 3D Programm gebaut und jegliche statische Beleuchtung gleich mit als seperate Textur rausgerendert.


    In Unity ist ein ähnlicher Workflow auch heutzutage noch möglich, auch wenn die Lichtberechnung normalerweise ebenfalls über Editorinterne Lightmap baker erfolgt.


    Ein ganz klarer Vorteil der editorinternen Berechnung ist die Flexibilität und das die Lightmaps der einzelnen Objekte in einer map automatisch auf einer (oder mehreren) großen Level-Lightmap(s) gepackt werden.
    Du erstellst die Lightmap für deine Kiste also nur ein einziges mal und egal wie oft du die Kiste in deinem Level platzierst, die Engine wird automatisch für jede davon eine Kopie der Lightmap UVs auf die endgültige Level Lightmap packen.