GVR MonoscopicView中的中央摄像头

时间:2019-03-18 16:43:01

标签: android google-vr google-vr-sdk

我正在使用GVR Android库1.190版,并试图在video360示例项目中播放360度和180度视频。 在这两种情况下,2D视图(MonoscopicView)都可以很好地开始播放,但是查看器摄像机的位置永远不会居中于视频的中心。相反,它以水平轴为中心随机偏离中心。在多个设备上的行为相同。 任何人都知道如何在2D视图开始时将视图居中到视频中心吗?

1 个答案:

答案 0 :(得分:1)

每次我的活动向其注册侦听器时,来自Sensor.TYPE_GAME_ROTATION_VECTOR的传感器数据都具有非常不同的值(角度)。只需倾斜一下电话即可获得真正不同的值。不同的设备也有不同的响应,但是它们都有偏移读数。 这导致初始视角通常从视频中心向左或向右90度定位。 多亏了post,我得以计算出初始航向偏移并旋转电话位置矩阵以进行补偿。

添加初始值为0的成员变量private float initialHeading。 然后,在PhoneOrientationListener的onSensorChanged中,将Android旋转到OpenGL矩阵后,添加以下代码:

if (initialHeading == 0) {
    initialHeading = (float) ((angles[0] + 2 * Math.PI) % (2 * Math.PI));
}
float angle = (float) ((Math.PI - initialHeading) * 180 / Math.PI);
Matrix.rotateM(phoneInWorldSpaceMatrix, 0, angle, 0, 1, 0);