ARKit - 第一個AR項目

移動AR平臺
高級API
支持A9以上設備(不支持模擬器)
Xcode9及以上 iOS 11及以上
移動設備:SE 6S 6SP 7 7SP...

三大特性

追蹤

1、全局追蹤
2、視覺慣性測距VIO
3、沒有外部設備

場景理解

1、平面檢測(現實世界的理解)
2、命中測試(動作)
3、光估計

渲染

簡單集合
。。。
SceneKit
SpriteKit
Metal

相機捕捉現實世界 ARKit
3D
SceneKit


QQ截圖20170901210224.png

ARSession


QQ截圖20170901210720.png

QQ截圖20170901210840.png

開始 創建項目

QQ20170901-232414@2x.png

QQ20170901-232540@2x.png

ARKit 入門掌握的四大點

1、幾何

2、節點

3、渲染

4、手勢

//先實例化一個空的SCNScene類
let scene = SCNScene()

1、幾何

//創建幾何實例,定義一個SCNBox類的幾何實例,然后創建盒子,并將其作為根節點的子節點,根節點就是scene  
 let box = SCNBox(width:0.1,height:0.1,length:0.1,chamferRadius:0)

2、節點

//創建子節點
let boxNode = SCNNode(geometry:box)
//x,y,z軸   -0.2就是前邊
boxNode.position = SCNVector3(0,0,-0.2)
//把節點添加到根節點scene上
scene.rootNode.addChildNode(boxNode)

3、渲染

let material = SCNMaterial()//先創建一個渲染器
// material.diffuse.contents = UIColor.red//設置顏色
material.diffuse.contents = UIImage(named:"1.png")//設置圖片到節點上
box.materials = [material]//使用這個渲染器渲染

4、手勢

registerGestureRe();//調用
func registerGestureRe() {
//創建手勢
        let tap = UIGestureRecognizer(target:self ,action: #selector(tapPed))
//將手勢添加到sceneView上
        self.sceneView.addGestureRecognizer(tap)
    }
 
{
//球體 加上手勢
        let scene = SCNScene()
        let sphere = SCNSphere(radius:0.3)//0.3米
        let material = SCNMaterial()
        material.diffuse.contents = UIImage(named:"1.png")
        sphere.materials = [material]
        
        let sphereNode = SCNNode(geometry:sphere)
        sphereNode.position = SCNVector3(0,0,-0.5)
        scene.rootNode.addChildNode(sphereNode)
        sceneView.scene = scene
registerGestureRe();//調用
}
@objc func tapPed(gestureRecognizer:UIGestureRecognizer){
        
        let sceneView = gestureRecognizer.view as!ARSCNView
        let touchLocation = gestureRecognizer.location(in: sceneView)
        let hitRersults = sceneView.hitTest(touchLocation, options: [:])
        //一開始的時候 index = 0
        if !hitRersults.isEmpty {
            if index == self.textures.count{
                
                index = 0
                
            }
            guard let hitRersult = hitRersults.first else {
                return
            }
            let node = hitRersult.node
            node.geometry?.firstMaterial?.diffuse.contents =UIImage(named:textures[index])
            index += 1
        }
        

OVER!

探索:

除了立方體、球體還有什么形狀的圖形可以嘗試一把呢?
碳原子模型
參考文章:http://www.cocoachina.com/ios/20141113/10205.html

渲染上:視頻、 gif

渲染視頻:要用到SpriteKit框架中的一個類SKVideoNode,這個類主要用來在2D游戲中渲染視頻的,今天我們就借助這個類,實現在3D場景中播放視頻
參考:http://www.lxweimin.com/p/be06bf357564

//1
let scnView = SCNView(frame: self.view.bounds);
 scnView.scene = SCNScene()
 self.view.addSubview(scnView);
// 2創建一個攝像機
let cameraNode = SCNNode()
 scnView.scene?.rootNode.addChildNode(cameraNode);
//3創建一個節點并綁定一個平面幾何對象
  let boxNode = SCNNode()
  scnView.scene?.rootNode.addChildNode(boxNode);
//4創建一個2D游戲場景和一個播放視頻的對象
let url = Bundle.main.url(forResource: "123-pad", withExtension: "mp4")
let videoNode = SKVideoNode(url: url!)
let skScene = SKScene()
skScene.addChild(videoNode)
//5 給平面體設置渲染內容
 plane.firstMaterial?.diffuse.contents = skScene
//6 播放視頻
 videoNode.play()
//7打開攝像頭控制查看效果
 scnView.allowsCameraControl = true;

渲染 gif:nill??

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 你希望如何被別人記得? 你認為什么最重要? 你要怎么從當下到達目的地? 以上三個問題是相關聯的,我是誰?...
    Aloe_慧閱讀 403評論 2 4
  • 蔡康永在《給殘酷社會的善意短信》中寫道:15歲覺得游泳難,放棄游泳,到18歲遇到一個你喜歡的人約你去游泳,你只好說...
    李欣悅1996L閱讀 164評論 0 0
  • 管理的負循環-人員流動大,很多崗位總是新人履職,工作不熟悉,大錯不犯,小錯不斷 。此起彼皮,重視解決問題 忙來忙去...
    三月天olivia閱讀 1,422評論 0 0
  • 《艾倫詩集》第6篇 《艾倫日記本》第84篇原創文章 《怎留明月照山崗?!》 ——艾倫 中/秋/月/明/人/盡/望,...
    艾倫教練閱讀 234評論 0 2