Was bedeutet es, Lichter zu backen?

36

Was bedeutet es, eine Lightmap zu backen? Ich habe dies in Unity3d gehört und wieder dieses LightUp-Plugin für ein Sketchup gefunden, das eine Lightmap backt.

Nach dem, was ich beobachte, verleiht die gebackene Lichtkarte dem 3D-Objekt ein viel realistischeres Gefühl. Soll das Backen von Licht auf ein Objekt den CG-Animations-Look verleihen, den Sie bei vorgerenderten Animationen sehen?

Kim Jong Woo
quelle
Außerdem, wann immer Sie etwas backen, egal ob Physik, Beleuchtung oder irgendetwas anderes. Es bedeutet, dass Sie etwas eingerichtet haben, dessen Rendern / Verarbeiten in Echtzeit viel Zeit in Anspruch nimmt, oder Sie möchten, dass es jedes Mal auf die gleiche Weise wiedergegeben wird, sodass Sie es nur einmal ausführen und die Ergebnisse für die spätere Verwendung speichern Alle Berechnungen werden durchgeführt. Die Anzeige des Gebackenen erfolgt schnell und ist bei allen Durchspielen immer gleich.
AttackingHobo
AttackingHobo, das ist eine großartige Möglichkeit, es auszudrücken. Ich verstehe es jetzt. Aber neugierig, wie würde Physik gebacken werden? Produziert Luxrender fotorealistische Renderings, weil sie die Physik des Lichts berechnen können?
Kim Jong Woo
1
Physik kann für komplexe Szenen gebacken werden, indem alle Objektpositionen und -rotationen usw. für jeden Zeitschritt einmal simuliert und gespeichert werden. Anstatt dann alle Werte live neu zu berechnen, werden sie nur aus den gespeicherten Werten wiedergegeben.
AttackingHobo

Antworten:

53

Wenn Sie ein statisches (nicht bewegtes) Licht in einem Spiel haben, haben Sie zwei Möglichkeiten, dieses Licht zu rendern. Sie könnten es wie ein dynamisches Licht rendern. Das heißt, führen Sie es durch die Shader-Pipeline, die seine Auswirkung auf alles um es herum, jedes Bild, auf dem Weg zum Bildschirm berechnet. Das ist natürlich ziemlich teuer. Oder ein Redakteur kann das Licht in die Szene einbrennen.

Was ich immer über Backen nachgedacht habe, war vielleicht eine einfachere Version: Im Grunde genommen nimmt der Editor nur die Texturen von allem, was das Licht umgibt, und berechnet die Wirkung des Lichts auf diese Texturen (hellt sie auf, färbt sie vielleicht, Schatten usw.). und speichert sie als zu verwendende Ersatztexturen. So sehen alle Texturen um das "Licht" so aus, als wären sie beleuchtet, aber zur Laufzeit gibt es vom Standpunkt der Berechnung aus eigentlich kein Licht. es ist im Wesentlichen eine optische Täuschung.

Die Einheit scheint jedoch eine Lichtkarte zu erzeugen . Dies ähnelt der obigen Vorstellung, aber die Backbeleuchtung wird separat beibehalten, anstatt die zugrunde liegende Textur zu ändern, und ich gehe davon aus, dass ein Shader die beiden zur Laufzeit zusammenführt. Dies hätte den Vorteil, dass der Vorteil gekachelter Texturen (dh geringer Speicherverbrauch) erhalten bleibt, da das Licht nicht direkt in sie eingebrannt würde und sie gekachelt bleiben könnten, und der Shader wäre sehr leicht, insbesondere im Vergleich zur Behandlung der Leicht wie dynamisch.

Ein Licht muss offensichtlich statisch sein, damit dies funktioniert. Das heißt, Sie können es während des Spiels nicht bewegen, da das Licht in die Texturen eingebrannt wurde. Dynamische Objekte im Raum (wie der Spielercharakter) werden nicht beleuchtet, daher muss es eine Ausnahme geben, bei der das Licht für dynamische Objekte gerendert wird, jedoch nicht (erneut) gerendert wird die statische Kulisse.

Ricket
quelle
12
Da die Beleuchtung in den meisten Fällen weich ist, kann die Lightmap in einer niedrigeren Auflösung als die übrigen Texturen gespeichert werden. Sie sieht immer noch gut aus, wird jedoch schneller gerendert und benötigt weniger Speicher.
AttackingHobo
+1, das ist eine wirklich schöne und ausführliche Antwort, danke. :)
Xeo