1.錨點
這個概念一開始不太容易理解法绵。那么如何理解錨點呢想括?
這樣假如我們現(xiàn)在正在創(chuàng)作一本電子版小說,我發(fā)現(xiàn)每次繼續(xù)寫小說都要拉到文檔最后好麻煩⊙_⊙好了其實要解決這個問題也挺簡單的,我在開始添加個結(jié)尾書簽直接跳到結(jié)尾就好了●ω●,書簽多方便想鏈接到哪里都可以,好了我們加了一個結(jié)尾書簽方便我們每次寫新的內(nèi)容爽锥。
但是后來我發(fā)現(xiàn)一個問題,我每次寫完都要修改這個書簽的位置o_O畔柔,因為每次寫完新的內(nèi)容結(jié)尾位置也改變了...好不快樂~~好吧我想到一個辦法在文章結(jié)尾處加一個"End"的字符,讓書簽指向"End"每次我都在"End"前面添加內(nèi)容救恨,這樣也算完美的解決了問題了吧
~~~在這里我們的書簽,永遠說他在"物體"的相對位置(書簽指向"End"第一個字符的位置,一開始我們加的"結(jié)尾書簽"也是指向最后一個字符的后面)释树,這里書簽也就是"錨點"容燕。
實際中我們一般讓錨點指點一個特殊的點稱為"定位點",并攜帶一些其他信息脑漫,來表示"物體"(一般我們還會在書簽中加入標題信息,有時我們也會在書簽中加入某個章節(jié)的字數(shù)满钟,以便我們可以直接對所有章節(jié)進行分割)
2.用于表示現(xiàn)實世界的對象和位置類
ARAnchor
AR錨點,可用于表示對象在AR場景中真實世界的位置和方向。
ARPlaneAnchor
AR平面錨點,有關(guān)在AR會話中檢測到的真實平面的位置和方向的信息,ARPlaneAnchor繼承自ARAnchor
ARHitTestResult
通過檢查AR會話的設備攝像機視圖中一個點找到有關(guān)現(xiàn)實世界表面的信息桩盲。
3.用于相機和場景細節(jié)類
ARFrame
作為AR會話的一部分捕獲的視頻圖像和位置跟蹤信息寂纪。
ARCamera
有關(guān)AR會話中拍攝的視頻幀的攝像機位置和成像特性的信息。
ARLightEstimate
與AR會話中捕獲的視頻幀相關(guān)聯(lián)的估計場景照明信息赌结。
4.AR代理
(1)ARSessionObserver
你可以實現(xiàn)的方法來響應AR會話狀態(tài)的更改捞蛋。ARSessionDelegate、ARSCNViewDelegate柬姚、ARSKViewDelegate這此協(xié)議定義了共同的可選方法拟杉,以及協(xié)議。當采用這些協(xié)議之一時量承,可以實現(xiàn)該協(xié)議的方法:
func session(ARSession, cameraDidChangeTrackingState: ARCamera)
通知代表ARKit設備位置跟蹤質(zhì)量的變化搬设。
func sessionWasInterrupted(ARSession)
告訴代表會話已暫時停止處理幀和跟蹤設備位置。
func sessionInterruptionEnded(ARSession)
告訴代表會話已恢復處理幀和跟蹤設備位置撕捍。
(2)ARSessionDelegate
如果您需要直接使用ARFrame捕獲會話的對象或直接跟蹤會話的跟蹤ARAnchor對象集的更改請執(zhí)行此協(xié)議拿穴。通常情況下,你建立一個自定義視圖顯示AR時忧风,采用這個協(xié)議的內(nèi)容默色,如果顯示與SceneKit或SpriteKit內(nèi)容中,ARSCNViewDelegate或ARSKViewDelegate協(xié)議提供類似的信息狮腿,并與技術(shù)集成腿宰。此協(xié)議擴展了ARSessionObserver協(xié)議弟蚀。
func session(ARSession, didUpdate: ARFrame)
向代理人提供新捕獲的攝像機圖像和附帶的AR信息。
func session(ARSession, didAdd: [ARAnchor])
告訴代表一個或多個錨點已被添加到會話中酗失。
func session(ARSession, didUpdate: [ARAnchor])
告訴代表會話已調(diào)整一個或多個錨點的屬性义钉。
func session(ARSession, didRemove: [ARAnchor])
告訴代表一個或多個錨已從會話中刪除。
(3)ARSKViewDelegate
實現(xiàn)此協(xié)議以提供ARAnchor與視圖的AR會話跟蹤的對象相對應的SpriteKit內(nèi)容规肴,或者管理視圖對這些內(nèi)容的自動更新捶闸。此協(xié)議擴展了ARSessionObserver協(xié)議。
func view(ARSKView, nodeFor: ARAnchor)
請求委托人提供一個對應于新添加的錨點的SpriteKit節(jié)點拖刃。
func view(ARSKView, didAdd: SKNode, for: ARAnchor)
告訴代理人删壮,一個與新的AR錨點相對應的SpriteKit節(jié)點已被添加到場景中。
func view(ARSKView, willUpdate: SKNode, for: ARAnchor)
告訴委托人SpriteKit節(jié)點的屬性將被更新以匹配其相應錨點的當前狀態(tài)兑牡。
func view(ARSKView, didUpdate: SKNode, for: ARAnchor)
告知委托人SpriteKit節(jié)點的屬性已更新央碟,以匹配其對應錨點的當前狀態(tài)。
func view(ARSKView, didRemove: SKNode, for: ARAnchor)
告訴代理人均函,與AR錨點相對應的SpriteKit節(jié)點已從場景中刪除亿虽。
(4)ARSCNViewDelegate
實現(xiàn)此協(xié)議以提供ARAnchor與視圖的AR會話跟蹤的對象相對應的SceneKit內(nèi)容,或者管理視圖對這些內(nèi)容的自動更新苞也。此協(xié)議擴展了ARSessionObserver協(xié)議洛勉。
func renderer(SCNSceneRenderer, nodeFor: ARAnchor)
請求委托人提供一個對應于新添加的錨點的SceneKit節(jié)點。
func renderer(SCNSceneRenderer, didAdd: SCNNode, for: ARAnchor)
告訴代理人如迟,一個與新的AR錨點相對應的SceneKit節(jié)點已添加到場景中收毫。
func renderer(SCNSceneRenderer, willUpdate: SCNNode, for: ARAnchor)
告訴代理,SceneKit節(jié)點的屬性將被更新以匹配其相應錨點的當前狀態(tài)殷勘。
func renderer(SCNSceneRenderer, didUpdate: SCNNode, for: ARAnchor)
告訴代理人此再,一個SceneKit節(jié)點的屬性已被更新,以匹配其相應錨點的當前狀態(tài)玲销。
func renderer(SCNSceneRenderer, didRemove: SCNNode, for: ARAnchor)
告訴代理人输拇,已將已刪除的AR錨點對應的SceneKit節(jié)點從場景中刪除。