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