Ich versuche in einer 3D Welt für den Boden ein Gitternetz mit 3D-Linien zu zeichnen inkl. Licht (siehe Code).
Aber das Licht (ist vor den Objekten im 3D-Raum platziert) funktioniert bei den Linien irgendwie nicht richtig. Habe das Gefühl, dass die Linien nicht richtig beleuchtet werden.
Hinzu kommt, wenn ich (// * Rotieren *, siehe letzter Code) für das Gitternetz verwende, bleibt das Licht einwandfrei auf den 3D Objekten, aber auf dem Gitternetz rotiert das Licht nach hinten, obwohl es ja vorne steht(siehe Bild).
Auf ein 3D-Objekt fällt das Licht korrekt, aber die Linien interessiert das nicht.
Blöd ist auch, dass die Linien nicht rot sind, sondern gelb.
Hat jemand ein Tip oder ein kurzes Linien-Beispiel?
Aber das Licht (ist vor den Objekten im 3D-Raum platziert) funktioniert bei den Linien irgendwie nicht richtig. Habe das Gefühl, dass die Linien nicht richtig beleuchtet werden.
Hinzu kommt, wenn ich (// * Rotieren *, siehe letzter Code) für das Gitternetz verwende, bleibt das Licht einwandfrei auf den 3D Objekten, aber auf dem Gitternetz rotiert das Licht nach hinten, obwohl es ja vorne steht(siehe Bild).
Auf ein 3D-Objekt fällt das Licht korrekt, aber die Linien interessiert das nicht.
Blöd ist auch, dass die Linien nicht rot sind, sondern gelb.
Hat jemand ein Tip oder ein kurzes Linien-Beispiel?
Code:
FloatBuffer redDiffuse = (FloatBuffer) BufferUtils.createFloatBuffer(4).put(new float[] { 1.0f, 1.0f, 1.0f, 1.0f }).flip();
FloatBuffer redPos = (FloatBuffer) BufferUtils.createFloatBuffer(4).put(new float[] { 0.0f, 5.0f, 10.0f, 1.0f }).flip();
// GL_DIFFUSE, GL_AMBIENT, GL_SPECULAR
GL11.glLight(GL11.GL_LIGHT0,GL11.GL_DIFFUSE, redDiffuse);
GL11.glLight(GL11.GL_LIGHT0,GL11.GL_POSITION, redPos);
Code:
gl.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glColorMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE);
FloatBuffer mat_solid = (FloatBuffer) BufferUtils.createFloatBuffer(4).put(new float[] { 0.75f, 0.0f, 0.0f, 1.0f }).flip();
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE, mat_solid);
GL11.glLineWidth(1.0f);
GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3f( ax, ay, az);
GL11.glVertex3f( bx, by, bz);
GL11.glEnd();
gl.glPopMatrix();
Code:
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glColorMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE);
FloatBuffer mat_solid = (FloatBuffer) BufferUtils.createFloatBuffer(4).put(new float[] { 0.75f, 0.0f, 0.0f, 1.0f }).flip();
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE, mat_solid);
GL11.glLineWidth(1.0f);
// * Rotieren *
rotGitter += .001;
gl.glRotatef(0.0f,1f,0f,0f);
gl.glRotatef(rotGitter,0f,1f,0f);
gl.glRotatef(0.0f,0f,0f,1f);
GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3f( ax, ay, az);
GL11.glVertex3f( bx, by, bz);
GL11.glEnd();
gl.glPopMatrix();
Anhänge
Zuletzt bearbeitet: