2014-12-17 8 views
9

С Unity скрипт CardboardHead добавляется в основную камеру и обрабатывает все довольно красиво, но мне нужно иметь возможность «повторить» просмотр по запросу и единственный вариант I см. до сих пор, чтобы распределить всю сцену, и похоже, что это то, что было бы из первых рук, и я не могу найти что-либо в документах.Рецензент или вид переориентации с картонной SDK на Unity

С Oculus Mobile SDK (GearVR) это будет OVRCamera.ResetCameraPositionOrientation (Vector3.one, Vector3.zero, Vector3.up, Vector3.zero); хотя они прекрасно справляются с этим каждый раз, когда зритель надевается, поэтому он редко нужен там.

ответ

6

В CardboardHead есть параметр «target», который позволяет использовать другой игровой объект в качестве ссылки для вращения. Или вы можете использовать фиктивный родительский игровой объект. В любом случае, когда вы захотите вернуться, вы установите поворот этого ссылочного объекта так, чтобы CardboardHead теперь указывал вперед. Добавьте эту функцию к сценарию на CardboardHead (или просто добавить его в этот сценарий):

public void Recenter() { 
    Transform reference = target != null ? target : transform.parent; 
    if (reference != null) { 
     reference.rotation = Quaternion.Inverse(transform.rotation) * reference.rotation; 
     // next line is optional -- try it with and without 
     reference.rotation = Quaternion.FromToRotation(reference.up, Vector3.up) * reference.rotation; 
    } 
} 
6

Cardboard.SDK.Recenter(); должен сделать трюк.

Ориентация приемника Добавлена ​​функция Recenter() к Cardboard.SDK, которая сбрасывает головной трекер, поэтому текущий заголовок телефона становится направлением вперед (+ ось Z).

Не удалось найти документы для API/SDK, но он находится в release notes для обновления v0.4.5.

+0

Это использовалось, чтобы сделать трюк в v0.7.0, но поскольку я обновился до 0.9.1, он больше не работает. Очень странно. – Pedro

1

Вы можете повернуть Картонную Главную, чтобы указать в определенном направлении.

Это то, что сработало для меня, когда я хотел, чтобы приложение начало указывать определенным образом. Поскольку CardboardHead указывает на Vector3.zero при запуске, если цель не назначена, я запускал функцию во время Start() для CardboardMain, которая указывала бы в том направлении, которое я хотел.

Конечно, если вы уже вращаете CardboardMain по какой-либо другой причине, возможно, этот метод можно использовать, создав родителя CardboardHead (child of CardboardMain) и сделав то же самое.

1

Этот вопрос немного старый, но для Google VR SDK 1.50+ вы можете сделать

transform.eulerAngles = new Vector3(newRot.x, newRot.y, newRot.z); 
UnityEngine.VR.InputTracking.Recenter(); 

также, если вы не хотите запутаться вы также должны поймать экземпляр GvrEditorEmulator и центрирования его как Что ж.

#if UNITY_EDITOR 
     gvrEditorEmulator.Recenter(); 
#endif 

центрирование GvrEditorEmulator, хотя, кажется, не очень хорошо работает в данный момент, но если отключить его, вы увидите центрирования работы для основной камеры.

 Смежные вопросы

  • Нет связанных вопросов^_^