3D Würfel will sich nicht drehen! [LWJGL]

CookieSoft

Mitglied
Hallo liebe User,
befasse mich gerade mit LWJGL und wollte einen drehenden 3D Würfel zeichnen doch alles was ich zu sehen bekomme sind komische Linien die größer und kleiner werden. Wenn ich den Würfel ohne Rotation anzeige dann sehe ich halt einen 2D Würfel :shock:! Bitte um Hilfe der Code:
Java:
package org.cookiesoft.display;

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.openal.AL;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

import static org.lwjgl.opengl.GL11.*;

public class Game {
	
	public static int fps = 60;
	public static int DisplayWidth = 800;
	public static int DisplayHeight = 500;
	public static String DisplayTitle = "Game";
	private static float CubeRot = 0;
	
	public static void main(String[] args) {
		Game.createDisplay();
		Game.init();
	}
	public static void init(){			
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		glOrtho(0.0, Display.getDisplayMode().getWidth(), 0.0, Display.getDisplayMode().getHeight(), -1.0, 1.0);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight());
		while(!(Display.isCloseRequested())){
			if(Keyboard.isKeyDown(Keyboard.KEY_SPACE)){
				glViewport(10, 0, Display.getDisplayMode().getWidth(), Display.getDisplayMode().getHeight());
			}
			
			paint();
			Display.update();
			Display.sync(60);
		}
		Display.destroy();
	}
	public static void createDisplay(){
		try {
			Display.setDisplayMode(new DisplayMode(DisplayWidth, DisplayHeight));
			Display.setTitle(DisplayTitle);
			Display.create();
		} catch (LWJGLException e) {
			System.err.println("Display can't create!");
		}
	}
	public static void paint(){
		GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);	
    	GL11.glLoadIdentity();	
    	
		glTranslatef(0.0f, 0.0f,0.0f);	
		GL11.glRotatef(CubeRot,0.0f,1.0f,0.0f);					// Rotate The cube around the Y axis
		GL11.glRotatef(CubeRot,1.0f,1.0f,1.0f);
    	glBegin(GL_QUADS);
    	
    	    //Front
    	    glColor3f(1.0f,0.5f,0.0f);	
    	    glVertex3i(100, 100, 0);
    	    glVertex3i(200, 100, 0);
    	    glVertex3i(200, 200, 0);
    	    glVertex3i(100, 200, 0);
    	    
    	    //Back
    	    glColor3f(0.0f,0.5f,0.0f);	
    	    glVertex3i(100, 100, 100);
    	    glVertex3i(200, 100, 100);
    	    glVertex3i(200, 200, 100);
    	    glVertex3i(100, 200, 100);
    	    
    	    //Left
    	    glColor3f(0.0f,0.5f,0.0f);
    	    glVertex3i(100, 100, 100);
    	    glVertex3i(100, 100, 200);
    	    glVertex3i(100, 200, 200);
    	    glVertex3i(100, 200, 100);
    	    
    	    //Right
    	    glColor3f(0.0f,0.5f,0.0f);
    	    glVertex3i(200, 100, 100);
    	    glVertex3i(200, 100, 200);
    	    glVertex3i(200, 200, 200);
    	    glVertex3i(200, 200, 100);
    	    
    	    //Down
    	    glColor3f(0.0f,0.5f,0.0f);
    	    glVertex3i(100, 100, 100);
    	    glVertex3i(100, 100, 200);
    	    glVertex3i(200, 100, 200);
    	    glVertex3i(200, 100, 100);
    	    
    	    //Up
    	    glColor3f(0.0f,0.5f,0.0f);
    	    glVertex3i(100, 200, 100);
    	    glVertex3i(100, 200, 200);
    	    glVertex3i(200, 200, 200);
    	    glVertex3i(200, 200, 100);
    	    
    	glEnd();
    	
    	CubeRot += 0.1f;
	}

}
 
G

Guest2

Gast
Moin,

mit glOrtho definierst Du den Bereich, welcher gezeichnet werden soll. Dabei hast Du einen "z" Bereich von -1 bis +1 definiert. Beim Würfel unten verwendest Du dann aber Zahlen von 0 bis 200, wodurch immer nur eine dünne Scheibe des Würfels gezeichnet wird (das sieht dann aus wie Linien).

Spätestens wenn es Richtung 3D geht ist die Angabe von Koordinaten in Pixeln aber sowieso eine schlechte Idee. Nimm lieber etwas "Normierteres". Z.B. (-1,+1) auf allen Achsen. Außerdem möchtest Du wahrscheinlich (Glaskugel) Deinen Würfel nicht orthogonal, sondern perspektivisch korrekt zeichnen, das wäre dann nicht glOrtho sondern glFrustum oder gluPerspective.

Dein Code sähe dann etwa so aus:

Java:
package org.cookiesoft.display;

import static org.lwjgl.opengl.GL11.GL_CULL_FACE;
import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
import static org.lwjgl.opengl.GL11.GL_LEQUAL;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glColor3f;
import static org.lwjgl.opengl.GL11.glDepthFunc;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glFrustum;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glRotatef;
import static org.lwjgl.opengl.GL11.glTranslatef;
import static org.lwjgl.opengl.GL11.glVertex3f;
import static org.lwjgl.opengl.GL11.glViewport;

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class Game {

    public static int    fps           = 60;
    public static int    displayWidth  = 800;
    public static int    displayHeight = 500;
    public static String displayTitle  = "Game";
    private static float cubeRot       = 0;


    public static void main(final String[] args) {

        Game.createDisplay();
        Game.init();

    }


    public static void init() {

        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LEQUAL);
        glEnable(GL_CULL_FACE);

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

        final double fov = 45.0;
        final double zNear = 0.01;
        final double zFar = 100;
        final double aspect = (double) Display.getDisplayMode().getWidth() / (double) Display.getDisplayMode().getHeight();
        final double yPlane = Math.tan(Math.toRadians(fov / 2.0)) * zNear;
        final double xPlane = yPlane * aspect;

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glFrustum(-xPlane, +xPlane, -yPlane, +yPlane, zNear, zFar);

        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();

        while (!(Display.isCloseRequested())) {

            paint();
            Display.update();
            Display.sync(60);

        }

        Display.destroy();

    }


    public static void createDisplay() {

        try {

            Display.setDisplayMode(new DisplayMode(displayWidth, displayHeight));
            Display.setTitle(displayTitle);
            Display.create();

        } catch (final LWJGLException e) {

            System.err.println("Display can't create!");

        }
    }


    public static void paint() {

        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glLoadIdentity();

        glTranslatef(0.0f, 0.0f, -5f);
        glRotatef(cubeRot, 0.0f, 1.0f, 0.0f); // Rotate The cube around the Y axis
        glRotatef(cubeRot, 1.0f, 1.0f, 1.0f);

        glBegin(GL_QUADS);

        // Front
        glColor3f(1.0f, 0.5f, 0.0f);
        glVertex3f(-1.0f, -1.0f, +1.0f);
        glVertex3f(+1.0f, -1.0f, +1.0f);
        glVertex3f(+1.0f, +1.0f, +1.0f);
        glVertex3f(-1.0f, +1.0f, +1.0f);

        // Back
        glColor3f(0.0f, 0.5f, 0.0f);
        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, +1.0f, -1.0f);
        glVertex3f(+1.0f, +1.0f, -1.0f);
        glVertex3f(+1.0f, -1.0f, -1.0f);

        // Left
        glColor3f(0.0f, 0.5f, 1.0f);
        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, -1.0f, +1.0f);
        glVertex3f(-1.0f, +1.0f, +1.0f);
        glVertex3f(-1.0f, +1.0f, -1.0f);

        // Right
        glColor3f(0.5f, 1.0f, 0.0f);
        glVertex3f(+1.0f, -1.0f, -1.0f);
        glVertex3f(+1.0f, +1.0f, -1.0f);
        glVertex3f(+1.0f, +1.0f, +1.0f);
        glVertex3f(+1.0f, -1.0f, +1.0f);

        // Down
        glColor3f(0.5f, 0.0f, 1.0f);
        glVertex3f(-1.0f, -1.0f, +1.0f);
        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(+1.0f, -1.0f, -1.0f);
        glVertex3f(+1.0f, -1.0f, +1.0f);
        
        // Up
        glColor3f(1.0f, 0.0f, 0.5f);
        glVertex3f(-1.0f, +1.0f, -1.0f);
        glVertex3f(-1.0f, +1.0f, +1.0f);
        glVertex3f(+1.0f, +1.0f, +1.0f);
        glVertex3f(+1.0f, +1.0f, -1.0f);

        glEnd();

        cubeRot += 0.5f;

    }

}

Viel Grüße,
Fancy
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Elyt Würfel mit Bildanzeige Spiele- und Multimedia-Programmierung 5
TulPe Würfel per Mausklick rotieren Spiele- und Multimedia-Programmierung 10
K Würfel zu schnell Spiele- und Multimedia-Programmierung 5
F LWJGL Dreidimensionaler Würfel Spiele- und Multimedia-Programmierung 15
C Würfel erstellen und als Raum nutzen Spiele- und Multimedia-Programmierung 6
A JOGL Würfel hat durchsichtige Seiten? Spiele- und Multimedia-Programmierung 13
M Java3D - Problem mit rotierendem Würfel Spiele- und Multimedia-Programmierung 2
J Würfel Augenzahl richtig anzeigen Spiele- und Multimedia-Programmierung 16
D Würfel und zufall Spiele- und Multimedia-Programmierung 4
E Java3D Würfel Panel Spiele- und Multimedia-Programmierung 2
K Würfel vergrößern und verkleinern per Button Spiele- und Multimedia-Programmierung 7
K Seitenlänge aus einem Würfel lesen Spiele- und Multimedia-Programmierung 3
G Polygonfläche vom Würfel mit Bildern füllen Spiele- und Multimedia-Programmierung 5
K Wie malt man am geschicktesten einen Würfel? Spiele- und Multimedia-Programmierung 2
D 3D Würfel mit Jogl Spiele- und Multimedia-Programmierung 14
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
P Sich bewegende Kamera Spiele- und Multimedia-Programmierung 12
I Wo befindet sich ein Punkt? Spiele- und Multimedia-Programmierung 6
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
R Game Loop verhält sich eigenartig Spiele- und Multimedia-Programmierung 1
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
S Animation zieht "Spur" hinter sich her Spiele- und Multimedia-Programmierung 2
M Bildschirmgröße ändert sich Spiele- und Multimedia-Programmierung 10
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5
J Java3D - Farben vermischen sich Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
J Pufferproblem bei sich wiederholenden MouseEvents Spiele- und Multimedia-Programmierung 4
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
S Programm hängt sich auf wenn Lied abspielt Spiele- und Multimedia-Programmierung 4
W 2 Bälle, die sich abstoßen Spiele- und Multimedia-Programmierung 24
F RPG - Spielfigur soll sich nicht frei bewegen können. Anregugen wären gerne gesehen^^ Spiele- und Multimedia-Programmierung 13
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
P JFileChooser öffnet sich drei mal Spiele- und Multimedia-Programmierung 4
Dragonfire Java Sound API - Lautstärke ändert sich nicht Spiele- und Multimedia-Programmierung 2
H Jogl-Animator - Inhalt ändert sich nicht Spiele- und Multimedia-Programmierung 4
M Sich nach links verschiebendes Bild Spiele- und Multimedia-Programmierung 2
L Figur soll sich selbständig Bewegen Spiele- und Multimedia-Programmierung 12
S Polygon bewegt sich nach mehreren aufrufen immer schneller Spiele- und Multimedia-Programmierung 3
B Bounds drehen sich nicht mit.... Spiele- und Multimedia-Programmierung 7
R Eignet sich Java für ein Beat'em'Up? Spiele- und Multimedia-Programmierung 3
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
Fabel TicTacToe MiniMax Algorithmus geht nicht Spiele- und Multimedia-Programmierung 4
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
D MIDIdevice open funktioniert nicht Spiele- und Multimedia-Programmierung 1
Mika_MDF Minecraft Eclipse startet Minecraft nicht? Spiele- und Multimedia-Programmierung 23
H Musik Datei lädt nicht? Spiele- und Multimedia-Programmierung 8
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
Damtonix Gameloop funktioniert nicht! Spiele- und Multimedia-Programmierung 6
N Warum tut der Gegner nicht das was er soll? Spiele- und Multimedia-Programmierung 13
N Warum ist das Fenster nicht schwarz? Spiele- und Multimedia-Programmierung 26
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
A Dateifehler - Öffnet nicht Spiele- und Multimedia-Programmierung 7
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
R Laufbewegung geht nicht.. Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
F vlcj läuft nicht exportiert, aber in Eclipse Spiele- und Multimedia-Programmierung 2
A MouseListener ändert nicht das Lable Icon. Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
S KeyEvent funktioniert nicht, wenn Buttons dem Frame hinzugefügt werden Spiele- und Multimedia-Programmierung 7
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
Viktim Snake - Schlange wächst nicht Spiele- und Multimedia-Programmierung 3
J Mensch Ärgere Dich nicht - Künstliche Intelligenz Spiele- und Multimedia-Programmierung 2
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
L Mensch ärgere dich nicht Spiele- und Multimedia-Programmierung 9
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
4 AudioSystem.write() wirft IllegalArgumentException, obwohl dies eig. nicht passieren dürfte Spiele- und Multimedia-Programmierung 2
V Methoden werden zwar ausgeführt führen aber nicht zum Ergebnis Spiele- und Multimedia-Programmierung 5
M [JOGL] eclipse export Runnable Jar - startet nicht Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
S Slick2D KeyInput reagiert nicht. Spiele- und Multimedia-Programmierung 3
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
W [libGDX] findet SplashScreen.png nicht Spiele- und Multimedia-Programmierung 4
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
O Fehler bei Programmierung lässt Figur nicht bewegen Spiele- und Multimedia-Programmierung 5
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
F HashMap liefert nicht gewünschten Wert (gar nix) Spiele- und Multimedia-Programmierung 5
J mensch ärger dich nicht Spiele- und Multimedia-Programmierung 1
M Spiele Tutorial.. Findet Bilddateien nicht Spiele- und Multimedia-Programmierung 6
G Ausführbare Jar findet Bilddateien nicht... Spiele- und Multimedia-Programmierung 4
P Rotation von Sprite klappt nicht Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben