Table of Contents

AR-движимый 3D рендеринг

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

Типичный процесс AR-приложения

Типичное AR-приложение обычно включает распознавание определенного изображения, объекта или сцены из кадров камеры, отслеживание их положения и ориентации, а также рендеринг и отображение виртуального контента (3D-модели) в соответствии с этим положением и ориентацией.

image tracking

Например, на рисунке выше показано AR-приложение с отслеживанием плоского изображения

Ниже представлена схема процесса приложения.

flowchart TD
    CameraDevice[Camera Device]
    Tracker[Tracker]
    Renderer[Renderer]

    CameraDevice -->|Image Frame| Tracker
    Tracker -->|Image Frame + Tracked Pose| Renderer

В процессе задействованы следующие модули.

Модуль Назначение
Физическая камера Предоставляет последовательность входных кадров изображения. Кадр изображения включает само изображение, временную метку его создания, а иногда также положение и ориентацию камеры в пространстве
Трекер Вычисляет положение и ориентацию отслеживаемой цели из кадра изображения. В зависимости от цели отслеживания существуют различные трекеры, например, трекеры плоских изображений и трекеры 3D-объектов
Рендерер Используется для рендеринга изображения с камеры и соответствующей 3D-модели отслеживаемого объекта на экран. На некоторых AR-очках кадр с камеры может не рендериться, отображается только 3D-модель

Рендеринг на мобильных устройствах

Рендеринг на мобильных устройствах разделяется на две части: рендеринг изображения с камеры и рендеринг виртуальных объектов.

Рендеринг изображения с камеры

camera image

При рендеринге изображения с камеры следует учитывать некоторые параметры.

  • Режим масштабирования

    Обычно требуется заполнить кадром с камеры весь экран или окно. В этом случае возникает проблема несоответствия соотношения сторон кадра камеры и экрана/окна.

    Предположим, мы требуем выравнивания центра кадра камеры по центру экрана/окна с сохранением соотношения сторон. Тогда существуют два распространенных режима масштабирования: пропорциональное масштабирование и пропорциональное заполнение.

    Режим масштабирования Эффект
    Пропорциональное масштабирование Отображает все содержимое на экране, но оставляет черные полосы по бокам или сверху/снизу
    Пропорциональное заполнение Не имеет черных полос, но обрезает часть изображения по бокам или сверху/снизу
  • Поворот изображения камеры

    На мобильных устройствах изображение, записанное физической камерой, обычно фиксировано относительно корпуса и не меняется с изменением ориентации экрана. Однако изменение ориентации корпуса устройства влияет на наше определение направлений (верх/низ, лево/право) на изображении. При рендеринге текущая ориентация экрана также влияет на направление отображаемого изображения.

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

  • Отражение изображения камеры

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

Рендеринг виртуальных объектов

virtual object

Для рендеринга виртуальных объектов на мобильном устройстве необходимо совместить их с изображением камеры. Это требует размещения камеры рендеринга и объектов в виртуальном пространстве, полностью соответствующем реальному, и использования того же угла обзора (FOV) и соотношения сторон, что и у физической камеры. Перспективное преобразование (проекция), применяемое к изображению камеры и виртуальным объектам, должно быть идентичным. Разница лишь в том, что преобразование для изображения камеры в основном происходит в самой физической камере, а для виртуальных объектов — это полностью вычислительный процесс.

Рендеринг на гарнитурах

Рендеринг на гарнитурах (head-mounted displays, HMD) отличается от мобильного и требует разделения на два случая.

  • VST (Video See-Through)

    Видеопрозрачность (Video See-Through) означает технологию AR, при которой гарнитура захватывает изображение через физическую камеру, а затем отображает это изображение камеры вместе с виртуальным контентом на своем экране. Типичный пример — Vision Pro. Обычно матрицы перспективной проекции для изображения камеры и виртуального контента задаются SDK гарнитуры. Внешнему коду нужно только задать положение и ориентацию виртуального контента. Физическая камера, используемая для отслеживания, и камера, изображение которой рендерится на экране, могут находиться в разных позициях; при рендеринге выполняется преобразование координат.

  • OST (Optical See-Through)

    Оптическая прозрачность (Optical See-Through) означает технологию AR, при которой экран гарнитуры прозрачен, и на нем отображается только виртуальный контент. Типичный пример — HoloLens. Обычно матрица перспективной проекции для виртуального контента задается SDK гарнитуры. Внешнему коду нужно только задать положение и ориентацию виртуального контента. Физическая камера, используемая для отслеживания, и виртуальная камера, через которую рендерится контент, могут находиться в разных позициях; при рендеринге выполняется преобразование координат.

Платформенные руководства

AR-движимый 3D рендеринг тесно связан с платформой. Для разработки обратитесь к следующим руководствам в зависимости от вашей целевой платформы: