Руководство разработчика по оценке освещения для Unity

Узнайте, как использовать оценку освещения в своих приложениях.

Предпосылки

Прежде чем продолжить, убедитесь, что вы понимаете основные концепции AR и как настроить сеанс ARCore .

Кроме того, у вас должен быть установлен и настроен Unity с помощью ARCore SDK для Unity 1.10.0 или более поздней версии. Если нет, см. краткий обзор Unity для Android .

Создайте и запустите образец приложения

Начиная с ARCore SDK для Unity 1.10, в образце HelloAR для Unity по умолчанию включен режим экологического HDR с отражениями ( EnvironmentalHDRWithReflections ).

  1. Создайте новый проект в Unity на основе быстрого старта .

  2. В Build Settings > Scenes in Build укажите сцену из Assets/GoogleARCore/Examples/HelloAR/Scenes/HelloAR.unity .

  3. Убедитесь, что ваше устройство подключено к вашему компьютеру, а затем нажмите « Создать и запустить» . Unity встраивает ваш проект в Android APK, устанавливает его на устройство и запускает.

    1. Найдите место с различными слоями освещения и тени в одной сцене.

    2. Переместите устройство, чтобы определить плоскости для размещения. Когда вы перемещаете свое устройство, приложение автоматически обнаруживает плоские поверхности и рисует ромбовидную сетку.

    3. Нажмите на сетку, чтобы разместить робота Android на поверхности.

      Обратите внимание на зеркальные блики, тени и окружающий свет, которые визуализировались на модели.

    4. Попробуйте добавить новых роботов Android в разные части сцены. Обратите внимание, что каждая модель по-своему соответствует освещению.

Настройка оценки освещения в вашей сцене

Вы можете настроить Unity для выбора одного из двух режимов окружающей среды HDR или режима интенсивности окружающей среды. После того, как вы установили режим оценки освещения, добавьте в сцену префаб «Environmental Light». Этот префаб автоматически применит оценку освещения ARCore в вашей сцене.

  • Когда для параметра Light Estimation Mode установлено значение Environmental HDR (с отражениями или без них), компонент Environmental Light будет обновлять вращение и цвет направленного света, датчик окружения (через RenderSettings.ambientProbe ) и датчик отражения (через RenderSettings.customReflection ). .

  • Если для параметра Light Estimation Mode установлено значение Ambient Intensity , компонент Environmental Light установит свойство _GlobalLightEstimation , которое используется в ARCore/DiffuseWithLightEstimation и ARCore/SpecularWithLightEstimation и других пользовательских шейдерах, чтобы настроить окончательный вывод цвета в соответствии с цветом изображения с камеры.

Вы также можете отключить оценку освещения.

Чтобы настроить оценку освещения для новых или существующих проектов:

  1. Откройте существующий проект Unity.

    В противном случае создайте новый проект Unity, а затем выполните один из следующих шагов:

    • Импорт ARCore для Unity SDK : выберите « Активы» > «Импорт пакета» > «Пользовательский пакет », затем импортируйте arcore-unity-sdk*.unitypackage со всеми включенными параметрами.

    • Создайте новую конфигурацию сеанса : выберите Assets > Create > Google ARCore > SessionConfig .

  2. Если вы работаете над новым проектом Unity, настройте префабы ARCore:

    1. Из папки Project перетащите префабы ARCore Device и Environment Light в иерархию, чтобы добавить их как GameObjects.

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

      Теперь ваша иерархия должна выглядеть примерно так:

  3. Выберите режим Light Estimation в конфигурации сеанса:

    1. В иерархии вашего проекта щелкните игровой объект устройства ARCore , затем дважды щелкните конфигурацию сеанса.

    2. В Инспекторе конфигурации сеанса щелкните раскрывающийся список Light Estimation Mode и выберите предпочтительный режим (или вообще отключите оценку освещения).

      (По умолчанию для новых проектов используется Экологический HDR с отражениями .)

  4. Выберите шейдер, соответствующий режиму оценки освещения:

    • Если вы хотите использовать режим Environmental HDR , вы можете просто использовать встроенные мобильные шейдеры Unity или стандартные шейдеры.

    • Если вы хотите использовать режим Ambient Intensity , вам нужно будет использовать пользовательский шейдер, который применяет термин _GlobalLightEstimation к окончательному выводу цвета для визуализации вашего виртуального объекта. Для справки см. ARCore/DiffuseWithLightEstimation и ARCore/SpecularWithLightEstimation .

Отрегулируйте качество теней

При использовании ARCore/TransparentShadow , включенного в ARCore SDK для Unity, мы рекомендуем начинать со следующих настроек качества :

Имущество Параметр
Тени Жесткие и мягкие тени
Разрешение теней Высокое разрешение
Теневая проекция Плотная посадка
Расстояние тени 20
Режим теневой маски Расстояние Теневая маска
Смещение тени вблизи плоскости 0
Каскады теней Без каскадов