Рендеринг в AR: реализация и базовые правила
Мы продолжаем серию статей на тему AR-разработки. На данном этапе наше AR-устройство определило свое местоположение, плоскости, карту окружения, положение камеры и другие параметры. Теперь мы переходим к выстраиванию 3D-сцены с помощью любого движка, приступив к рендерингу моделей. В этой статье мы расскажем вам все о рендеринге в дополненной реальности.
Что такое рендеринг?
Говоря максимально просто, это — визуализация. А точнее процесс создания плоского изображения из трехмерного пространства. Рендеринг используется художниками в видеоиграх, кино, анимации и архитектурном проектировании.
Это технически сложный процесс. В 2D-изображение нужно объединить текстуры и объемные предметы трехмерной сцены. Обычно рендеринг — это завершающий этап работы. После, 3D-художники могут лишь заниматься постобработкой готовой сцены. Так рендеринг с предсказанием освещения является третьей неотъемлемой составляющей любого AR-проекта.
Метод Light Estimation и варианты его реализации
Light Estimation или оценка освещенности — это метод, который использует законы реального природного освещения для передачи их на 3D-объекты. Было бы идеально создавать настолько реалистичное освещение объектов, чтобы их было не отличить от реальных, но до этого еще далеко. Рендер легко передает материал объектов, отрисованные 3D-художником, в то время, как с освещением дела обстоят намного сложнее.
В отличие от игр с готовым статичным светом, в AR освещение постоянно меняется в зависимости от положения пользователя. Поэтому объекты должны освещаться в зависимости от окружающих источников света, например, солнца на улице или ламп и окна в комнате.
Есть три варианта для грамотной оценки освещенности пространства.
Сферические функции и обратный рендеринг
Чтобы определить, как луч от источника света попадает на предмет и в камеру, нам нужна dense-карта, а также уравнение рендеринга. Посчитав уравнение наоборот, по яркости каждого пикселя, мы вычислим, где находится источник света. Так, проводя несколько лучей, мы получаем наиболее вероятные решения и можем примерно определить, где находятся главные источники света и насколько они яркие.
Более быстрый метод определения освещения — сферические функции. Если вы видите, как 3D-объект на свету меняет яркость при перемещении в тень, это делается именно с помощью этого метода вычисления. Сферические функции представляют собой гистограмму, где чем проще форма функции, тем мягче карта освещения, сложнее — точнее.
Нейросети
Цель машинного обучения — предсказать результат по входным данным. Чем разнообразнее они будут, тем проще машине найти закономерности и дать точный результат. В этом случае необходимо собрать как можно больше данных, чтобы нейросеть выдавала вам карту освещения, основываясь на готовых фото-пробах и 3D-примерах моделей.
Положение солнца и тени
Многие AR-приложения требуют доступ к геолокации устройства, и неспроста. Это делается для определения положения солнца в зависимости от того, где находится пользователь. Рассчитать это можно с помощью простейших формул. Также определяется, куда будет падать тень и насколько мягкой она будет. Такой метод отлично работает на улицах, но не подходит для закрытых пространств.
Метод Environmental mapping
Кубическая карта — это метод, который используется в 3D-графике для моделирования отражений на поверхностях объектов. Это отличный способ сделать более реалистичный рендеринг, который сейчас пользуется большой популярностью. Кубическая карта состоит из 6 направлений окружающего нас мира, которые собираются в куб.
AR-устройство постоянно определяет и уточняет изображение окружающего мира по всем 6 направлениям. Для этого во многих шлемах есть задняя камера, а некоторые приложения используют обе камеры телефона, чтобы увидеть, что за спиной у пользователя. Также для того, чтобы дорисовать недостающие части пространства, можно использовать нейросети. Все равно пользователь видит только ту часть мира, на которую смотрит, боковые части могут быть размытыми, чтобы не грузить систему.
Базовые составляющие рендеринга
Люди неосознанно воспринимают тонкие подсказки или сигналы о том, как предметы или живые существа освещаются в реальной среде. Когда у виртуального объекта отсутствует тень или когда глянцевый материал не отражает окружающее пространство, пользователи чувствуют, что объект не вписывается в конкретную сцену, даже если они не могут объяснить, почему.
Поэтому рендеринг AR-объектов в соответствии с освещением в сцене имеет решающее значение для погружения и более реалистичного пользовательского опыта. Рассмотрим базовые составляющие хорошего реалистичного рендеринга.
Направление света (Light Direction)
Мы уже рассказали, что с помощью обратного рендеринга вычисляются источники света. Можно определить один источник света и рендерить его на все объекты, что намного удобнее, чем освещать каждый объект в отдельности. Так мы получаем направленный правильно луч света.
Общая освещенность кадра (Ambient Light)
Некая точка отсчета для дальнейшего рендеринга. Это общий рассеянный свет, который исходит из окружающей среды, освещая все вокруг. Обычно представлена интенсивностью света и цветовой температурой.
Рефлекс
От зеркальных и матовых поверхностей свет отражается по-разному. Так металл будет отражать окружающую среду, как зеркало, а матовый предмет будет передавать все рассеянно. Разные поверхности также отражают цвета окружающего пространства и предметов. Например, если поставить рядом с белым шаром синий квадрат, то шар приобретет голубоватый оттенок.
Блики
Это отблески на поверхности предметов, которые отражают прямой источник света. Подсветка на объекте изменяется относительно положения зрителя в сцене.
Затенение
Затенение — это интенсивность света в разных областях объекта. Оно зависит от угла обзора зрителя и того, насколько близко расположен источник света. Разные части одного и того же объекта могут затемняться по-разному. Например, если свет падает на шар справа, то затенение и соответственно тень будут располагаться слева.
Тени
Тени добавляют реалистичности сцене и позволяют зрителю проследить пространственные отношения между объектами. Они дают большее ощущение глубины нашей 3D-сцене и объектам. Тени могут падать от предмета, который освещен и на предмет от других объектов.
Также можно воспользоваться быстрым методом и построить карту теней. Идея ее создания довольно проста: мы визуализируем сцену с точки зрения источника света, и все, что мы видим — освещено, а все, что не видим, должно быть в тени.
Смешение цветов (Colour bleeding)
В компьютерной графике и 3D-рендеринге цветовое смешение — это явление, когда один цветной объект окрашивает другой в цвет первого. Также цвет может отражаться, например, от цветных стен сцены. Этот метод реализуется схоже с обратным рендерингом: из центра объекта выпускаем лучи, и смотрим с какими объектами они пересекутся.
Заключение
Рендеринг — один из самых главных этапов создания дополненной реальности. От него зависит качество визуализации 3D-объектов. Учитывая все методы, которые используются в 3D-графике и основные правила расстановки освещения, можно создать по-настоящему живые объекты, приближенные к реальным.