2014-10-20 114 views
1

我想讓模型變得非常接近相機,以便它可以被看得更好,但它被繪製得如此之遙,我不知道如何將它移近。我嘗試使用GL11.glTranslatef(0,0,1);來讓它靠近,但由於某種奇怪的原因,物體只是保持相同的距離而不會離得更近。然後消失在近/遠平面視圖之外。關於如何解決此問題的任何想法?下面有一堂課。3D模型不會翻譯

package engine; 

import model.Face; 
import model.Model; 
import model.ObjLoader; 

import org.lwjgl.opengl.GL11; 
import org.lwjgl.util.vector.Vector3f; 

public class Render { 

    Model m = null; 

    public Render() { 

    } 

    public void draw(){ 
     GL11.glClearColor(0, 0, 0, 1); 
     GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 
     GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE); 
     GL11.glBegin(GL11.GL_TRIANGLES); 
      for (Face f : m.faces){ 
       //This code draws the model. 
       Vector3f n1 = m.normals.get((int)f.normalIndicies.x - 1); 
       GL11.glNormal3f(n1.x, n1.y, n1.z); 
       Vector3f v1 = m.vertecies.get((int)f.indicies.x - 1); 
       GL11.glVertex3f(v1.x, v1.y, v1.z); //First vertex 


       Vector3f n2 = m.normals.get((int)f.normalIndicies.y - 1); 
       GL11.glNormal3f(n2.x, n2.y, n2.z); 
       Vector3f v2 = m.vertecies.get((int)f.indicies.y - 1); 
       GL11.glVertex3f(v2.x, v2.y, v2.z); //second vertex 

       Vector3f n3 = m.normals.get((int)f.normalIndicies.z - 1); 
       GL11.glNormal3f(n3.x, n3.y, n3.z); 
       Vector3f v3 = m.vertecies.get((int)f.indicies.z - 1); 
       GL11.glVertex3f(v3.x, v3.y, v3.z); // third vertex 
      } 
     GL11.glEnd(); 

     GL11.glTranslatef(0, 0, 1); // <---- Here is the issue!!! 

    } 

    public void initOpenGL(){ 
     GL11.glMatrixMode(GL11.GL_PROJECTION); 
     GL11.glLoadIdentity(); 
     GL11.glOrtho(0, 800, 600, 0, 1, -100); 
     GL11.glMatrixMode(GL11.GL_MODELVIEW); 


     try{ 
      m = ObjLoader.loadModel("bunnyWithNormals.obj"); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
     GL11.glTranslatef(400f, 300f, 0); // moves it onto the screen 
    } 

} 

回答

1

使用glFrustum()/glPerspective()而不是glOrtho()

+1

謝謝!我忘了glOrtho()將事物放入2D視角。 – user3140916 2014-10-20 01:58:07