1. 程式人生 > >ARKit從入門到精通(7)-ARCamera介紹

ARKit從入門到精通(7)-ARCamera介紹

pan float 試圖 歐拉 ado nav ive typedef ace

  • 轉自:ARKit從入門到精通(7)-ARCamera介紹

  • ARCamera是一個相機,它是連接虛擬場景與現實場景之間的樞紐。在ARKit中,它是捕捉現實圖像的相機,在SceneKit中它又是3D虛擬世界中的相機。(一般第一人稱3D遊戲,主角其實就是一個3D相機,我們電腦屏幕看到的畫面就是這個相機捕捉的畫面)

    • 一般我們無需去創建一個相機,因為當我們初始化一個AR試圖時,他會為我們默認創建一個相機,而且這個相機就是攝像頭的位置,同時也是3D世界中的原點所在(x=0,y=0,z=0)
      • ARCamera的API一般我們無需關心,因為ARKit會默認幫助我們配置好
  • API介紹

    @interface
    ARCamera : NSObject <NSCopying> /** 4x4矩陣表示相機位置,同ARAnchor */ @property (nonatomic, readonly) matrix_float4x4 transform; /** 相機方向(旋轉)的矢量歐拉角 分別是x/y/z */ @property (nonatomic, readonly) vector_float3 eulerAngles; /** 相機追蹤狀態(在下方會有枚舉值介紹) */ @property (nonatomic, readonly) ARTrackingState trackingState NS_REFINED_FOR_SWIFT;
    /** 追蹤運動類型 */ @property (nonatomic, readonly) ARTrackingStateReason trackingStateReason NS_REFINED_FOR_SWIFT; /** 相機曲率(筆者有點費解,反復揣摩應該是與焦距相關參數) 3x3矩陣 fx 0 px 0 fy py 0 0 1 */ @property (nonatomic, readonly) matrix_float3x3 intrinsics; /** 攝像頭分辨率 */ @property (nonatomic, readonly) CGSize imageResolution;
    /** 投影矩陣 */ @property (nonatomic, readonly) matrix_float4x4 projectionMatrix; /** 創建相機投影矩陣 */ - (matrix_float4x4)projectionMatrixWithViewportSize:(CGSize)viewportSize orientation:(UIInterfaceOrientation)orientation zNear:(CGFloat)zNear zFar:(CGFloat)zFar; @end //相機追蹤狀態枚舉 typedef NS_ENUM(NSInteger, ARTrackingState) { /** 不被允許 */ ARTrackingStateNotAvailable, /** 最小 */ ARTrackingStateLimited, /** 正常. */ ARTrackingStateNormal, } NS_REFINED_FOR_SWIFT; /** 追蹤運動類型 */ API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos) typedef NS_ENUM(NSInteger, ARTrackingStateReason) { /** 無. */ ARTrackingStateReasonNone, /** 運動. */ ARTrackingStateReasonExcessiveMotion, /** 臉部捕捉. */ ARTrackingStateReasonInsufficientFeatures, } NS_REFINED_FOR_SWIFT;

ARKit從入門到精通(7)-ARCamera介紹