【问题标题】:LibGDX + ARCore: Usage of multiple cameras and viewportsLibGDX + ARCore:使用多个相机和视口
【发布时间】:2018-01-10 11:26:58
【问题描述】:

我有一个结合了 LibGDX 和 ARCore 的应用,基于 https://github.com/google/helloargdx 这非常适合全屏。

现在我有一个不同的要求:我垂直分割横向屏幕,现在想要从 ARCore 相机控制的透视相机向左侧渲染世界,第二次使用外部控制的不同透视相机渲染世界右边。

对于“背景”视频(物理设备相机),这已经可以工作了,但我现在卡在 LibGDX 透视相机的视口(或其他)上。

ARCore 示例设置透视相机的值如下:

float vm[] = new float[16];

Camera arCamera = frame.getCamera();
arCamera.getProjectionMatrix(vm, 0, camera.near, camera.far);
camera.projection.set(vm);
arCamera.getViewMatrix(vm, 0);
camera.view.set(vm);
camera.combined.set(camera.projection);
Matrix4.mul(camera.combined.val, camera.view.val);

但是我现在(在上述之后)如何将渲染限制在屏幕的左侧?旧屏幕设置的“x-middle”现在应该是物理屏幕的 1/4。

【问题讨论】:

    标签: opengl libgdx google-project-tango perspectivecamera arcore


    【解决方案1】:

    问题解决了。事实证明,甚至不需要使用视口等,我们可以简单地通过使用来限制表面上的绘图区域

    HdpiUtils.glViewport(0, 0, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight());
    

    但是您需要注意,您现在还需要通过以下方式转换屏幕点击:

    int x = Gdx.input.getX() * 2;
    int y = Gdx.input.getY();
    

    因为将视口缩小到原始屏幕的一部分,但所有输入处理方法都希望屏幕点击源自全屏。

    【讨论】:

    • 您能分享一下您是如何修复 helloargdx 中的错误的 - github.com/google/helloargdx/issues/3
    • 我没有绘制平面,这似乎是错误的来源。因此,如果您不想显示窗格(并且在您最喜欢的生产环境中确实不想显示),它应该不会影响您。
    • 谢谢。我会试试看效果如何
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2012-12-05
    • 2015-12-06
    相关资源
    最近更新 更多