LWJGL Forum

Programming => OpenGL => Topic started by: abenstex on September 17, 2005, 15:59:59

Title: Newbie problem with drawin 3d Cube
Post by: abenstex on September 17, 2005, 15:59:59
Hello,

taking the following code: public void draw()
 {
   GL11.glPushMatrix();
   GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
   GL11.glLoadIdentity();
   GL11.glTranslatef(x,y,-7.0f);
   //GL.glRotatef(angle, rotx, roty, rotz);
   GL11.glBegin(GL11.GL_QUADS);
   {
     //oben
     GL11.glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green
     GL11.glVertex3f( 10.0f, 10.0f,-10.0f); // Top Right Of The Quad (Top)
     GL11.glVertex3f(-10.0f, 10.0f,-10.0f); // Top Left Of The Quad (Top)
     GL11.glVertex3f(-10.0f, 10.0f, 10.0f); // Bottom Left Of The Quad (Top)
     GL11.glVertex3f( 10.0f, 10.0f, 10.0f); // Bottom Right Of The Quad (Top)
     
     //vorne
     GL11.glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
GL11.glVertex3f( 10.0f,-10.0f, 10.0f); // Top Right Of The Quad (Bottom)
GL11.glVertex3f(-10.0f,-10.0f, 10.0f); // Top Left Of The Quad (Bottom)
GL11.glVertex3f(-10.0f,-10.0f, -10.0f); // Bottom Left Of The Quad (Bottom)
GL11.glVertex3f( 10.0f,-10.0f, -10.0f); // Bottom Right Of The Quad (Bottom)
     //unten
     GL11.glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
GL11.glVertex3f( 10.0f, 10.0f, 10.0f); // Top Right Of The Quad (Front)
GL11.glVertex3f(-10.0f, 10.0f, 10.0f); // Top Left Of The Quad (Front)
GL11.glVertex3f(-10.0f,-10.0f, 10.0f); // Bottom Left Of The Quad (Front)
GL11.glVertex3f( 10.0f,-10.0f, 10.0f); // Bottom Right Of The Quad (Front)
     //hinten
     GL11.glColor3f(1.0f,1.0f,0.0f); // Set The Color To Yellow
GL11.glVertex3f( 10.0f,-10.0f,-10.0f); // Bottom Left Of The Quad (Back)
GL11.glVertex3f(-10.0f,-10.0f,-10.0f); // Bottom Right Of The Quad (Back)
GL11.glVertex3f(-10.0f, 10.0f,-10.0f); // Top Right Of The Quad (Back)
GL11.glVertex3f( 10.0f, 10.0f,-10.0f); // Top Left Of The Quad (Back)
     
     GL11.glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue
GL11.glVertex3f(-10.0f, 10.0f, 10.0f); // Top Right Of The Quad (Left)
GL11.glVertex3f(-10.0f, 10.0f,-10.0f); // Top Left Of The Quad (Left)
GL11.glVertex3f(-10.0f,-10.0f,-10.0f); // Bottom Left Of The Quad (Left)
GL11.glVertex3f(-10.0f,-10.0f, 10.0f); // Bottom Right Of The Quad (Left)
     
     GL11.glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet
   GL11.glVertex3f( 10.0f, 10.0f,-10.0f); // Top Right Of The Quad (Right)
GL11.glVertex3f( 10.0f, 10.0f, 10.0f); // Top Left Of The Quad (Right)
GL11.glVertex3f( 10.0f,-10.0f, 10.0f); // Bottom Left Of The Quad (Right)
GL11.glVertex3f( 10.0f,-10.0f,-10.0f); // Bottom Right Of The Quad (Right)
         
   }
   
   GL11.glEnd();
   GL11.glPopMatrix();
 }
is there any mistake, because there is absolutely nothing drawn on the screen?
Title: Newbie problem with drawin 3d Cube
Post by: hvor on September 19, 2005, 08:52:16
Maybe your box is out of your sight? You translate -7 in z... Try draw box with smaller sides, not 10:

GL11.glVertex3f( 1.0f, 1.0f,-1.0f);

and see then.
Title: Newbie problem with drawin 3d Cube
Post by: Evil-Devil on September 20, 2005, 10:24:21
yea, side sizes of 10 at -7 depthview is really to big. The cubes curves are out of sight, as my preposter allready said.
Title: Newbie problem with drawin 3d Cube
Post by: abenstex on September 20, 2005, 15:10:05
I changed the GL11.glVertex3f to GL11.glVertex3f(1.0f, 1.0f, 1.0f) but i still couldn't see any cube-like thing. Then i thought the moving just 1 to each side might create a cube that's simply hard to see so i multiplied all values by 5 but still nothing...
Title: Newbie problem with drawin 3d Cube
Post by: CaseyB on September 20, 2005, 15:25:09
How are you changing the x and y values that you have in the draw()?  Are you using the Keyboard?  If so check for another key and have that adjust the z value so you can move the cube in and out.  If you leave x and y set at 0's for now you should be able to move the cube in and out and find the optimal viewing distance!

CaseyB
Title: Newbie problem with drawin 3d Cube
Post by: abenstex on September 20, 2005, 19:03:54
I tried that too, i pressed the keys until the Z values was +/- around 1000 and i still couldn't see anything. I am going to paste the two classes here, amybe there is a mistake somewhere and i just can't see it:package manager;

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.*;

public class Main
{
 
 private boolean done = false;
 private Player player;
 
 public Main()
 {
 }

 public void render()
 {
   GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
   GL11.glMatrixMode(GL11.GL_MODELVIEW);
   
   player.draw();
 }
 
 public void cleanUp()
 {
   Display.destroy();
   Keyboard.destroy();
 }

 private void initialize(DisplayMode dm)
 {
   try {
     Display.setDisplayMode(dm);
     Display.setFullscreen(false);
     Display.setTitle("Tutorial1");
     Display.create();
     
     GL11.glClearColor(1.5f, 0.0f, 1.0f, 0.0f);

     GL11.glEnable(GL11.GL_BLEND);
     GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
     GL11.glDisable(GL11.GL_DEPTH_TEST);
     GL11.glMatrixMode(GL11.GL_PROJECTION);
     GL11.glLoadIdentity();
     GL11.glOrtho(0, dm.getWidth(), dm.getHeight(), 0, -1, 1);
   }
   catch(LWJGLException e)
   {
     e.printStackTrace();
   }
 }


 public DisplayMode getDisplayMode(int width, int height, int depth)
 {
   try {
     DisplayMode[] modes = Display.getAvailableDisplayModes();
     for(int i=0; i<modes.length; i++)
     {
       if((modes[i].getWidth() == width) && (modes[i].getHeight() == height)
         && (modes[i].getBitsPerPixel()>=depth))
         {
           return modes[i];
         }
     }
   }
   catch(LWJGLException e)
   {
     e.printStackTrace();
   }
   catch(Exception e)
   {
     e.printStackTrace();
   }
   return null;
 }

 public void poll()
 {
   Keyboard.poll();
   if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE) || Display.isCloseRequested())
   {
     done = true;
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_LEFT))
   {
     player.setX(player.getX() - 0.5f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT))
   {
     player.setX(player.getX() + 0.5f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_UP))
   {
     player.setY(player.getY() - 1.0f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_DOWN))
   {
     player.setY(player.getY() + 1.0f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD9))
   {
     player.setX(player.getX() + 0.4f);
     player.setY(player.getY() - 0.5f);
   
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD7))
   {
     player.setX(player.getX() - 0.4f);
     player.setY(player.getY() - 0.5f);
   
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD3))
   {
     player.setX(player.getX() + 0.4f);
     player.setY(player.getY() + 0.5f);
   
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD1))
   {
     player.setX(player.getX() - 0.4f);
     player.setY(player.getY() + 0.5f);
     
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD2))
   {
     player.setY(player.getY() + 1.0f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD4))
   {
     player.setX(player.getX() - 0.5f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD6))
   {
     player.setX(player.getX() + 0.5f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_NUMPAD8))
   {
     player.setY(player.getY() - 1.0f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_W))
   {
     player.setZ(player.getZ() + 1.0f);
   }
   else if(Keyboard.isKeyDown(Keyboard.KEY_S))
   {
     player.setZ(player.getZ() - 1.0f);
   }
   player.draw();
 }

 public void mainLoop() throws Exception
 {
   Display.makeCurrent();
   player.setPosition(15.0f, 1.0f, -7.0f);
   
   while(!done)
   {
     poll();
     render();
     Display.update();
   }
   
 }

 public static void main(String[] args)
 {
   Main main = new Main();
   try {
     DisplayMode dm = main.getDisplayMode(640, 480, 32);
     main.player = new Player(dm);
     main.initialize(dm);
     main.mainLoop();
   }
   catch(Exception e)
   {
     e.printStackTrace();
   }
   finally
   {
     main.cleanUp();
   }
 }
}

package manager;

import org.lwjgl.opengl.*;
import org.lwjgl.util.*;
import org.lwjgl.opengl.glu.Sphere;

public class Player
{
 
 private float x, y, z, rotx, roty, rotz, angle;
 private DisplayMode dm;
 
 public Player(DisplayMode dm)
 {
   this.dm = dm;
 }
 
 public void setX(float x)
 {
   this.x = x;
   
   if(x >= dm.getWidth())
   {
     this.x = 1.0f;
   }
   else if(x == 0)
   {
     this.x = dm.getWidth();
   }
 }
 
 public float getX()
 {
   return x;
 }
 
 public void setY(float y)
 {
   this.y = y;
   
   if(y >= dm.getHeight())
   {
     this.y = 1.0f;
   }
   else if(y == 0)
   {
     this.y = dm.getHeight();
   }
 }
 
 public float getY()
 {
   return y;
 }
 
 public void setPosition(float x, float y)
 {
   this.x = x;
   this.y = y;
 }
 
 public void setPosition(float x, float y, float z)
 {
   this.x = x;
   this.y = y;
   this.z = z;
 }
 
 public void setRotX(float x)
 {
   rotx = x;
 }
 
 public float getRotX()
 {
   return rotx;
 }
 
 public void setZ(float z)
 {
   this.z = z;
 }
 
 public float getZ()
 {
   return z;
 }
 
 public void setRotY(float y)
 {
   roty = y;
 }
 
 public float getRotY()
 {
   return roty;
 }
 
 public void setRotZ(float z)
 {
   rotz = z;
 }
 
 public float getRotZ()
 {
   return rotz;
 }
 
 public void setRotAngle(float angle)
 {
   this.angle = angle;
 }
 
 public float getRotAngle()
 {
   return angle;
 }
 
 public void setInitialRotation(float angle, float x, float y, float z)
 {
   this.angle = angle;
   rotx = x;
   roty = y;
   rotz = z;
 }
 
 public void draw()
 {
   GL11.glPushMatrix();
   GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);    
   GL11.glLoadIdentity();
   GL11.glTranslatef(x,y,z);
   
   GL11.glBegin(GL11.GL_QUADS);
   {
     //oben
     GL11.glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green
     GL11.glVertex3f( 10.0f, 10.0f,-1.0f); // Top Right Of The Quad (Top)
     GL11.glVertex3f(-10.0f, 10.0f,-1.0f); // Top Left Of The Quad (Top)
     GL11.glVertex3f(-10.0f, 10.0f, 1.0f); // Bottom Left Of The Quad (Top)
     GL11.glVertex3f( 10.0f, 10.0f, 1.0f); // Bottom Right Of The Quad (Top)
     
     //vorne
     GL11.glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
GL11.glVertex3f( 10.0f,-10.0f, 1.0f); // Top Right Of The Quad (Bottom)
GL11.glVertex3f(-10.0f,-10.0f, 1.0f); // Top Left Of The Quad (Bottom)
GL11.glVertex3f(-10.0f,-10.0f, -1.0f); // Bottom Left Of The Quad (Bottom)
GL11.glVertex3f( 10.0f,-10.0f, -1.0f); // Bottom Right Of The Quad (Bottom)
     //unten

     GL11.glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
GL11.glVertex3f( 10.0f, 10.0f, 1.0f); // Top Right Of The Quad (Front)
GL11.glVertex3f(-10.0f, 10.0f, 1.0f); // Top Left Of The Quad (Front)
GL11.glVertex3f(-10.0f,-10.0f, 1.0f); // Bottom Left Of The Quad (Front)
GL11.glVertex3f( 10.0f,-10.0f, 1.0f); // Bottom Right Of The Quad (Front)
   
     //hinten
     GL11.glColor3f(1.0f,1.0f,0.0f); // Set The Color To Yellow
GL11.glVertex3f( 10.0f,-10.0f,-1.0f); // Bottom Left Of The Quad (Back)
GL11.glVertex3f(-10.0f,-10.0f,-1.0f); // Bottom Right Of The Quad (Back)
GL11.glVertex3f(-10.0f, 10.0f,-1.0f); // Top Right Of The Quad (Back)
GL11.glVertex3f( 10.0f, 10.0f,-1.0f); // Top Left Of The Quad (Back)
     
     GL11.glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue
GL11.glVertex3f(-10.0f, 10.0f, 1.0f); // Top Right Of The Quad (Left)
GL11.glVertex3f(-10.0f, 10.0f,-1.0f); // Top Left Of The Quad (Left)
GL11.glVertex3f(-10.0f,-10.0f,-1.0f); // Bottom Left Of The Quad (Left)
GL11.glVertex3f(-10.0f,-10.0f, 1.0f); // Bottom Right Of The Quad (Left)
     
     GL11.glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet
   GL11.glVertex3f( 10.0f, 10.0f,-1.0f); // Top Right Of The Quad (Right)
GL11.glVertex3f( 10.0f, 10.0f, 1.0f); // Top Left Of The Quad (Right)
GL11.glVertex3f( 10.0f,-10.0f, 1.0f); // Bottom Left Of The Quad (Right)
GL11.glVertex3f( 10.0f,-10.0f,-1.0f); // Bottom Right Of The Quad (Right)
         
   }
   
   GL11.glEnd();
   GL11.glPopMatrix();
 }
}
Title: hmmmmmmm...
Post by: Fool Running on September 21, 2005, 13:25:27
GL11.glOrtho(0, dm.getWidth(), dm.getHeight(), 0, -1, 1);
That code is at least part of your problem.
Try this:
GLU.gluPerspective(45.0f, (float)dm.getWidth() / (float)dm.getHeight(), 0.1f, 1000.0f);
You were setting up an Ortho view with a z value from -1 to 1 (probably not enough to see the cube  :lol: )
Title: Newbie problem with drawin 3d Cube
Post by: abenstex on September 21, 2005, 16:00:41
Thanks! Of course that makes sense what you said, so i changed it but i'm still not successful. I tried the old code with GL11.glOrtho as well with changed values, but the same...
Title: hmmmmmm...
Post by: Fool Running on September 23, 2005, 13:13:52
I noticed something else... Try putting:
GL11.glMatrixMode(GL11.GL_MODELVIEW);
after the GLU.gluPerspective() call.
Title: Newbie problem with drawin 3d Cube
Post by: CaptainJester on September 23, 2005, 18:45:12
Also change the cube sides to between 0.9f and -0.9f on the z coordinates.

ie.
GL11.glVertex3f( 10.0f,-10.0f,-0.9f);         // Bottom Right Of The Quad