Поделиться через


ARKit Пространство имен

Пространство имен ARKit обеспечивает поддержку сеансов дополненной реальности, включая высокоуровневые и низкоуровневые API для проецирования созданных компьютером изображений в видеопоток.

Классы

ARAnchor

Положение, ориентация и масштаб, расположенные в реальном мире, к которому можно прикрепить объекты дополненной реальности.

ARBlendShapeLocationOptions

Объект DictionaryContainer , определяющий функции, доступные в T:ARKit.ARBlendShapeLocation .

ARCamera

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

ARConfiguration

Сведения о конфигурации для сеансов дополненной реальности.

ARDirectionalLightEstimate

Оценивает реальное освещение, падая на лицо.

AREnvironmentProbeAnchor

Источник для экологического освещения.

ARErrorCodeExtensions

Методы расширения для перечисления ARKit.ARErrorCode.

ARFaceAnchor

Объект ARAnchor , который находит обнаруженное лицо в мировых координатах сеанса дополненной реальности.

ARFaceGeometry

Сетка, представляющая распознанное лицо, включая форму и выражение.

ARFaceTrackingConfiguration

Объект ARConfiguration для распознавания и отслеживания лиц.

ARFrame

Кадр в сеансе дополненной реальности.

ARHitTestResult

Результат, созданный методом HitTest(CGPoint, ARHitTestResultType) .

ARImageAnchor

Объект ARAnchor , отслеживающий изображение, обнаруженное в реальном мире.

ARImageTrackingConfiguration

ARConfiguration подкласс, использующий распознанное изображение в качестве основы для отслеживания мира.

ARLightEstimate

Оценка реальной среды освещения.

ARObjectAnchor

ARAnchor подкласс, который отслеживает распознанный реальный трехмерный объект.

ARObjectScanningConfiguration

Ресурсоемкий ARConfiguration объект, используемый во время разработки для создания ARReferenceObject данных.

AROrientationTrackingConfiguration

Объект ARConfiguration , который отслеживает только ориентацию устройства и использует задние камеры устройства.

ARPlaneAnchor

Подкласс , используемый ARAnchor для представления реальных плоских поверхностей.

ARPlaneGeometry

Геометрия, представляющая плоскость, обнаруженную в реальном мире.

ARPointCloud

Набор трехмерных точек, указывающий на веру обработки изображений в фиксированную реальную точку на физической поверхности.

ARReferenceImage

Ресурс изображения, содержащий предварительно обработанные изображения для распознавания в реальном мире.

ARReferenceObject

Цифровое представление трехмерного объекта, обнаруживаемого в реальном мире.

ARSCNDebugOptions

Параметры визуализации для использования со свойством DebugOptionsARSCNView.

ARSCNFaceGeometry

Геометрия SceneKit, представляющая лицо.

ARSCNPlaneGeometry

Пространство имен ARKit обеспечивает поддержку сеансов дополненной реальности, включая высокоуровневые и низкоуровневые API для проецирования созданных компьютером изображений в видеопоток.

ARSCNView

Подкласс , SCNView поддерживающий содержимое дополненной реальности.

ARSCNView.ARSCNViewAppearance

Класс внешнего вида для объектов типа ARSCNView.

ARSCNViewDelegate

Делегировать объект для ARSCNView объектов.

ARSCNViewDelegate_Extensions

Методы расширения интерфейса IARSCNViewDelegate для поддержки всех методов из ARSCNViewDelegate протокола.

ARSession

Управляет захватом камеры, обработкой движения и анализом изображений, необходимыми для создания смешанной реальности.

ARSessionDelegate

Делегируйте объект для ARSession объекта , позволяя разработчику реагировать на события, связанные с сеансом дополненной реальности.

ARSessionDelegate_Extensions

Методы расширения интерфейса IARSessionDelegate для поддержки всех методов из ARSessionDelegate протокола.

ARSessionObserver_Extensions

Необязательные методы IARSessionObserver интерфейса.

ARSKView

Подкласс , SKView который помещает объекты Sprite Kit в сеанс дополненной реальности.

ARSKView.ARSKViewAppearance

Класс внешнего вида для объектов типа ARSKView.

ARSKViewDelegate

Делегировать объект , позволяющий разработчику реагировать на события, связанные с ARSKView.

ARSKViewDelegate_Extensions

Методы расширения интерфейса IARSKViewDelegate для поддержки всех методов из ARSKViewDelegate протокола.

ARVideoFormat

Сводные сведения о видеопотоке, используемом в моделировании дополненной реальности.

ARWorldMap

Сериализуемое и совместное сочетание реальных пространственных точек данных и привязок смешанной реальности.

ARWorldTrackingConfiguration

Конфигурация для сеанса, который отслеживает положение и ориентацию устройства и при необходимости обнаруживает горизонтальные поверхности.

Интерфейсы

IARAnchorCopying

Пространство имен ARKit обеспечивает поддержку сеансов дополненной реальности, включая высокоуровневые и низкоуровневые API для проецирования созданных компьютером изображений в видеопоток.

IARSCNViewDelegate

Интерфейс, представляющий обязательные методы (если таковые есть) протокола ARSCNViewDelegate.

IARSessionDelegate

Интерфейс, представляющий обязательные методы (если таковые есть) протокола ARSessionDelegate.

IARSessionObserver

Интерфейс, определяющий методы, реагирующие на события в ARSession.

IARSKViewDelegate

Интерфейс, представляющий обязательные методы (если таковые есть) протокола ARSKViewDelegate.

IARTrackable

Интерфейс для реальных объектов, которые можно отслеживать с помощью ARKit.

Перечисления

AREnvironmentTexturing

Перечисляет стратегии создания текста среды, используемые с объектами T:ARKit.ARWorldTrackingProbeAnchor .

ARErrorCode

Перечисление причин ARSession сбоя.

ARHitTestResultType

Перечисляет типы объектов, обнаруженных методом HitTest(CGPoint, ARHitTestResultType) .

ARPlaneAnchorAlignment

Ориентация ARPlaneAnchor объекта (в настоящее время ограничена горизонтальной).

ARPlaneClassification

Пространство имен ARKit обеспечивает поддержку сеансов дополненной реальности, включая высокоуровневые и низкоуровневые API для проецирования созданных компьютером изображений в видеопоток.

ARPlaneClassificationStatus

Пространство имен ARKit обеспечивает поддержку сеансов дополненной реальности, включая высокоуровневые и низкоуровневые API для проецирования созданных компьютером изображений в видеопоток.

ARPlaneDetection

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

ARSessionRunOptions

Перечисляет параметры в вызовах .Run(ARConfiguration, ARSessionRunOptions)

ARTrackingState

Перечисляет качество отслеживания в реальном мире в дополненной реальности ARSession.

ARTrackingStateReason

Перечисляет причины Limited.

ARWorldAlignment

Перечисляет параметры создания мировой системы координат.

ARWorldMappingStatus

Перечисляет состояния сеанса сопоставления мира.

Комментарии

ARKit был добавлен в iOS 11 и предоставляет сеансы смешанной реальности, сочетающие вход с камеры с созданными компьютером изображениями, которые отображаются в реальном мире.

ARKit доступен только на устройствах под управлением A9 и более мощных процессорах: по сути iPhone 6S и более новых, iPad Pro и iPad, выпущенных не ранее 2017 года.

Приложения ARKit не запускаются в симуляторе.

У разработчиков есть три варианта отрисовки сцен дополненной реальности:

КлассСценарий использования
ARSCNView Объединение трехмерной геометрии SceneKit с видео

T:ARKit.ARSCKView

Объединение 2D-изображений SpriteKit с видео
Экспортируйте "renderer:updateAtTime:" из их IARSCNViewDelegate.Разрешает полную пользовательскую отрисовку.

Системы координат и преобразования ARKit

ARKit использует движение устройства и "визуальную одометрию" для создания модели камеры устройства и реальных "точек признаков" по отношению к виртуальной системе координат. Система координат использует в качестве единиц измерения. Виртуальная система координат имеет источник, вычисляемый как расположение камеры на момент ARSession запуска. Расположение и ориентация в ARKit в основном представлены с помощью NMatrix4 собственных матриц. В случае ARKit это преобразования с основными столбцами:

Положение или преобразование находится в M14, M24и M34. Матрица 3x3, определяемая в M11 , M33 является матрицей поворота.

SCNVector3 Position(NMatrix4 m) => new SCNVector3(m.M14, m.M24, m.M34);          

Инициализация

Объект ARSession управляет общим процессом дополненной реальности. Метод Run принимает ARConfiguration и ARSessionRunOptions объект , как показано ниже:

ARSCNView SceneView = ... // initialized in Storyboard, `ViewDidLoad`, etc.

// Create a session configuration
var configuration = new ARWorldTrackingConfiguration {
	PlaneDetection = ARPlaneDetection.Horizontal,
	LightEstimationEnabled = true
};

// Run the view's session
SceneView.Session.Run(configuration, ARSessionRunOptions.ResetTracking);

ARSession После выполнения CurrentFrame его свойство содержит активный ARFrameобъект . Так как система пытается запустить ARKit со скоростью 60 кадров в секунду, разработчики, ссылающиеся на CurrentFrame , должны быть уверены Dispose в кадре после его потери.

Система отслеживает высококонтрастные "функциональные точки" в представлении камеры. Они доступны разработчику в виде ARPointCloud объекта, который можно прочитать по адресу RawFeaturePoints. Как правило, разработчики полагаются на систему для выявления функций более высокого уровня, таких как плоскости или человеческие лица. Когда система определяет эти функции более высокого уровня, она добавляет ARAnchor объекты, свойства которых P:ARKit.ARAnchor.Position находятся в системе мировых координат. Разработчики могут использовать DidAddNodeметоды , DidUpdateNodeи DidRemoveNode для реагирования на такие события и для подключения пользовательской геометрии к реальным функциям.

Координаты дополненной реальности поддерживаются с помощью визуальной одометрии и диспетчера движения устройства. Экспериментально отслеживание кажется очень твердым на расстояниях не менее десятков метров в непрерывном сеансе.

См. также раздел