FIX:将模型转换为g3db格式解决了这个问题。
我使用的是Java 1.8.0_60,Android 6.0
所以我决定在LibGdx中使用3D,我遇到了一些与AssetManager有关的奇怪问题。
到目前为止,我一直在完全按照教程进行操作,并且正在尝试加载我从其中一个教程中获得的.obj模型。
我正在创建AssetManager并将.obj文件添加到队列中,Model.class作为load方法的第二个参数。
然后我等待资产加载,在AssetManager上调用update()每次渲染以检查它是否已加载。
现在,我的printlns看起来很像这样:
队列中的资产:1
进展:0.0
我的渲染方法如下所示(在GameRenderer类中):
public void render(){
if(!created){
return;
}
if(assets.loading() && assets.update()){
assets.bindModels();
}
camController.update();
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(cam);
modelBatch.render(assets.getInstances(), environment);
modelBatch.end();
}
我的资产加载方法如下所示(在AssetLoader类中):
public void loadModels(){
assets.load("ship.obj", Model.class);
loading = true;
}
public void bindModels() {
ModelInstance model = new ModelInstance(assets.get("ship.obj", Model.class));
instances.add(model);
loading = false;
}
public boolean update(){
System.out.println("Assets in queue: " + assets.getQueuedAssets());
return assets.update();
}
没有例外被抛出。
我的猜测是有些东西导致AssetManager卡住了,但我迷失了可能导致它的原因。非常感谢任何帮助。
谢谢!
编辑:
如果我在AssetManager上调用finishLoading(),它会阻止资产全部完成,游戏会冻结。