在LibGDX中使用OrthographicCamera显示3D模型

时间:2014-08-22 02:13:25

标签: java camera libgdx

所以基本上我试图在2D中使用OrthographicCamera显示.obj 3D模型,而不是使用PerspectiveCamera显示3D。

当我使用PerspectiveCamera渲染时,一切正常,但如果我将其切换为正交,则不显示任何内容,只显示空白背景。

下面是我在使用PerspectiveCamera注释时使用的代码。我不确定是否需要设置OrthographicCamera的方式不同,或者我是否需要使用带有一些修改后的PerspectiveCamera来实现这一点。在这一点上,我“消除”哪个轴无关紧要。

基本上我想要实现的是能够将Blender用于我的2D动画。我在Blender方面已经想到这个并且它运行得很好,但它们必须作为.obj(或.fbx)导入到LibGDX中,它们作为模型加载到LibGDX中,因此必须使用ModelBatch进行渲染一个ModelInstance和一个Environment。我需要一种方法来使用2D正投影而不是3D透视投影来查看此对象。

有人对此有任何建议吗?

public class Test extends ApplicationAdapter {

//public PerspectiveCamera cam;
public OrthographicCamera cam;
public CameraInputController camController;

public ModelBatch modelBatch;

public ModelInstance ship;

public Environment environment;

@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(10f, 10f, 10f);
    cam.lookAt(0, 0, 0);
    cam.near = 1f;
    cam.far = 10f;
    cam.update();
    */

    cam = new OrthographicCamera();
    cam.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    cam.update();

    camController = new CameraInputController(cam);
    Gdx.input.setInputProcessor(camController);

    ObjLoader loader = new ObjLoader();
    Model model = loader.loadModel(Gdx.files.internal("data/invader.obj"));
    ship = new ModelInstance(model);
}

@Override
public void render() {
    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(ship, environment);
    modelBatch.end();
}

@Override
public void dispose() {
    modelBatch.dispose();
}
}

0 个答案:

没有答案