android - GVR MonoscopicView 中的中心相机

标签 android google-vr google-vr-sdk

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

最佳答案

事实证明,每次我的 Activity 向其注册监听器时,来自 Sensor.TYPE_GAME_ROTATION_VECTOR 的传感器数据都具有非常不同的值(角度)。只需稍微倾斜手机即可获得真正不同的值。不同的设备也有不同的 react ,但它们都有偏移读数。 这导致初始视角定位(通常)从视频中心向左或向右 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);

关于android - GVR MonoscopicView 中的中心相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55226172/

相关文章:

android - 用gradle从2个依赖 jar 创建一个jar

android - 如何在 VR 视频上叠加 "play button"?

javascript - Google VRView for Web - 添加热点

android - Google Awareness API、无效的 API key 、崩溃

android:在google doc中打开pdf时,webview有时会显示空白屏幕

android ffmpeg .so 下载

javascript - Google Vr - 无法加载纹理

java - Android 谷歌 VrVideoView 带 RTSP 源码

安卓全景 View

ios - 使用 iOS 版 GoogleVR (GoogleCardboard) 在 Unity 中创建单一 View