Moin erstmal.
Also ich bastel jetzt schon seit einer ganzen Weile mit JOGL ein kleines 3d-Universum. Dieses Universum ernhält Sonnen, Planeten und Monde. Die Objekte bewegen sich auf ihren Kreisbahnen, rotieren, etc.
Wenn ich jetzt eine Sonne erstelle, dann möchte ich in der Mitte der Sonne eine Lichtquelle positionieren. Das Problem ist jetzt aber, dass die Sonne selbst von der Lichtquelle in ihrem Mittelpunkt nicht angestrahlt wird. Ausserdem entsteht bei einer einfachen Lichtquelle kein schöner "Glüheffekt".
Deshalb dachte ich mir, ich versuche mich mit dem Radial Blur Effekt (wie aus dem Nehe-Tutorial: http://www.java-tips.org/other-api-...endering-to-a-texture-nehe-tutorial-jogl.html). Das ganze sieht auch schon super aus, aber eben auch nur dann, wenn "alles" mittig positioniert wird. Ich weiss nicht genau, wie ich das erklären soll, aber ich versuche es mal bildlich:
Wenn ich die Sonne einfach mal mittig positioniere, also den Mittelpunkt bei 0,0,0 setze, dann habe ich ein kleines Problem, wenn ICH mich im Raum bewege (glulookat). Also angenommen die Sonne ist bei 0,0,0 positioniert, ich stehe auf der Z-Achse und schaue nach 0,0,0. Wenn ich mich jetzt zum Beispiel auf der X-Achse nach links (negative Richtung) bewege, dann verschiebt sich mein Blur-Effekt etwas. Das ganze sieht dann mehr aus wie ein Lichtstrahl und nicht wie ein gleichmäßiger Gloweffekt.
Meine Sonne soll also immer gleich aussehen, egal wo ich mich befinde. Sie soll quasi immer in alle Richtungen Strahlen.
Und genau das ist das Problem, ich kriege es irgendwie nicht hin, den Blureffekt beliebig zu positionieren. Doch, das schon, aber der Effekt verschiebt sich eben etwas.
Hier mal mittig positioniert:
Und hier habe ich das ganze (also die glutSolidSphere) mit glTranslatef auf der X-Achse um 150 nach rechts verschoben:
Hat jemand eine Idee, wie ich das Problem lösen könnte? Ich habe mich bei meinem Blur sehr an das Nehe-Tutorial gehalten und eben auch diesen Code für den Blur verwendet:
(Weiss zwar momentan nichtmehr genau, woher ich diese Berechnungen habe, aber sie funktionieren ;-). Mein Fenster ist übrigens 800x800 groß.)
Wenn ich in der Schleife die Werte des ersten glVertex2f Aufrufs ändere in gl.glVertex2f(-1800*spost,-800*spost) (einfach probiert), dann komme ich meinem gewünschten Ziel komischerweise recht nah. Seht selbst:
D.h. das ganze hat irgendwie was mit der Positionierung innerhalb der Schleife zu tun, denke ich. Kurz gesagt: Wenn ich mich im Raum bewege, dann muss die Position des Blurs irgendwie angepasst werden.
Ich wäre wirklich für jede Hilfe sehr dankbar, sitze schon sehr lange an diesem Effekt und irgendwie möchte ich diesen, bevor ich im Universum weitermache, fertiggestellt haben.
Auch Beispielcode in C++/C kann helfen, ist egal, da wühle ich mich schon irgendwie durch.
Ich hoffe ihr habt einigermaßen verstanden, was ich für ein Problem habe. )
Oder könnte Radial-Blur doch die falsche Richtung sein? Ich lasse mich gerne eines besseren belehren.[/code]
Also ich bastel jetzt schon seit einer ganzen Weile mit JOGL ein kleines 3d-Universum. Dieses Universum ernhält Sonnen, Planeten und Monde. Die Objekte bewegen sich auf ihren Kreisbahnen, rotieren, etc.
Wenn ich jetzt eine Sonne erstelle, dann möchte ich in der Mitte der Sonne eine Lichtquelle positionieren. Das Problem ist jetzt aber, dass die Sonne selbst von der Lichtquelle in ihrem Mittelpunkt nicht angestrahlt wird. Ausserdem entsteht bei einer einfachen Lichtquelle kein schöner "Glüheffekt".
Deshalb dachte ich mir, ich versuche mich mit dem Radial Blur Effekt (wie aus dem Nehe-Tutorial: http://www.java-tips.org/other-api-...endering-to-a-texture-nehe-tutorial-jogl.html). Das ganze sieht auch schon super aus, aber eben auch nur dann, wenn "alles" mittig positioniert wird. Ich weiss nicht genau, wie ich das erklären soll, aber ich versuche es mal bildlich:
Wenn ich die Sonne einfach mal mittig positioniere, also den Mittelpunkt bei 0,0,0 setze, dann habe ich ein kleines Problem, wenn ICH mich im Raum bewege (glulookat). Also angenommen die Sonne ist bei 0,0,0 positioniert, ich stehe auf der Z-Achse und schaue nach 0,0,0. Wenn ich mich jetzt zum Beispiel auf der X-Achse nach links (negative Richtung) bewege, dann verschiebt sich mein Blur-Effekt etwas. Das ganze sieht dann mehr aus wie ein Lichtstrahl und nicht wie ein gleichmäßiger Gloweffekt.
Meine Sonne soll also immer gleich aussehen, egal wo ich mich befinde. Sie soll quasi immer in alle Richtungen Strahlen.
Und genau das ist das Problem, ich kriege es irgendwie nicht hin, den Blureffekt beliebig zu positionieren. Doch, das schon, aber der Effekt verschiebt sich eben etwas.
Hier mal mittig positioniert:
Und hier habe ich das ganze (also die glutSolidSphere) mit glTranslatef auf der X-Achse um 150 nach rechts verschoben:
Hat jemand eine Idee, wie ich das Problem lösen könnte? Ich habe mich bei meinem Blur sehr an das Nehe-Tutorial gehalten und eben auch diesen Code für den Blur verwendet:
Code:
gl.glBegin(GL.GL_QUADS);
for (int num = 0; num < times; num++) // Anzahl, wie oft Blur gerendert wird
{
gl.glColor4f(1.0f, 1.0f, 1.0f, alpha);
gl.glTexCoord2f(0,1);
gl.glVertex2f(-800*spost,-800*spost);
gl.glTexCoord2f(0,0);
gl.glVertex2f(-800*spost,800+800*spost);
gl.glTexCoord2f(1,0);
gl.glVertex2f(800+800*spost,800+800*spost);
gl.glTexCoord2f(1,1);
gl.glVertex2f(800+800*spost,-800*spost);
spost = spost + inc;
alpha = alpha - alphainc;
}
gl.glEnd();
(Weiss zwar momentan nichtmehr genau, woher ich diese Berechnungen habe, aber sie funktionieren ;-). Mein Fenster ist übrigens 800x800 groß.)
Wenn ich in der Schleife die Werte des ersten glVertex2f Aufrufs ändere in gl.glVertex2f(-1800*spost,-800*spost) (einfach probiert), dann komme ich meinem gewünschten Ziel komischerweise recht nah. Seht selbst:
D.h. das ganze hat irgendwie was mit der Positionierung innerhalb der Schleife zu tun, denke ich. Kurz gesagt: Wenn ich mich im Raum bewege, dann muss die Position des Blurs irgendwie angepasst werden.
Ich wäre wirklich für jede Hilfe sehr dankbar, sitze schon sehr lange an diesem Effekt und irgendwie möchte ich diesen, bevor ich im Universum weitermache, fertiggestellt haben.
Auch Beispielcode in C++/C kann helfen, ist egal, da wühle ich mich schon irgendwie durch.
Ich hoffe ihr habt einigermaßen verstanden, was ich für ein Problem habe. )
Oder könnte Radial-Blur doch die falsche Richtung sein? Ich lasse mich gerne eines besseren belehren.[/code]