Registriert: Di Aug 09, 2011 07:33 Beiträge: 163
Programmiersprache: C/C++
Hey,
Habe ein Problem mit den Lichtquellen (siehe Bild). Die Lichtquelle ist weit entfernt und es wird an einigen Stellen Licht angezeigt wo eig. garkeins sein dürfte. Kann man dieses Problem irgendwie lösen?
Außerdem wüsste ich gerne, ob man das Licht irgendwie begrenzen kann, also das es z.B. max. 10 Meter weit scheint.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Warum dürfte denn dort kein Licht sein? Wenn du Schatten willst, musst du diese extra implementieren. OpenGL prüft von alleine nicht, ob schon etwas zwischen der Lichtquelle und dem beleuchtetem Objekt ist (wie sollte das auch gehen, wenn man bedenkt, dass der dazwischen liegende Gegenstand u.U. noch gar nicht gerendert wurde?).
Eine maximale Reichweite kann man afaik nicht einstellen, wohl aber die Abschwächung (über die ATTENUATION-Parameter). Wenn das Licht so weit weg ist, dass es durch die Abschwächung quasi keinen Einfluss auf ein Objekt nimmt, schalte das Licht einfach vor dem Rendern ab.
Registriert: Di Aug 09, 2011 07:33 Beiträge: 163
Programmiersprache: C/C++
OpenGL weiss ja scheinbar auch, dass auf der Rückseite von der Mauer kein Licht sein kann, dann hätte das ja auch für den anderen Teil zählen können. Kann mir gerade auch nicht vorstellen wie ich das großen einbinden soll... bei den wenigigen Zeilen Code von einer Lichtquelle kann ich ja nicht sehr viel einfluss nehmen... naja mal schauen
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
OpenGL berechnet das Punktprodukt aus der Vertexnormalen und dem Verbindungsverktor zur Lichtquelle. Kommt dabei etwas > 0 heraus, zeigt der Normalenvektor in Richtung der Lichtquelle. Daraus folgert OpenGL, dass die Seite dem Licht zugewandt ist und beleuchtet werden muss. Flächen, die dem Licht laut dieser Berechnung abgewandt sind, werden nicht beleuchtet. Ich hoffe doch, du setzt die Normalen richtig?
Die Berechnung von Schatten ist ein eher fortgeschrittenes Thema. Es gibt verschiedene Methoden (Statisches & dynamisches Shadowmapping, Stencilschatten und noch mehr), viele davon mit Shadern. Wenn man sowas implementiert, arbeitet man eigentlich auch nicht mehr mit den von OpenGL bereitgestellten Beleuchtungsmethoden... und das werden dann auch ein paar mehr Zeilen Code.
Registriert: Di Aug 09, 2011 07:33 Beiträge: 163
Programmiersprache: C/C++
Die Normalen sollten - soweit ich das einschätzen kann - richtig gesetzt werden.
Welche Methode würdest du denn bei Schatten empfehlen? Und nun bitte nicht die wählen welche am schönsten ist sondern vllt. erstmal eine was nicht so kompliziert ist Tendiere da ja zu den Stencilschatten.
Stencilschatten kommen auch ohne Shader aus. Falls du da in die Richtung noch nichts gemacht hast, währe das auf jeden Fall die schnellste Variante. Bei Shadowmaps kommt man um Shader wohl nicht herum, außerdem gibt es da zig Varianten, die alle Vor- und Nachteile haben. Bis man da ein ordentliches Ergebnis ohne irgendwelche Artefakte hat, vergeht schon einige Zeit.
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Ich denke, wenn man noch nie was mit Shadern gemacht hat, sind Stencilschatten vermutlich wirklich das einfachste. Allerdings ist man dann soweit ich weiß (man korrigiere mich, wenn das nicht stimmt) auf eine schattenwerfende Lichtquelle beschränkt.
Übrigens wenn ich mir dein Bild ansehe, sehen die Normalen gut aus, dass einzige was etwas seltsam erscheint, ist der linke Rand der Straße.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.