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

  • 轉載請註明出處: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;
發佈了102 篇原創文章 · 獲贊 143 · 訪問量 68萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章