3D rendering под управлением AR
При разработке AR-приложения нужно решить базовую задачу: rendering AR content. В этой статье planar image tracking используется как пример для описания основных модулей, процесса и реализации rendering в AR-приложении.
Типичный процесс AR-приложения
Типичное AR-приложение обычно распознает определенные images, objects или scenes из camera images, отслеживает их position и pose, а затем отображает virtual content (3D models) в соответствии с этой position и pose.
![]()
Например, на рисунке выше показано AR-приложение для planar image tracking.
Схема процесса приложения приведена ниже.
flowchart TD
CameraDevice[Camera Device]
Tracker[Tracker]
Renderer[Renderer]
CameraDevice -->|Image Frame| Tracker
Tracker -->|Image Frame + Tracked Pose| Renderer
Процесс содержит следующие модули.
| Модуль | Назначение |
|---|---|
| Physical camera | Предоставляет sequence входных image frames. Image frame включает image, timestamp создания image, а иногда также position и pose camera в пространстве |
| Tracker | Вычисляет position и pose tracking target по image frames. Для разных tracking target существуют разные trackers, например planar image tracker и 3D object tracker |
| Renderer | Отображает camera image и 3D model, соответствующую tracked object, на экран. На некоторых AR glasses camera image может не отображаться, а отображается только 3D model |
Rendering на телефонах
Rendering на телефонах состоит из двух частей: rendering camera image и rendering virtual objects.
Rendering camera image

При rendering camera image нужно учитывать несколько параметров.
Scaling mode
Обычно camera image должна заполнить весь экран или окно. В этом случае нужно решить проблему несовпадения aspect ratio между camera image и screen/window.
Если центр camera image совмещается с центром screen/window и aspect ratio сохраняется, есть два распространенных scaling modes: fit и fill.
Scaling mode Эффект Fit Показывает весь content на экране, но оставляет черные полосы слева и справа или сверху и снизу Fill Не оставляет черных полос, но обрезает часть image слева и справа или сверху и снизу Camera image rotation
На телефонах image, записываемая physical camera, обычно фиксирована относительно корпуса устройства и не меняется вместе с screen display orientation. Однако изменение ориентации корпуса телефона влияет на то, как мы определяем верх, низ, левую и правую стороны image. При rendering текущая screen display orientation также влияет на ориентацию отображаемого image.
Обычно при rendering нужно определить rotation angle camera image относительно screen display orientation.
Camera image flipping
В некоторых случаях используется фронтальная камера. Тогда image обычно нужно отразить по горизонтали, чтобы оно выглядело как зеркало.
Rendering virtual objects

При rendering virtual objects на телефоне virtual objects должны быть согласованы с camera image. Для этого rendering camera и objects нужно разместить в virtual space, полностью соответствующем real space, и выполнять rendering с тем же field of view и aspect ratio, что и у physical camera. Camera image и virtual objects проходят одинаковые perspective projection transforms, за исключением того, что большая часть perspective projection transform для camera image происходит внутри physical camera, а perspective projection transform для virtual objects является полностью вычислительным процессом.
Rendering на headsets
Rendering на headsets отличается от телефонов и делится на два случая.
VST
Video See-Through - это AR-технология, при которой headset захватывает images через physical cameras, а затем показывает camera images и virtual content на экране headset. Типичный пример - Vision Pro. Обычно perspective projection matrices для camera images и virtual content задаются SDK, предоставленным headset, а внешнему коду нужно только задать position и pose virtual content. Physical camera, используемая для tracking, и camera image, отображаемая на экране, могут находиться в разных positions, и при rendering применяются coordinate transforms.
OST
Optical See-Through - это AR-технология, при которой экран headset прозрачен, а headset показывает на экране только virtual content. Типичный пример - HoloLens. Обычно perspective projection matrix virtual content задается SDK, предоставленным headset, а внешнему коду нужно только задать position и pose virtual content. Physical camera, используемая для tracking, и camera image, отображаемая на экране, могут находиться в разных positions, и при rendering применяются coordinate transforms.
Руководства для платформ
AR-driven 3D rendering тесно связан с платформой. Для разработки по вашей целевой платформе см. следующие руководства: