嗨,我有一个使用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),因为该代码不会正确显示。