Table of Contents

3d пространство демонстрация контента

При использовании AR обычно требуется отображать виртуальные объекты. В простых тестовых примерах можно использовать простые геометрические фигуры, но при разработке для потребителей, как правило, необходимо отображать высокодетализированные 3d-модели и анимацию, а также могут запускаться события и взаимодействия при нажатии на узлы модели.

Модели

Популярные 3d-модели в настоящее время обычно состоят из треугольной сетки (triangle mesh). Чтобы модель выглядела реалистично, нам нужно назначить материал (material) каждому треугольнику. Материал обычно реализует определенную модель освещения (lighting model), содержание которой определяется текстурой (texture) и параметрами модели освещения.

  • Текстура (texture) определяет базовый цвет каждой точки в треугольнике; текстуры всех треугольников размещаются на одной или нескольких диффузных картах. В некоторых продвинутых подходах текстуры также могут использоваться для представления направления нормали или других параметров в каждой точке.
  • Модель освещения (lighting model) определяет, как объект взаимодействует со светом; распространенной является PBR. Модель освещения обычно реализуется с помощью шейдера (shader). Параметры модели освещения PBR включают цвет, металличность, шероховатость и т.д.

При разработке приложений 3d-модели обычно загружаются не напрямую в OpenGL / Metal / Vulkan / Direct3D, а с использованием 3d-движка. 3d-движок требует использования определенных форматов 3d-моделей, таких как исторические, более читаемые форматы obj/mtl, а также популярный в настоящее время формат glTF.

Анимация

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

Для воспроизведения анимации необходимо в режиме реального времени постоянно обновлять положение и ориентацию (матрицу преобразования) узлов модели. Большинство 3d-движков предоставляют функции анимации; достаточно отредактировать анимацию в программном обеспечении для создания анимации и экспортировать в формате, поддерживаемом 3d-движком, чтобы использовать ее там. Формат glTF, упомянутый выше, также поддерживает анимацию.

Взаимодействие

При нажатии пользователем на узел модели иногда требуется запускать события и взаимодействия. Обычно костям (bones) в скелетной анимации присваиваются имена, и с использованием обнаружения столкновений (collision detection) или рейкастинга (raycasting) при нажатии запускается событие, возвращающее имя задетой кости. Обработку событий можно выполнять с помощью скриптов или кода приложения.

Примечание

Если у вас недостаточно опыта работы с 3d-движками, мы настоятельно рекомендуем рассмотреть использование Unity для разработки вашего приложения. EasyAR Sense Unity Plugin хорошо поддерживает Unity. Если вы используете другой 3d-движок, вы можете столкнуться с проблемами ограниченной поддержки и меньшего количества доступных ресурсов.