【问题标题】:Orthographic camera causes clipping issues正交相机导致剪辑问题
【发布时间】:2014-11-29 01:24:29
【问题描述】:

使用 LibGDX 来简化我的项目制作,我遇到了一个我似乎无法找到根源的问题。每当我渲染模型时,它在投影视图中看起来都很好,但是一旦我切换到正交视图,我就会遇到一些奇怪的剪裁问题。

如前所述,我正在使用 LibGDX,如果您需要 OpenGL 等价物,请询问。以下是部分代码,可根据要求提供更多内容:

    public Camera(String type) {
    if (type.contains("perspective")) {
        position = new Vector3(1, 2, 1);
        lookAt = new Vector3(0, 1, 0);

        perspectiveCamera = new PerspectiveCamera(67,
                Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        perspectiveCamera.position.set(position);
        perspectiveCamera.lookAt(lookAt);
        perspectiveCamera.near = 1f;
        perspectiveCamera.far = 300f;
        perspectiveCamera.update();
    }
    if (type.contains("orthographic")) {
        position = new Vector3(1, 1, 1);
        lookAt = new Vector3(0, 0, 0);
        orthographicCamera = new OrthographicCamera(
                Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        orthographicCamera.position.set(position);
        orthographicCamera.lookAt(lookAt);
        orthographicCamera.near = 1f;
        orthographicCamera.far = 300f;
        orthographicCamera.zoom = 0.005f;

        orthographicCamera.update();
    }
}

----换班

@Override
public void render() {
    Vector3 translate = new Vector3(isTrue(input.D)
            + (isTrue(input.A) * -1), 0, isTrue(input.W)
            + (isTrue(input.S) * -1)).nor().crs(
            new Vector3(0.05f, 0.05f, 0.05f));
    camera.perspectiveCamera.translate(translate);//Change to orthographic accordingly
    camera.perspectiveCamera.update();//Change to orthographic accordingly

    // Temporary (testing)
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
    batch.begin(camera.getPerspectiveCamera());//Change to orthographic accordingly

    for (int n = 0; n < world.entities.size; n++) {
        instance = world.entities.get(n).modelInstance;
        instance.transform.setToTranslation(world.entities.get(n).position);
        world.entities.get(n).modelInstance = instance;
        batch.render(world.entities.get(n).modelInstance, environment);
    }

    batch.end();
}

【问题讨论】:

  • 在我看来,深度测试已被禁用。
  • 奇怪的是,depthtest 似乎完全隐藏了它。 LibGDX 让我很困惑。
  • 您为什么要尝试使用正射相机进行 3d 拍摄?通常使用透视相机。
  • 我有我的理由,我发现了错误!事实证明,LibGDX 有一种比 .obj / .fbx 文件更受欢迎的本机文件格式。使用转换器似乎已经解决了这个问题。

标签: java libgdx clipping orthographic


【解决方案1】:

通过将文件转换为 LibGDX 的本机文件格式解决

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2014-12-09
    • 2019-07-06
    • 2019-07-02
    • 1970-01-01
    • 2023-04-06
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多