Проще говоря, ARAnchor
- это нулевой объект , который может содержать 3D-контент (в положении привязки) в Мировом Пространстве.Думайте о ARAnchor
так же, как о локальной оси для вашего трехмерного объекта.Каждый 3D-объект имеет точку поворота, верно?Таким образом, эта точка опоры должна соответствовать ARAnchor
.
Как указано в документации Apple, :
ARAnchor
- это позиция и ориентация в реальном мире, которые могутиспользоваться для размещения объектов в AR Scene.Добавление привязки к сеансу помогает ARKit оптимизировать точность отслеживания мира в области вокруг этой привязки, так что виртуальные объекты остаются на месте относительно реального мира.Если виртуальный объект перемещается, удалите соответствующий якорь из старой позиции и добавьте его в новой позиции.
ARAnchor
является родительским классом для всех других типов якорей, существующих в платформе ARKit, поэтомувсе эти подклассы наследуются от ARAnchor
класса.
Вот изображение с визуальным представлением якоря плоскости.Но имейте в виду: по умолчанию вы не видите ни обнаруженную плоскость, ни ее ARPlaneAnchor.
![enter image description here](https://i.stack.imgur.com/mjzGK.png)
В ARKit 3.0 выВы можете добавить ARAnchors
к вашей сцене, используя различные сценарии :
ARPlaneAnchor
- Если горизонтальный или / и вертикальный
planeDetection
свойство экземпляра равно ON
, ARKit может добавлять ARPlaneAnchors в сеанс.
ARImageAnchor
- Этот тип якорей содержит информацию о положении и ориентации обнаруженного изображения (якорь расположен в центре изображения) в сеансе отслеживания мира AR.Для активации используйте
detectionImages
свойство экземпляра.В ARKit 2.0 вы можете полностью отслеживать до 25 изображений, в ARKit 3.0 - до 100 изображений соответственно.Но в обоих случаях не более 4 изображений одновременно.
ARBodyAnchor
- В последнем выпускеARKit, вы можете включить отслеживание тела, запустив сеанс с
ARBodyTrackingConfiguration()
.Вы получите ARBodyAnchor в Root Joint
3D скелета.
ARFaceAnchor
- Face Anchor хранит информацию о топологии и позе, а также выражение лица, которое вы можете обнаружить с помощью фронтальной камеры TrueDepth.При обнаружении лица якорь лица будет прикреплен немного позади носа, в центре лица.В ARKit 2.0 вы можете отслеживать только одно лицо, в ARKit 3.0 - до 3 лиц одновременно.
ARObjectAnchor
- Этот тип якорей содержит информацию о 6 Степенях Свободы (положение и ориентация) реального трехмерного объекта, обнаруженного во время сеанса отслеживания мира.
AREnvironmentProbeAnchor
- Probe Anchor предоставляет информацию об освещении окружающей среды для определенной области пространства во время сеанса отслеживания мира.Искусственный интеллект ARKit использует его для снабжения металлических шейдеров отражениями окружающей среды.
ARParticipantAnchor
- Это незаменимый тип привязки для многопользовательских опытов AR.
Существуют и другие регулярные подходы к созданию якорей в сеансе AR :
А ниже приведен фрагмент кода, как реализовать привязки внутри метода визуализации:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
let grid = Grid(anchor: planeAnchor)
node.addChildNode(grid)
}
С момента выпуска RealityKit в 2019 году вы можете использовать его новый класс AnchorEntity
.Используйте класс AnchorEntity в качестве корневой точки иерархии сущностей и добавьте его в коллекцию якорей для экземпляра Scene.Это позволяет ARKit поместить сущность привязки вместе со всеми ее иерархическими потомками в реальный мир.