Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich denke schon, dass das ein Problem ist.
Angenommen die Eckpunkte eines der Balken sind sehr weit weg, dann wird die resultierende Farbe an den Eckpunkten ermittelt und dann über den gesamten Balken interpoliert. Wenn dein Balken in der Mitte eigentlich viel nächer zur Lichtquelle ist, als die Eckpunkte, wird er trotzdem nicht heller gezeichnet. Einzige Lösung für Std.OpenGL-Licht ist das Aufteilen deiner Flächen in kleinere Segmente. Oder aber du verzichtest auf Licht und zeichnest die dinger einfach mit normalem Shading.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Wisst ihr wo die Gründe dafür liegen? Es scheint mir nicht so kompliziert zu sein, einen Lichtstrahl nach den Lehrsätzen der geometrischen Optik zu simulieren. Würde dies zu viel Rechnungsleistung erfordern, oder gibt es andere Gründe, weshalb dies nicht so gemacht wird?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Als OpenGL auf den Mark kam, waren Grafikkarten nicht die Rechenmonster die sie heute sind. Es gab in der Forschung verschiedene Beleuchtungsmodelle. Man hat sich für das Phong-Modell entschieden. Das Phong Modell beschreibt aber nur, wie die Darstellung an einem definierten Punkt des Objekts ist.
Zur damaligen Zeit wäre es der Overkill gewesen, wenn man versucht hätte, die Beleuchtung für jedes sichtbare Pixel zu berechnen. Also entschied man sich für die performante Lösung, die Beleuchtung nur für die Eckpuknte zu berechnen, und dazwischen zu interpolieren. Der Entwickler kann, falls es nötig ist, dann seine Objekte mit mehr Vertices aufbauen, wenn er eine genauere Lichtberechnung haben möchte.
Für dich heißt das konkret, dass du mit Std.OpenGL Licht, deine Kisten höher auflösen musst. D.h. dein Gittermodell muss dichter werden.
Eine andere alternative brachten Shader mit. Hier gibt es die möglichkeit eine Per-Pixel-Beleuchtung (PPL) zu programmieren. Falls Shader für dich eine Option sind, findest du einen Beispiel PPL Shader im Wiki in der Shadersammlung.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Werden die Beiden Vektoren zusammenaddiert, oder wird der erste mit dem zweiten überschrieben?
der erste wird von dem zweiten ersetzt.
(zusammenaddieren würde auch wenig Sinn machen. dann müsstest du spätestens am Ende eines Renderpass die Normale nachberechnen und wieder abziehen, sonst würden sich die Normalen mit der Zeit ändern)
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.