[英]libgdx android doesn't show model (black screen)
我是 LibGDX 的新手。 我尝试应用我在线阅读的一些教程在 libGDX 中加载模型。 问题是当应用程序加载到我的 Galaxy Nexus(Android 4.3)上时,我有一个黑屏,根据 LogCat 没有错误。 代码是这样的:
@Override
public void create() {
modelBatch = new ModelBatch();
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(7f, 7f, 7f);
cam.lookAt(0,0,0);
cam.near = 1f;
cam.far = 300f;
cam.update();
assets = new AssetManager();
assets.load("data/skeleton.g3db", Model.class);
loading = true;
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
}
private void doneLoading() {
Model I_model = assets.get("data/skeleton.g3db", Model.class);
ModelInstance I_instance = new ModelInstance(I_model);
I_instance.transform.setToTranslation(-5f, 0, -5f);
instances.add(I_instance);
loading = false;
}
@Override
public void render() {
if (loading && assets.update())
doneLoading();
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(instances, environment);
modelBatch.end();
}
@Override
public void dispose() {
modelBatch.dispose();
model.dispose();
assets.dispose();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
模型“骨架”作为 .fbx 在线获取并使用 fbx-conv 转换为 .g3db。 是代码错误还是模型错误? 任何帮助表示赞赏,谢谢。
你好,抱歉我的英语,我对模型没有太多经验,但是当你分配
cam.position.set (7f, 7f, 7f);
cam.lookAt (0,0,0);
然后你说
I_instance.transform.setToTranslation (-5F, 0, -5F);
是不是在相机的视野范围之外不远? 这只是一个问题,也许这个错误就在那里
编辑;
I_instance.transform.setToTranslation(-5f, 0, -5f);
DirectionalLight().set(float r, float g, float b, float dirX, float dirY, float dirZ)
dirz 你不是超出模型范围,-5F 改 aver 1f 觉得如果你看到灯光没有到
我认为问题是光线的方向,因为我认为这里有两点照明告诉模型出现了纹理。
可能是模型光线不好,请使用;
PointLight 设置(浮动 r、浮动 g、浮动 b、浮动 x、浮动 y、浮动 z、浮动强度)
float intensity = 1f;
environment.add(new PointLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.8f, intensity));
和托盘变化在测试中的可变强度,例如 100;
我遇到了同样的问题,我的问题是模型加载得非常大,而且相机在模型中。 因此,尝试缩小模型,或将相机向后移动很多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.