1
. 參考網址:
1. http://www.lxweimin.com/p/c97b230fa391 // 簡介
2. http://www.lxweimin.com/p/93173062ebb4 // apple 翻譯
3. http://www.lxweimin.com/p/d4febec89180 // 模型創建
4. http://www.cgtsj.com/
5. http://www.lxweimin.com/p/f854246ec690
6. http://yiweifen.com/html/news/WaiYu/98946.html //iOS - SceneKit顯示與交互3D建模
7. AR 現狀分析: http://www.cocoachina.com/apple/20171128/21319.html
-
demo 實例:
應用: 視+,幻視,招商銀行,掌上生活(搜索AR)
demo
描述:增強現實技術(Augmented Reality,簡稱 AR),是一種實時地計算攝影機影像的位置及角度并加上相應圖像、視頻、3D模型的技術,這種技術的目標是在屏幕上把虛擬世界套在現實世界并進行互動
所謂的增強現實 (Augmented Reality, AR),指的是向設備攝像頭產生的實時動態視圖中,添加 2D 或者 3D 元素,然后用某種方法讓這些元素看起來就處于現實世界當中,所產生一種用戶體驗。ARKit 提供了設備動作追蹤、相機場景捕獲和高級場景處理,并讓 AR 元素的展示變得極為便利,從而大大簡化了建立 AR 用戶體驗的工作難度。
-
一個最簡單地AR場景實現所需要的技術以及步驟包含如下:
多媒體捕捉現實圖像:如攝像頭
三維建模:3D立體模型
傳感器追蹤:主要追蹤現實世界動態物體的六軸變化,這六軸分別是X、Y、Z軸位移及旋轉。其中位移三軸決定物體的方位和大小,旋轉三周決定物體顯示的區域
坐標識別及轉換:3D模型顯示在現實圖像中不是單純的frame 坐標點,,而是一個三維的矩陣坐標。這基本上也是學習AR最難的部分,好在ARKit幫助我們大大簡化了這一過程。
除此之外,AR還可以與虛擬物體進行一些交互。
開發環境介紹
Xcode版本:Xcode9及以上
.iOS系統:iOS11及以上
iOS設備:處理器A9及以上(6S機型及以上)
MacOS系統:10.12.4及以上(安裝Xcode9對Mac系統版本有要求)
-
ARKit框架工作流程:
ARSCNView加載場景SCNScene
SCNScene啟動相機ARCamera開始捕捉場景
捕捉場景后ARSCNView開始將場景數據交給Session
Session通過管理ARSessionConfiguration實現場景的追蹤并且返回一個ARFrame
給ARSCNView的scene添加一個子節點(3D物體模型)
- 8dc489a1-884d-46cb-af22-d8c0f92a1e81.png
demo 講解
SCNView : 抗鋸齒:antialiasingMode
SCNScene:游戲場景,游戲場景 主要是有幾何模型,燈光,相機,和其他的屬性組成,SCNScene 包含 3D場景,和場景中的內容.作用:添加各種元素到場景,讀取場景文件,講場景寫入文件......
SCNNode:在SCeneKit 中節點是一個抽象概念,節點是看不見摸不著的東西,沒有幾何形狀,但是有位置,及其自身坐標.在長江中創建一個節點后,就可以在這個節點上放游戲元素了.比如任務模型,燈光,攝像機等.節點上可以添加節點
SCNLight: 燈光.光源分為四種: 1. 環境光(SCNLightTypeAmbient),這種光沒有方向,位置在無窮遠處,光均勻的散射在物體上2.點光源(SCNLightTypeOmni):有固定位置,方向360度,可以衰減4. 平行方向光(SCNLightTypeDirectional):只有照射的方向,沒有位置,不會衰減 5.聚焦光源:(SNCLightTypeSpot):光有固定位置,也有方向,也有照射區域,可以衰減
-
SCNAction: 行為動畫
- 移動,旋轉,縮放,透明度,隱藏或者不隱藏,等待,節點刪除
-
SCNGeometry: SCeneKit 游戲框架中的幾何對象.將幾何對象綁定到節點上,顯示到view
- 系統包含的,正方體,平面(SCNPlane),金字塔,球體,圓柱體,圓錐體,管道,換面,地板(SCNFloor),立體字,自定義形狀(通過貝塞爾曲線)創建SCNShape ,然后賦值給Node 節點
SCNPhysicsWorld: 物理世界對象,作用: 控制全局屬性(比如重力和其他類型的力,還有它的速度),間接修改或者注冊場景中的物理身體的連接等行為,管理物理身體的碰撞行為,執行特殊的接觸測試(如發射,掃射)
粒子系統: SceneKit 提供的粒子系統:(fire,confetti(五彩紙屑),bokeh(散景),rain(雨),Reactor(反應堆),smoke(煙),star(星))
-
物理行為(SCNPhysicsBehavior,抽象類,要研究他的子類): 物理行為定義: 定義一個或者多個物理組織的高級行為,行為包括連接多個物體的關節,可以讓他們一起移動,也可以定義車輪這種行為,讓身體像騎車一樣滾動.
- SCNPhysicsHingeJoint: 連接兩個物體,并允許他們在一個單一的軸上圍繞對方旋轉
- SCNPhysicsBallSocketJoint: 連接兩個物體,并允許他們在任何方向上圍繞對方旋轉
- SCNPhysicsSliderJoint: 連接兩個物體,并允許他們彼此之間滑動或者旋轉,滑塊關節像電機一樣工作,在兩個物體之間施加力或轉矩.
- SCNPhysicsVehicle: 組合物理身體成為類似汽車底盤的東西,你可以控制汽車的駕駛,剎車和加速,使用SCNPhysicsVehicleWheel 對象定義車輪的外觀和物理屬性.
SCNConstraint : 約束