Я никогда раньше не сталкивался с подобной проблемой, и все, что я пытался исправить, ничего не дало.
У нас есть приложение, использующее встроенную поддержку Google Cardboard в Unity, которое доступно на Android.и iOS.Эта проблема никогда не возникала на Android раньше, а также не появляется в другом проекте, который мы создали с использованием той же версии Unity (2018.1.1).
Эта проблема возникает при настройке отдельных окон просмотра длякаждый глаз кажется запутанным.Соотношение сторон было сжато по вертикали и растягивает отображаемое изображение.Вдобавок ко всему, левый и правый глаз, кажется, обращены в поместье с косоглазием, где они должны смотреть более или менее в одном и том же направлении.Вот изображение, представляющее проблему, с линией, нарисованной вокруг текущей области отображения для каждого глаза: Картонный дисплей iOS
Это изображение iPhone 6, однако оно было воспроизведено нанесколько устройств, включая iPhone 8, iPhone X и несколько других, которые я не могу вспомнить.Как я упоминал ранее, это никогда не происходило на Android, а также не появляется на iOS в аналогичном проекте установки.
У меня есть подозрение, что это как-то связано с настройкой моих сцен Unity, поэтому я 'Дадим краткое описание того, как все работает в данный момент.
Сцена 1 - Сцена меню Эта сцена полностью основана на пользовательском интерфейсе (как и большинство меню) и настроена в Книге портрета.Он имеет основную камеру, которая остается в стандартном режиме (не-VR).
Сцена 2 - Сцена опыта Эта сцена переключается в альбомную ориентацию с использованием кода Screen.orientation = ScreenOrientation.Landscape
.В сцене есть одна камера, которая изначально находится в стандартном режиме (не-VR), но может переключаться в VR с помощью кнопки с этим кодом:
public void SetStereoViewState(bool isActive) {
XRSettings.enabled = isActive;
#if !UNITY_EDITOR
// if device is a tablet (> 7" screen) always disable cardboard switch
// otherwise display only when cardboard mode is inactive
overlayCanvas.gameObject.SetActive(ScreenUtils.IsTabletDevice ? false : !isActive);
// needed to fix the aspect ratio when switching back to mono mode
vrCamera.ResetAspect();
#endif
Debug.Log("XRManager::SetStereoViewState | Enabling VR: " + isActive);
}
В предыдущей версииэтого приложения (под управлением Unity 2017.2.0p2) это никогда не было проблемой, и это не проблема отдельного проекта, созданного также в 2018.1.1.
Что я уже пробовал
camera.ResetAspect()
- Это было здесь, чтобы исправить проблемы с аспектом при переключении для VR на не-VR.Я включил и отключил это при переключении для всех сторон VR -> не-VR, не-VR -> VR и т. Д. Я также отложил это до следующего кадра, но без каких-либо изменений в результатах - ВключениеРежим «Картон» в сцене «Пейзаж». В прошлом я всегда настраивал свою сцену на
XRSettings.LoadDeviceByName({device_name})
при запуске, в этом случае XRSettings.LoadDeviceByName("cardboard")
, но не включал ее с помощью XRDevice.enabled = true
до тех пор, пока она действительно не понадобится.| VR XRDevice.enabled = true
- Non-VR XRDevice.enabled = false
Настройка камеры Не думаю, что это актуально, так как работает VRотлично работает на Android, но вот моя настройка камеры по умолчанию: Настройка камеры Unity
Я рассмотрел вопрос о настройке нескольких камер (для левого и правого глаза), но не вижу, какэто будет иметь значение, так как соотношение сторон является одной из проблем.Если кто-то сталкивался с подобной проблемой и имеет исправление, или у него есть какой-либо совет относительно того, как подходить к ситуации по-другому, это было бы здорово.
ПРИМЕЧАНИЕ: В настоящее время мы используем Unity2018.1.1, но я также пытался до самой последней (в то время) 2018.1.5.Понижение до 2017.xx на самом деле не возможно из-за HttpWebRequests и несколько разочаровывающих требований Apple к IPv6, которые нарушаются до Unity 2018.xx