ARKit 筆記 2

ARScnView API

@available(iOS 11.0, *)
open class ARSCNView : SCNView, ARSessionProviding {

    
    /**
     Specifies the renderer delegate. 代理
     */
    weak open var delegate: ARSCNViewDelegate?

    
    /**
     The session that the view uses to update the scene. 會話
     */
    open var session: ARSession 

    
    /**
     Specifies the scene of the view. 場景
     */
    open var scene: SCNScene

    
    /**
     Determines whether the view will update the scene’s lighting.
     是否自動適應燈光
     @discussion When set, the view will automatically create and update lighting for 
     light estimates the session provides. Defaults to YES.
     */
    open var automaticallyUpdatesLighting: Bool

    
    /**
     Determines whether view renders camera grain.
一個確定SceneKit是否將圖像噪聲特征應用于應用程序的虛擬內(nèi)容的標志奈附。
     默認啟用
     @discussion When set, the view will automatically add camera grain to rendered
     content that matches the grainy noise of the camera stream. Enabled by default.
     */
    @available(iOS 13.0, *)
    open var rendersCameraGrain: Bool

    
    /**
     Determines whether view renders motion blur.
     確定視圖是否呈現(xiàn)運動模糊每庆。 默認關閉
     @discussion When set, the view will automatically add motion blur to rendered
     content that matches the motion blur of the camera stream.
     Overwrites SCNCamera's motionBlurIntensity property. Disabled by default.
     */
    @available(iOS 13.0, *)
    open var rendersMotionBlur: Bool

    
    /**
     Searches the scene hierarchy for an anchor associated with the provided node.
     @param node A node in the view’s scene.
    返回對應節(jié)點的錨點八匠,節(jié)點是一個3D虛擬物體信柿,它的坐標是虛擬場景中的坐標,而錨點ARAnchor是ARKit中現(xiàn)實世界的坐標
     */
    open func anchor(for node: SCNNode) -> ARAnchor?

    
    /**
     Returns the node that has been mapped to a specific anchor.
     @param anchor An anchor with an existing node mapping.
    返回對應錨點的物體
     */
    open func node(for anchor: ARAnchor) -> SCNNode?

    
    /**
     Searches the current frame for objects corresponding to a point in the view.
     根據(jù)2D坐標點搜索3D模型惨篱,這個方法通常用于,當我們在手機屏幕點擊某一個點的時候,可以捕捉到這一個點所在的3D模型的位置缓溅,至于為什么是一個數(shù)組非常好理解。手機屏幕一個是長方形赁温,這是一個二維空間坛怪。而相機捕捉到的是一個由這個二維空間射出去的長方體,我們點擊屏幕一個點可以理解為在這個長方體的邊緣射出一條線股囊,這一條線上可能會有多個3D物體模型
point:2D坐標點(手機屏幕某一點)
ARHitTestResultType:捕捉類型  點還是面
(NSArray<ARHitTestResult *> *):追蹤結果數(shù)組  詳情見本章節(jié)ARHitTestResult類介紹
數(shù)組的結果排序是由近到遠

     @discussion A 2D point in the view’s coordinate space can refer to any point along a line segment
     in the 3D coordinate space. Hit-testing is the process of finding objects in the world located along this line segment.
     @param point A point in the view’s coordinate system.
     @param types The types of results to search for.
     @return An array of all hit-test results sorted from nearest to farthest.
     */
    @available(iOS, introduced: 11.0, deprecated: 14.0, message: "Use [ARSCNView raycastQueryFromPoint:allowingTarget:alignment]")
    open func hitTest(_ point: CGPoint, types: ARHitTestResult.ResultType) -> [ARHitTestResult]

    
    /**
     Creates a raycast query originating from the point on view, aligned along the center of the field of view of the camera.
     @discussion A 2D point in the view's coordinate space and the frame camera's field of view is used to create a ray in the 3D cooridnate space originating at the point.
     @param point A point in the view’s coordinate system.
     @param target Type of target where the ray should terminate.
     @param alignment Alignment of the target.
     */
    @available(iOS 13.0, *)
    open func raycastQuery(from point: CGPoint, allowing target: ARRaycastQuery.Target, alignment: ARRaycastQuery.TargetAlignment) -> ARRaycastQuery?
}

@available(iOS 12.0, *)
extension ARSCNView {

    @nonobjc public func unprojectPoint(_ point: CGPoint, ontoPlane planeTransform: simd_float4x4) -> simd_float3?
}

@available(iOS 11.0, *)
public protocol ARSCNViewDelegate : ARSessionObserver, SCNSceneRendererDelegate {

    
    /**
     Implement this to provide a custom node for the given anchor.
     自定義節(jié)點的錨點
     @discussion This node will automatically be added to the scene graph.
     If this method is not implemented, a node will be automatically created.
     If nil is returned the anchor will be ignored.
     @param renderer The renderer that will render the scene.
     @param anchor The added anchor.
     @return Node that will be mapped to the anchor or nil.
     */
    optional func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?

    
    /**
     Called when a new node has been mapped to the given anchor.
     當添加節(jié)點時會調(diào)用袜匿,我們可以通過這個代理方法得知我們添加一個虛擬物體到AR場景下的錨點(AR現(xiàn)實世界中的坐標)
     @param renderer The renderer that will render the scene.
     @param node The node that maps to the anchor.
     @param anchor The added anchor.
     */
    optional func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)

    
    /**
     Called when a node will be updated with data from the given anchor.
     將要刷新節(jié)點
     @param renderer The renderer that will render the scene.
     @param node The node that will be updated.
     @param anchor The anchor that was updated.
     */
    optional func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor)

    
    /**
     Called when a node has been updated with data from the given anchor.
     已經(jīng)刷新節(jié)點
     @param renderer The renderer that will render the scene.
     @param node The node that was updated.
     @param anchor The anchor that was updated.
     */
    optional func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)

    
    /**
     Called when a mapped node has been removed from the scene graph for the given anchor.
     移除節(jié)點
     @param renderer The renderer that will render the scene.
     @param node The node that was removed.
     @param anchor The anchor that was removed.
     */
    optional func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor)
}

/**
 Extended debug options for an ARSCNView
 */
@available(iOS 11.0, *)
public typealias ARSCNDebugOptions = SCNDebugOptions
extension SCNDebugOptions {

    
    /** Show the world origin in the scene. */
    @available(iOS 11.0, *)
    public static let showWorldOrigin: SCNDebugOptions

    
    /** Show detected 3D feature points in the world. */
    @available(iOS 11.0, *)
    public static let showFeaturePoints: SCNDebugOptions
}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稚疹,隨后出現(xiàn)的幾起案子居灯,更是在濱河造成了極大的恐慌,老刑警劉巖内狗,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怪嫌,死亡現(xiàn)場離奇詭異,居然都是意外死亡柳沙,警方通過查閱死者的電腦和手機岩灭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赂鲤,“玉大人噪径,你說我怎么就攤上這事「蛱唬” “怎么了熄云?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妙真。 經(jīng)常有香客問我缴允,道長,這世上最難降的妖魔是什么珍德? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任练般,我火速辦了婚禮,結果婚禮上锈候,老公的妹妹穿的比我還像新娘薄料。我一直安慰自己,他們只是感情好泵琳,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布摄职。 她就那樣靜靜地躺著誊役,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谷市。 梳的紋絲不亂的頭發(fā)上蛔垢,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音迫悠,去河邊找鬼鹏漆。 笑死,一個胖子當著我的面吹牛创泄,可吹牛的內(nèi)容都是我干的艺玲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鞠抑,長吁一口氣:“原來是場噩夢啊……” “哼饭聚!你這毒婦竟也來了?” 一聲冷哼從身側響起碍拆,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤若治,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后感混,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端幼,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年弧满,在試婚紗的時候發(fā)現(xiàn)自己被綠了婆跑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡庭呜,死狀恐怖滑进,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情募谎,我是刑警寧澤扶关,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站数冬,受9級特大地震影響节槐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拐纱,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一铜异、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秸架,春花似錦揍庄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沃测。三九已至,卻和暖如春缆镣,著一層夾襖步出監(jiān)牢的瞬間芽突,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工董瞻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人田巴。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓钠糊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壹哺。 傳聞我的和親對象是個殘疾皇子抄伍,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容