Rendern eines Punktlicht 6 Scheinwerfer?
-
19-09-2019 - |
Frage
Ich versuche, 6 Spotlights zu machen einen Punkt Licht für einen Schatten-Mapping-Algorithmus zu erstellen.
Ich bin mir nicht sicher, ob ich das richtig mache, habe ich mehr oder weniger folgte den Anweisungen
Weiße Flächen sind Teile, die durch einen der 6 Schatten Karten abgedeckt sind, sind die dunkleren Bereiche diejenigen, die von den Shadowmaps nicht abgedeckt sind. Offensichtlich habe ich kein Problem mit den Teekannen und Boxen, die ihren Schatten auf die Szene projiziert, aber wie Sie die 6 Schatten Karten haben blinde Flecken zu sehen. Ist dies, wie ein Würfel geschnitten Schattenkarte soll aussehen? Es sieht nicht wie ein ShadowMap von einer Punktlichtquelle ...
Lösung
Eigentlich können Sie Ihre sechs Punkte einstellen Kegel haben, die sich perfekt Gesicht Ihres Cubemap füllen. Sie können dies erreichen, indem jeder Kegel der Öffnung Einstellen einen Umkreis um jedes Cubemap Gesicht zu schaffen. In diesem Fall müssen Sie über überlappende keine Sorge, da die würde überlappende Teile sind aus dem Bereich Gesichter.
Mit anderen Worten:. Justiert die Projektionsmatrix‘Lichter FOV, so wird es nicht die Sichtstumpfs, die den Lichtkegel beinhaltet, ist aber der Kegel der Sichtstumpfs umfasst
Die eine ganze Implementierung dieses Papier .
Andere Tipps
Was Sie sehen, hier sind ein Kreis und zwei Hyperbeln - Kegelschnitt - genau das Ergebnis, das Sie vielleicht erwarten, wenn Sie einen doppelseitigen Kegel nehmen und geschnitten mit einer Ebene
.Diese Mathematik kann von der Situation entfernt zu sein scheint, aber es erklärt Ihr Problem. Ein Scheinwerfer erzeugt einen Lichtkegel, und Sie können einen festen Platz mit einem Bündel von Kegeln aus dem gleichen Punkt kommen nicht ganz füllen. (Ich würde vorschlagen, ein paar Stücke Papier aufrollen und Taping sie an den Stellen zusammen, um es auszuprobieren.)
Wie Sie jedoch weit vom Ursprung der simulierten-Punkt-Quelle erhalten, konvergieren die Kegel auf ihr assymptotes, und es gibt einen verschwindend schmalen Spalt im Licht.
Eine Möglichkeit, dies zu lösen ist, den Fokus der Kegel zu ändern, so dass sie leicht überlappen - dies Bereiche zu schaffen, die überbelichtet sind, aber die lange Aussetzung wird nur offensichtlich geworden, wenn Sie weiter weg. Solange alle Ihrer Objekte in der Nähe von der Punktlichtquelle sind, könnte dies nicht viel von einem Problem.
Eine andere Möglichkeit ist, den Fokus der alle Lichter viel näher an ihre Quellen zu bewegen. Auf diese Weise, sie zu ihrem assymptotes schneller konvergieren würden.