您好,我有一个 Unity 应用程序,它使用 google Cardboard SDK 来启用立体视图,因此我将有一个支持 VR 的应用程序。我的应用程序运行得很好。
但是,如果我将播放器设置方向设置为自动方向,并且只允许向左横向和向右横向,则会出现问题。当它处于横向左侧时,一切正常,但当处于横向右侧时,纸板视图将旋转 180 度(设置按钮移至屏幕底部),但我的统一对象不会。因此我有一个颠倒的物体。
有什么方法可以解决这个问题吗?
Thanks.
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 设置中的颈部模型比例(将其设置为 0),因为使用此代码不会正确显示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)