2012-08-13 10 views
5

Tengo un programa muy simple, que carga un archivo obj de frente de onda, lo gira y lo muestra. El problema es que el programa lo presenta con algunos problemas (como triángulos faltantes). Tuve un problema similar cuando traté de renderizar una Pirámide con un búfer de vértices tomado del tutorial de NeHe. Entonces no sé qué causa este problema de renderizado. ¿Me puedes ayudar? Buggy Space ShuttleProblema de representación de malla libgdx

package com.jam.libgdx3DTest; 

import com.badlogic.gdx.Game; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.*; 
import com.badlogic.gdx.graphics.g3d.loaders.obj.ObjLoader; 

import java.io.InputStream; 

public class Libgdx3DTest extends Game { 

    private Mesh shuttleMesh; 
    private Camera camera; 
    private float rotateAngle; 

    public void create() { 
     if (shuttleMesh == null) { 
      InputStream in = Gdx.files.internal("shuttle.obj").read(); 
      shuttleMesh = ObjLoader.loadObj(in, false); 
     } 
    } 

    public void render() { 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 

     Gdx.gl10.glMatrixMode(GL11.GL_MODELVIEW_MATRIX); 

     Gdx.gl10.glLoadIdentity(); 

     camera.update(); 
     camera.apply(Gdx.gl10); 

     rotateAngle += 0.5f; 
     Gdx.gl10.glRotatef(rotateAngle, 0f, 1f, 0f); 
     Gdx.gl10.glRotatef(-90f, 1f, 0f, 0f); 

     shuttleMesh.render(GL11.GL_TRIANGLES); 
    } 

    public void resize(int width, int height) { 
     float aspectRatio = (float) width/(float) height; 
     camera = new PerspectiveCamera(67, 2f * aspectRatio, 2f); 
     camera.translate(0f, 0f, 12f); 
    } 

    public void pause(){ 
    } 

    public void resume(){ 
    } 

    public void dispose() { 
    } 
} 
+2

Ver si esta respuesta puede ayudar: http://stackoverflow.com/questions/9019669/ android-mesh-render-issue – Wroclai

+0

Gracias, creo que tal vez ese es el problema. Trataré de "triangular" el modelo. –

Respuesta

2

creo que puede estar teniendo problemas sinuosas es decir, el modelo tiene diferentes bobinado de OpenGL.

OpenGL Winding está en sentido antihorario por defecto, aunque esto se puede cambiar con glFrontFace (GL_CW);

0

Creo que este es su problema

shuttleMesh.render(GL11.GL_TRIANGLES) 

debería ser

shuttleMesh.render(GL11.GL_TRIANGL_FAN); 

a ma