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

  • 轉(zhuǎn)載請注明出處:http://m.itdecent.cn/p/dc1ca646c508

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

    • 一般我們無需去創(chuàng)建一個相機(jī),因?yàn)楫?dāng)我們初始化一個AR試圖時,他會為我們默認(rèn)創(chuàng)建一個相機(jī),而且這個相機(jī)就是攝像頭的位置,同時也是3D世界中的原點(diǎn)所在(x=0,y=0,z=0)
      • ARCamera的API一般我們無需關(guān)心,因?yàn)锳RKit會默認(rèn)幫助我們配置好
  • API介紹


@interface ARCamera : NSObject <NSCopying>

/**
 4x4矩陣表示相機(jī)位置,同ARAnchor
 */
@property (nonatomic, readonly) matrix_float4x4 transform;

/**
相機(jī)方向(旋轉(zhuǎn))的矢量歐拉角
分別是x/y/z
 */
@property (nonatomic, readonly) vector_float3 eulerAngles;

/**
 相機(jī)追蹤狀態(tài)(在下方會有枚舉值介紹)
 */
@property (nonatomic, readonly) ARTrackingState trackingState NS_REFINED_FOR_SWIFT;

/**
追蹤運(yùn)動類型
 */
@property (nonatomic, readonly) ARTrackingStateReason trackingStateReason NS_REFINED_FOR_SWIFT;

/**
相機(jī)曲率(筆者有點(diǎn)費(fèi)解,反復(fù)揣摩應(yīng)該是與焦距相關(guān)參數(shù))
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;

/**
創(chuàng)建相機(jī)投影矩陣
 */
- (matrix_float4x4)projectionMatrixWithViewportSize:(CGSize)viewportSize orientation:(UIInterfaceOrientation)orientation zNear:(CGFloat)zNear zFar:(CGFloat)zFar;

@end

//相機(jī)追蹤狀態(tài)枚舉
typedef NS_ENUM(NSInteger, ARTrackingState) {
    
    /** 不被允許 */
    ARTrackingStateNotAvailable,
    
    /** 最小 */
    ARTrackingStateLimited,
    
    /** 正常. */
    ARTrackingStateNormal,
} NS_REFINED_FOR_SWIFT;

/**
 追蹤運(yùn)動類型
 */
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos)
typedef NS_ENUM(NSInteger, ARTrackingStateReason) {
    /** 無. */
    ARTrackingStateReasonNone,
    
    /** 運(yùn)動. */
    ARTrackingStateReasonExcessiveMotion,
    
    /** 臉部捕捉. */
    ARTrackingStateReasonInsufficientFeatures,
} NS_REFINED_FOR_SWIFT;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容