加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Unity Cardboard Orientation Landscape Right Up

发布时间:2020-12-15 23:27:02 所属栏目:百科 来源:网络整理
导读:嗨,我有一个Unity应用程序,它使用谷歌Cardboard SDK启用立体视图,所以我将有一个支持VR的应用程序.我的应用程序运行完美. 但是如果我将播放器设置方向设置为自动方向,只有横向左侧和允许横向右侧,则会出现问题.当它处于横向左侧时,一切都按照正常情况工作,但
嗨,我有一个Unity应用程序,它使用谷歌Cardboard SDK启用立体视图,所以我将有一个支持VR的应用程序.我的应用程序运行完美.

但是如果我将播放器设置方向设置为自动方向,只有横向左侧和允许横向右侧,则会出现问题.当它处于横向左侧时,一切都按照正常情况工作,但是当它处于横向右侧时,纸板视图将转动180度(设置按钮移动到屏幕的底部)但是我的统一对象没有.因此,我有一个颠倒的对象.

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

谢谢.

解决方法

看起来SDK用于读取陀螺仪的本机代码仅针对Landscape Left方向进行了硬编码.这可以通过编辑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,180);
      break;
  }
  headPose.Set(headPose.Position,headPose.Orientation * fixOrientation);
}

我建议在Cardboard设置中关闭Neck Model Scale(将其设置为0),因为它不会出现在此代码中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读