嗨,我有一个使用Google Cardboard SDK启用立体视图的Unity应用,因此我将启用VR。我的应用程序运行正常。

但是,如果我将播放器设置方向设置为自动方向(仅允许左横向和右横向),则会出现问题。当它在左侧风景中时,一切正常运行,但是当它在右侧风景中时,纸板视图将旋转180度(“设置”按钮移到屏幕底部),但我的统一对象却没有。因此,我有一个颠倒的对象。

有什么办法解决这个问题?

谢谢。

最佳答案

SDK用来读取陀螺仪的本机代码似乎仅被硬编码为“横向向左”。通过编辑BaseCardboardDevice.cs并用以下代码替换UpdateState()的定义,可以解决此问题:

private Quaternion fixOrientation;

public override void UpdateState() {
  GetHeadPose(headData, Time.smoothDeltaTime);
  ExtractMatrix(ref headView, headData);
  headPose.SetRightHanded(headView.inverse);

  // Fix head pose based on device orientation (since native code assumes Landscape Left).
  switch (Input.deviceOrientation) {
    case DeviceOrientation.LandscapeLeft:
      fixOrientation = Quaternion.identity;
      return;
    case DeviceOrientation.LandscapeRight:
      fixOrientation = Quaternion.Euler(0, 0, 180);
      break;
  }
  headPose.Set(headPose.Position, headPose.Orientation * fixOrientation);
}


我建议也在Cardboard设置中关闭Neck Model Scale(将其设置为0),因为该代码不会正确显示。

07-28 03:25