Узнайте, как использовать оценку освещения в своих приложениях.
Предпосылки
Прежде чем продолжить, убедитесь, что вы понимаете основные концепции AR и как настроить сеанс ARCore .
Кроме того, у вас должен быть установлен и настроен Unity с помощью ARCore SDK для Unity 1.10.0 или более поздней версии. Если нет, см. краткий обзор Unity для Android .
Создайте и запустите образец приложения
Начиная с ARCore SDK для Unity 1.10, в образце HelloAR для Unity по умолчанию включен режим экологического HDR с отражениями ( EnvironmentalHDRWithReflections
).
Создайте новый проект в Unity на основе быстрого старта .
В Build Settings > Scenes in Build укажите сцену из
Assets/GoogleARCore/Examples/HelloAR/Scenes/HelloAR.unity
.Убедитесь, что ваше устройство подключено к вашему компьютеру, а затем нажмите « Создать и запустить» . Unity встраивает ваш проект в Android APK, устанавливает его на устройство и запускает.
Найдите место с различными слоями освещения и тени в одной сцене.
Переместите устройство, чтобы определить плоскости для размещения. Когда вы перемещаете свое устройство, приложение автоматически обнаруживает плоские поверхности и рисует ромбовидную сетку.
Нажмите на сетку, чтобы разместить робота Android на поверхности.
Обратите внимание на зеркальные блики, тени и окружающий свет, которые визуализировались на модели.
Попробуйте добавить новых роботов 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
и других пользовательских шейдерах, чтобы настроить окончательный вывод цвета в соответствии с цветом изображения с камеры.
Вы также можете отключить оценку освещения.
Чтобы настроить оценку освещения для новых или существующих проектов:
Откройте существующий проект Unity.
В противном случае создайте новый проект Unity, а затем выполните один из следующих шагов:
Импорт ARCore для Unity SDK : выберите « Активы» > «Импорт пакета» > «Пользовательский пакет », затем импортируйте
arcore-unity-sdk*.unitypackage
со всеми включенными параметрами.Создайте новую конфигурацию сеанса : выберите Assets > Create > Google ARCore > SessionConfig .
Если вы работаете над новым проектом Unity, настройте префабы ARCore:
Из папки Project перетащите префабы ARCore Device и Environment Light в иерархию, чтобы добавить их как GameObjects.
Префабы, которые вы только что импортировали, уже имеют камеру и направленный свет. Удалите камеру по умолчанию и игровые объекты направленного света по умолчанию из корня той же иерархии.
Теперь ваша иерархия должна выглядеть примерно так:
Выберите режим Light Estimation в конфигурации сеанса:
В иерархии вашего проекта щелкните игровой объект устройства ARCore , затем дважды щелкните конфигурацию сеанса.
В Инспекторе конфигурации сеанса щелкните раскрывающийся список Light Estimation Mode и выберите предпочтительный режим (или вообще отключите оценку освещения).
(По умолчанию для новых проектов используется Экологический HDR с отражениями .)
Выберите шейдер, соответствующий режиму оценки освещения:
Если вы хотите использовать режим Environmental HDR , вы можете просто использовать встроенные мобильные шейдеры Unity или стандартные шейдеры.
Если вы хотите использовать режим Ambient Intensity , вам нужно будет использовать пользовательский шейдер, который применяет термин
_GlobalLightEstimation
к окончательному выводу цвета для визуализации вашего виртуального объекта. Для справки см.ARCore/DiffuseWithLightEstimation
иARCore/SpecularWithLightEstimation
.
Отрегулируйте качество теней
При использовании ARCore/TransparentShadow
, включенного в ARCore SDK для Unity, мы рекомендуем начинать со следующих настроек качества :
Имущество | Параметр |
---|---|
Тени | Жесткие и мягкие тени |
Разрешение теней | Высокое разрешение |
Теневая проекция | Плотная посадка |
Расстояние тени | 20 |
Режим теневой маски | Расстояние Теневая маска |
Смещение тени вблизи плоскости | 0 |
Каскады теней | Без каскадов |