Ich bin gespannt, wie ich mit vielen Lichtern in einer Szene umgehen soll. Angesichts einer sehr großen Karte in einem Rollenspiel, mit Dungeons (mit Lichtern) usw. Ich weiß über verzögerte Beleuchtung Bescheid, aber das beantwortet nur, wie man viele Lichter rendert. Aber meine Frage ist mehr: Wie man nicht viele Lichter rendert. Es ist natürlich wünschenswert, nur die Lichter zu rendern, die die Szene beeinflussen, aber ich kenne keine Technik / keinen Algorithmus, um dies zu archivieren. Niemand will oder kann 500 Punktlichter rendern, nur weil es irgendwo auf der Karte ist. Man kann aber nicht einfach eine gerade Linie vom Licht zum Spieler nehmen und testen, ob etwas dazwischen liegt. Die Entfernung scheint auch kein guter Indikator zu sein. (Sonnenlicht?)
tl; dr: Wie kann ich herausfinden, welche Lichter die Szene beeinflussen, um sie nur zu rendern?
Antworten:
Noch einfacher als das Begrenzen von Volumes;
Weisen Sie jedem Licht einen Radius zu. Überprüfen Sie beim Rendern Ihrer Szene einfach, ob der Abstand zwischen Ihren Szenenobjekten und jedem Licht kleiner als der Radius des Lichts ist. Wenn ja, verwenden Sie das Licht, andernfalls überspringen Sie es.
Nur ein Bruchteil komplizierter, je nachdem, wie wichtig Leistung ist:
Damit können Sie auch eine Art umfassende Phasenprüfung durchführen. Definieren Sie einfach ein räumliches Raster, in dem Ziehpunkte für Ihre Lichter auf Rasterzellenbasis gespeichert werden, und führen Sie dann nur die Entfernungsprüfung für Lichter durch, die sich in den Zellen innerhalb des maximalen Radius Ihrer Szenenobjekte befinden.
quelle
Der einfachste Weg, den ich mir vorstellen kann (seien wir ehrlich, der einzige Weg, an den ich gedacht habe), besteht darin, jedem Licht ein begrenzendes Volumen zu geben . Wenn sich das Begrenzungsvolumen mit dem Sichtstumpf (oder einem Begrenzungsvolumen des Sichtstumpfs) schneidet, wenden Sie das Licht an.
Es kann immer noch Lichter geben, die angewendet werden, obwohl sie keine sichtbaren Objekte beeinflussen, aber es ist einfach und schnell. Eine intelligente Anordnung Ihres Szenendiagramms kann bedeuten, dass nur wenige Kreuzungsprüfungen die meisten Ihrer Lichter aussortieren (genau wie beim Objekt-Keulen).
So etwas wie die Sonne könnte kein Begrenzungsvolumen haben (um anzuzeigen, dass es immer angewendet werden sollte).
quelle