Этот рассказ демонстрирует вам полный список классов, структур, перечислений и протоколов, которые можно найти в ARKit 4.0. Все классы, выделенные полужирным шрифтом, являются родительскими классами, унаследованными от общего класса NSObject. Дочерние классы отмечены маркерами и имеют отступ в четыре пробела. Все структуры и перечисления, вложенные в классы, здесь написаны курсивом и также с отступом в четыре пробела. У родительских классов есть ссылки на документацию разработчика.

Представление наследования здесь выглядит так:

⦿ class Parent
    ⦿ class Child

Вложенные структуры и перечисления изображаются следующим образом:

⦿ class ForNestedContent
    ⧉ struct Nested01
     enum Nested02

А протоколы представлены так:

❂ Protocol

Список классов, структур и перечислений в ARKit 4.0

⦿ class ARAnchor
    ⦿ class ARAppClipCodeAnchor
        var radius
        var url
        var urlDecodingState
    ⦿ class ARBodyAnchor
        var estimatedScaleFactor
        var isTracked
        var skeleton
    ⦿ class AREnvironmentProbeAnchor
        var environmentTexture
        var extent
    ⦿ class ARFaceAnchor
        var blendShapes
        var geometry
        var isTracked
        var leftEyeTransform
        var lookAtPoint
        var rightEyeTransform
        ⧉ struct BlendShapeLocation
            static let browDownLeft
            static let browDownRight
            static let browInnerUp
            static let browOuterUpLeft
            static let browOuterUpRight
            static let cheekPuff
            static let cheekSquintLeft
            static let cheekSquintRight
            static let eyeBlinkLeft
            static let eyeBlinkRight
            static let eyeLookDownLeft
            static let eyeLookDownRight
            static let eyeLookInLeft
            static let eyeLookInRight
            static let eyeLookOutLeft
            static let eyeLookOutRight
            static let eyeLookUpLeft
            static let eyeLookUpRight
            static let eyeSquintLeft
            static let eyeSquintRight
            static let eyeWideLeft
            static let eyeWideRight
            static let jawForward
            static let jawLeft
            static let jawOpen
            static let jawRight
            static let mouthClose
            static let mouthDimpleLeft
            static let mouthDimpleRight
            static let mouthFrownLeft
            static let mouthFrownRight
            static let mouthFunnel
            static let mouthLeft
            static let mouthLowerDownLeft
            static let mouthLowerDownRight
            static let mouthPressLeft
            static let mouthPressRight
            static let mouthPucker
            static let mouthRight
            static let mouthRollLower
            static let mouthRollUpper
            static let mouthShrugLower
            static let mouthShrugUpper
            static let mouthSmileLeft
            static let mouthSmileRight
            static let mouthStretchLeft
            static let mouthStretchRight
            static let mouthUpperUpLeft
            static let mouthUpperUpRight
            static let noseSneerLeft
            static let noseSneerRight
            static let tongueOut
    ⦿ class ARGeoAnchor
        @nonobjc var altitude
        var altitudeSource
        var coordinate
        var isTracked
         enum AltitudeSource
            case coarse
            case precise
            case unknown
            case userDefined
    ⦿ class ARImageAnchor
        var estimatedScaleFactor
        var isTracked
        var referenceImage
            var name
            var physicalSize
            var resourceGroupName
    ⦿ class ARMeshAnchor
        var geometry
            var classification
            var faces
            var normals
            var vertices
    ⦿ class ARObjectAnchor
        var referenceObject
            var center
            var extent
            var name
            var rawFeaturePoints
            var resourceGroupName
            var scale
    ⦿ class ARParticipantAnchor
        var sessionIdentifier
        var transform
    ⦿ class ARPlaneAnchor
        var alignment
        var center
        var classification
        var extent
        var geometry
        ⨳ enum Alignment
            case horizontal
            case vertical
         enum Classification
            case ceiling
            case door
            case floor
            case none(ARPlaneAnchor.Classification.Status)
            case seat
            case table
            case wall
            case window
             enum Status
                case notAvailable
                case undetermined
                case unknown
⦿ class ARBody2D
⦿ class ARCamera@frozen enum TrackingState
        enum Reason
⦿ class ARCoachingOverlayView
    enum Goal
 enum ARConfidenceLevel
⦿ class ARConfiguration
    ⦿ class ARBodyTrackingConfiguration
    ⦿ class ARFaceTrackingConfiguration
    ⦿ class ARGeoTrackingConfiguration
    ⦿ class ARImageTrackingConfiguration
    ⦿ class ARObjectScanningConfiguration
    ⦿ class AROrientationTrackingConfiguration
    ⦿ class ARPositionalTrackingConfiguration
    ⦿ class ARWorldTrackingConfiguration
         enum EnvironmentTexturing
        ⧉ struct FrameSemantics
        ⧉ struct PlaneDetection
        ⧉ struct SceneReconstruction
        ⦿ class VideoFormat
         enum WorldAlignment
⦿ class ARDepthData
⧉ struct ARError
     enum Code
        case unsupportedConfiguration = 100
        case sensorUnavailable = 101
        case sensorFailed = 102
        case cameraUnauthorized = 103
        case microphoneUnauthorized = 104
        case locationUnauthorized = 105
        case worldTrackingFailed = 200
        case geoTrackingNotAvailableAtLocation = 201
        case geoTrackingFailed = 202
        case invalidReferenceImage = 300
        case invalidReferenceObject = 301
        case invalidWorldMap = 302
        case invalidConfiguration = 303
        case collaborationDataUnavailable = 304       // Deprecated
        case insufficientFeatures = 400
        case objectMergeFailed = 401
        case fileIOFailed = 500
        case requestFailed = 501
        public static var invalidCollaborationData    // iOS 13.2
⦿ class ARFaceGeometry
⦿ class ARFrame enum SegmentationClass
     enum WorldMappingStatus
⦿ class ARGeometryElement
 enum ARGeometryPrimitiveType
⦿ class ARGeometrySource
⦿ class ARGeoTrackingStatus enum Accuracy
    ⨳ enum State
    ⨳ enum StateReason
⦿ class ARHitTestResult            // Deprecated in iOS 14
⦿ class ARLightEstimate
    ⦿ class ARDirectionalLightEstimate
⦿ class ARMatteGenerator
     enum Resolution
 enum ARMeshClassification
⦿ class ARMeshGeometry
⦿ class ARPlaneGeometry
⦿ class ARPointCloud
⦿ class ARQuickLookPreviewItem
⦿ class ARRaycastQuery
     enum Target
     enum TargetAlignment
⦿ class ARRaycastResult
⦿ class ARReferenceImage
⦿ class ARReferenceObject
⦿ class ARSession
    ⦿ class CollaborationData
    ⧉ struct RunOptions
⦿ class ARSkeleton
    ⦿ class ARSkeleton2D
        ⧉ struct JointName
    ⦿ class ARSkeleton3D
        ⧉ struct JointName
⦿ class ARSkeletonDefinition
 typealias ARSCNDebugOptions
⦿ class ARSCNFaceGeometry
⦿ class ARSCNPlaneGeometry
⦿ class ARSCNView                  // SceneKit view
⦿ class ARSKView                   // SpriteKit view
⦿ class ARTrackedRaycast
⦿ class ARView                     // RealityKit view
    ⦿ class ARViewBase
     DebugOptions
        - Element
     Environment
        - Background
        - Color
        - ImageBasedLight
        - Reverb
     Image
⦿ class ARWorldMap

Чтобы проверить все доступные классы, структуры и перечисления в Apple ARKit, используйте следующий путь в macOS с установленным Xcode:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ARKit.framework/Headers

Список протоколов ARKit 4.0

Было бы печально, если бы в ARKit не было протоколов. В этом модуле не так много протоколов, но те, что есть, - настоящие рабочие лошадки.

❂ protocol ARAnchorCopying
❂ protocol ARCoachingOverlayViewDelegate
❂ protocol ARSCNViewDelegate
❂ protocol ARSessionDelegate
❂ protocol ARSessionObserver
❂ protocol ARSessionProviding
❂ protocol ARSKViewDelegate
❂ protocol ARTrackable

В качестве примера я хочу показать вам, как используется протокол ARTrackable. Пять типов привязок наследуются от родительского класса ARAnchor, но также соответствуют протоколу ARTrackable. Нам нужен этот протокол, когда ARKit отслеживает изменения положения и ориентации для перемещения реальных объектов.

public protocol ARTrackable: NSObjectProtocol {
    var isTracked: Bool { get }
}
open class ARAppClipCodeAnchor: ARAnchor, ARTrackable { ... }
open class ARBodyAnchor: ARAnchor, ARTrackable { ... }
open class ARFaceAnchor: ARAnchor, ARTrackable { ... }
open class ARGeoAnchor: ARAnchor, ARTrackable { ... }
open class ARImageAnchor: ARAnchor, ARTrackable { ... }

Пожертвовать автору

addr1q9w70n62nu8p7f9ukfn66gzumm9d9uxwppkx7gk7vd7gy0ehfavj97gkncwm8t8l8l8x9e4adzmw2djh4y5gd9rmtewqr99zr3

На этом пока все.

Если эта публикация вам полезна, нажмите кнопку Хлопнуть и удерживайте ее. На Medium вы можете аплодировать до 50 за каждое сообщение.

Если у вас есть вопросы, вы можете связаться со мной через StackOverflow.

До встречи!