Впервые на русском: Документация Unity для разработчиков. Начало работы с VR Development. Полезная информация для разработки виртуальной реальности

Продолжаем публикацию эксклюзивной информации для разработчиков Unity. Новый раздел посвящён полезной информации для разработки виртуальной реальности.

  1. Документация Unity для разработчиков:
    1. Обзор виртуальной реальности
    2. Проекты сэмплов для виртуальной реальности
    3. Начало работы с VR Development. Основы
    4. Утилиты Oculus Unity
    5. Начало работы с VR Development. Создание первого проекта виртуальной реальности
    6. Начало работы с VR Development. Полезная информация для разработки виртуальной реальности
    7. Обзор VREyeRaycaster, VRInput и VRInteractiveItem
    8. Обзор SelectionRadial и SelectionSlider
    9. Примеры взаимодействия в VRSampleScenes. Взаимодействия в Menu scene
    10. Примеры взаимодействия в VRSampleScenes. Взаимодействие в Лабиринте
    11. Примеры взаимодействия в VRSampleScenes. Взаимодействие Лётчика
    12. Примеры взаимодействия в VRSampleScenes. Взаимодействие в Тире 180 и Тире 360
    13. Вращение и позиционирование головы в виртуальной реальности
    14. Взаимодействие с тачпадом и клавиатурой во время игры в виртуальной реальности
    15. Примеры VRInput в VR Samples
    16. Пользовательские интерфейсы для виртуальной реальности
    17. Взаимодействие с пользовательским интерфейсом
    18. Свободное сглаживание текста для виртуальной реальности
    19. Движение в виртуальной реальности
    20. Движение в сценах VR Sample
    21. Старт проекта виртуальной реальности. DK2
    22. Старт проекта виртуальной реальности на Gear VR
    23. Публикация в магазине Oculus
    24. Оптимизация виртуальной реальности в Unity. Введение

Хотя разработка виртуальной реальности очень похожа на стандартную разработку в Unity, есть некоторые отличия, о которых нужно знать.

Частота кадров в редакторе

Если вы просматриваете свой проект в редакторе, имейте в виду, что у вас может быть некоторое отставание и искажение, так как ваш компьютер дважды воспроизводит один и тот же контент. Рендеринг Unity IDE также требует некоторых дополнительных расходов, поэтому лучше также иногда проверять производительность на целевых устройствах, создавая сборку своего проекта и запуская его напрямую.

Движение камеры

Вы не можете перемещать камеру виртуальной реальности непосредственно в Unity. Если вы хотите изменить положение и поворот, вам необходимо убедиться, что он является родным для другого GameObject и применить изменения к первоначальной трансформации.

Содержимое внутри камер

Например, посмотрите в сценариях Flyer и Maze проекта VR Samples, как мы перемещаем камеру внутри сцены.

Узлы камер

Unity не создаёт камеры с левым и правым глазом. Если вы хотите получить позиции этих узлов, вы должны использовать класс InputTracking.

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

 

using UnityEngine;

using UnityEngine.VR;

 

public class UpdateEyeAnchors : MonoBehaviour

{

GameObject[] eyes = new GameObject[2];

string[] eyeAnchorNames = { «LeftEyeAnchor», «RightEyeAnchor» };

 

void Update()

{

for (int i = 0; i < 2; ++i)

{

// If the eye anchor is no longer a child of us, don’t use it

if (eyes[i] != null && eyes[i].transform.parent != transform)

{

eyes[i] = null;

}

 

// If we don’t have an eye anchor, try to find one or create one

if (eyes[i] == null)

{

Transform t = transform.Find(eyeAnchorNames[i]);

if (t)

eyes[i] = t.gameObject;

 

if (eyes[i] == null)

{

eyes[i] = new GameObject(eyeAnchorNames[i]);

eyes[i].transform.parent = gameObject.transform;

}

}

 

// Update the eye transform

eyes[i].transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);

eyes[i].transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);

}

}

}

 

Эффекты изображения в виртуальной реальности

Многие эффекты изображения будут слишком «дорогими» для использования в ваших проектах виртуальной реальности. Поскольку вы рендерите свою сцену дважды – один раз для каждого глаза – большинство эффектов изображения, которые создаются за счёт производительности, могут стать слишком «дорогостоящими» для использования вообще из-за их влияния на частоту кадров.

Поскольку виртуальная реальность представляет глаза пользователя в виртуальном пространстве, некоторые эффекты изображения не будут иметь смысла в виртуальной реальности. Например, глубина поля, размытия и вспышки объективов обычно не имеют смысла, поскольку они не рассматриваются в реальной жизни. Если шлем виртуальной реальности в конечном итоге поддерживает отслеживание глаз, глубина поля может иметь смысл.

Некоторые эффекты могут быть использованы: Anti-Aliasing может быть полезным (особенно при низком разрешении устройств виртуальной реальности), Color Grading можно определенно использовать (см. блог Unity для дополнительной информации), а Bloom может работать в некоторых играх, поэтому лучше всего – экспериментировать и смотреть, можно ли использовать некоторые эффекты в вашей игре.

В то время как Unity поставляет некоторые подходящие эффекты изображения, которые доступны сразу (Assets > Import Package > Effects), в Asset Store также есть много дополнительных отличных эффектов изображения, таких как Colorful, Chromatica, Amplify Color и многие другие.

Шкала рендеринга

В зависимости от сложности вашей сцены виртуальной реальности и используемого вами оборудования вы можете изменить масштаб рендеринга. Это контролирует пропорции texel:pix перед коррекцией объектива, что означает, что вы можете балансировать между производительностью для резкости.

Это может быть установлено через код и доступно через http://docs.unity3d.com/ScriptReference/VR.VRSettings-renderScale.html. Настройки можно легко изменить, используя следующий скрипт:

 

using UnityEngine;

using System.Collections;

using UnityEngine.VR;

 

namespace VRStandardAssets.Examples

{

public class ExampleRenderScale : MonoBehaviour

{

[SerializeField] private float m_RenderScale = 1f;              //The render scale. Higher numbers = better quality, but trades performance

 

void Start ()

{

VRSettings.renderScale = m_RenderScale;

}

}

}

 

Вы можете увидеть базовый пример этого в наших VR Samples – он используется в Scenes/Examples/RenderScale. Он также используется в сцене MainMenu.

Пример изменения шкалы рендеринга

Масштаб рендеринга по умолчанию в Unity равен 1.0:

Если мы увеличим это до 1,5, вы увидите, что предмет выглядит намного более четким:

И, наконец, если мы уменьшим шкалу рендеринга до 0,5, вы можете увидеть, что теперь предмет имеет намного больше пикселей:

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

Теперь вы должны ознакомиться с основами интеграции виртуальной реальности в Unity, как применять движение камеры и как использовать эффекты изображения по сравнению с не-VR-разработкой.

 

Примечание: Данный материал представлен для ознакомления, при перепечатывании ссылка на оригинал обязательна. Если вы хотите принять участие в помощи проекту, пишите на editor@vrgeek.ru

Если вы разработчик и вы хотите продолжить свою карьеру в лучших компаниях России, пишите на editor@vrgeek.ru с пометкой «Работа мечты», и мы поможем вам с этим.