这次我的模型实际呈现出现问题。我可以通过Libgdx loadObj()函数加载它,并使用GL10_Triangles渲染它,但是我在模型中不断丢失三角形(似乎只有一半的模型被渲染)。我已经尝试了旧的ObjLoad功能(注释掉)以及不同的渲染样式,但似乎没有任何效果。
是的,我已经在Blender中检查了模型,模型完整而没有丢失面孔。
请参阅下面的打印屏幕,以及下面的代码。 任何帮助都会非常棒,因此我非常沮丧,因为我已经非常接近工作了。
这是代码。
public class LifeCycle implements ApplicationListener {
Mesh model;
private PerspectiveCamera camera;
public void create() {
InputStream stream = null;
camera = new PerspectiveCamera(45, 4, 4);
try
{
stream = Gdx.files.internal("Hammer/test_hammer.obj").read();
//model = ModelLoaderOld.loadObj(stream);
model = ObjLoader.loadObj(stream,true);
stream.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);
}
protected float rotateZ = 0.1f;
protected float increment = 0.1f;
public void render()
{
Gdx.app.log("LifeCycle", "render()");
Gdx.gl.glClearColor(0.0f, 0.0f, 0.5f, 1.0f);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
camera.update();
camera.apply(Gdx.gl10);
Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);
Gdx.gl10.glRotatef(rotateZ, rotateZ, 5.0f, rotateZ);
model.render(GL10.GL_TRIANGLES);
rotateZ += increment;
System.out.println(""+rotateZ);
}
}
答案 0 :(得分:2)
这实际上看起来像OBJ文件存储四边形而不是三角形,但是你的加载例程只是将它们读作三角形(只读取一个面的前3个索引组)。虽然Blender可能(并且应该)足够智能来处理四边形,但是你的装载程序却不是。所以要么写一个更好的OBJ加载器(但我想这不是你的类),配置你的OBJ加载器来正确处理四边形(如果可能的话),或者将模型导出为三角形而不是四边形(如果可能的话)。