中心相机在GVR MonoscopicView中

问题描述 投票:1回答:1

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

android google-vr google-vr-sdk
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.