ARKit學習記錄1

ARkit是ios11新推出來的一個強大的AR框架痢甘,需要設備SE匀归、6s焙压、6ps拆融、7挺份、7p唆樊,就是需要A9處理器以上的設備杈笔,Xcode9.最低配置

用Xcode創(chuàng)建項目時鱼冀,會選擇SceneKit序六、SpriteKit任连、Metal

SceneKit:3D視圖

SpriteKit: 2D視圖

Metal:沒用過..但是必須是得用真機測試,不限制機型

剛創(chuàng)建好項目時例诀,會默認給你寫上很多代碼随抠,這些代碼就可以運行出一個飛機AR效果裁着,可是比較low。

-----------------------------------------------------------

ARSCNView:相當于是一個呈現AR效果的視圖

sceneView.showsStatistics = true //運行后視圖底部有FPS檢測拱她,true打開顯示二驰,false不顯示?

SCNScene:場景, 例如默認的飛機秉沼,直接設置顯示的場景

let scene = SCNScene(named: "art.scnassets/ship.scn")! ? ? ? "art.scnassets/ship.scn" 這個就是要加載的飛機資源

可以創(chuàng)建不同的幾何模型? 例如:


首先創(chuàng)建一個場景:

let scene = SCNScene()

然后創(chuàng)建一個幾何模型

let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0) ??

也可以創(chuàng)建球體SCNSphere? 桶雀,創(chuàng)建一個管SCNTube...很多

創(chuàng)建好之后,因為這個創(chuàng)建的是物品模型唬复,也就是節(jié)點矗积,所以要把自定義的物品放到節(jié)點上才能顯示 ?

let sphereNode = SCNNode(geometry: box) ?//創(chuàng)建節(jié)點,把盒模型添加進去

sphereNode.position = SCNVector3(0,0,-0.5) //設置節(jié)點的顯示位置

scene.rootNode.addChildNode(sphereNode) //把節(jié)點放到SCNScene的根節(jié)點上

sceneView.scene = scene ? //顯示盒子AR效果

顯示這個后是白色的敞咧,因為沒有渲染棘捣,創(chuàng)建渲染器

let material = SCNMaterial() // material 渲染器

material.diffuse.contents = UIColor.red //可以添加顏色 、添加圖片休建、添加視頻乍恐、添加gif圖

box.materials = [material] //渲染器添加到box中,可以添加多個


viewWillAppear中的這兩行代碼必須寫

override func viewWillAppear(_ animated: Bool) {

super.viewWillAppear(animated)

let configuration = ARWorldTrackingConfiguration()

sceneView.session.run(configuration)

}

也可以給view添加手勢,來創(chuàng)建多個

let topGesutre = UITapGestureRecognizer(target: self, action: #selector(ViewController.handtap(gestureRecognizer:)))

view.addGestureRecognizer(topGesutre)

@objc func handtap(gestureRecognizer:UITapGestureRecognizer){

guard let currentFrame = sceneView.session.currentFrame else {

return

}

//創(chuàng)建一張圖片

let image = SCNPlane(width: sceneView.bounds.width / 6000, height: sceneView.bounds.height / 6000)

image.firstMaterial?.diffuse.contents = sceneView.snapshot() //截屏

image.firstMaterial?.lightingModel = .constant

// ?創(chuàng)建節(jié)點

let node = SCNNode(geometry: image)

sceneView.scene.rootNode.addChildNode(node)

// ?追蹤相機的位置

var translate = matrix_identity_float4x4 ?//為4x4

translate.columns.3.z = -0.1 //3軸 z軸上相對于攝像頭往前10厘米

node.simdTransform = matrix_multiply(currentFrame.camera.transform, translate) //矩陣相乘

}

補充:播放視頻 要用到SpriteKit框架中的一個類SKVideoNode 參考 http://www.reibang.com/p/be06bf357564

http://www.reibang.com/p/bc5e6fb35410

let scene = SCNScene();

//創(chuàng)建幾何模型

let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

let shapre = SCNSphere(radius: 0.1)

//創(chuàng)建節(jié)點

let boxSCNNode = SCNNode(geometry: shapre)

boxSCNNode.position = SCNVector3Make(0, 0, -0.2)

scene.rootNode.addChildNode(boxSCNNode)

//創(chuàng)建視頻url

let url = Bundle.main.url(forResource: "ARKit視頻", withExtension: "mp4")

let nodeVideo = SKVideoNode.init(url: url!) //創(chuàng)建視頻節(jié)點

nodeVideo.size = CGSize(width: 1600, height: 900)

nodeVideo.position = CGPoint(x: nodeVideo.size.width/2, y: nodeVideo.size.height/2)

nodeVideo.zRotation = CGFloat(M_PI)

let skScene = SKScene() ?//創(chuàng)建視頻場景類

skScene.addChild(nodeVideo) //把視頻節(jié)點添加到場景中

skScene.size = nodeVideo.size

shapre.firstMaterial?.diffuse.contents = skScene //渲染球體

nodeVideo.play() ?//播放視頻

sceneView.scene = scene ?

sceneView.allowsCameraControl = true

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末测砂,一起剝皮案震驚了整個濱河市禁熏,隨后出現的幾起案子,更是在濱河造成了極大的恐慌邑彪,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胧华,死亡現場離奇詭異寄症,居然都是意外死亡,警方通過查閱死者的電腦和手機矩动,發(fā)現死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門有巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悲没,你說我怎么就攤上這事篮迎。” “怎么了示姿?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵甜橱,是天一觀的道長。 經常有香客問我栈戳,道長岂傲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任子檀,我火速辦了婚禮镊掖,結果婚禮上乃戈,老公的妹妹穿的比我還像新娘。我一直安慰自己亩进,他們只是感情好症虑,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著归薛,像睡著了一般谍憔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苟翻,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天韵卤,我揣著相機與錄音,去河邊找鬼崇猫。 笑死沈条,一個胖子當著我的面吹牛,可吹牛的內容都是我干的诅炉。 我是一名探鬼主播蜡歹,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涕烧!你這毒婦竟也來了月而?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤议纯,失蹤者是張志新(化名)和其女友劉穎父款,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體瞻凤,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡憨攒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了阀参。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝集。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛛壳,靈堂內的尸體忽然破棺而出杏瞻,到底是詐尸還是另有隱情,我是刑警寧澤衙荐,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布捞挥,位于F島的核電站,受9級特大地震影響忧吟,放射性物質發(fā)生泄漏树肃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一瀑罗、第九天 我趴在偏房一處隱蔽的房頂上張望胸嘴。 院中可真熱鬧雏掠,春花似錦、人聲如沸劣像。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耳奕。三九已至绑青,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屋群,已是汗流浹背闸婴。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芍躏,地道東北人邪乍。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像对竣,于是被迫代替她去往敵國和親庇楞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • (一) AR(增強現實技術)介紹 增強現實(Augmented Reality,簡稱 AR)临燃,是一種實時地計算攝影...
    NewSongs閱讀 2,319評論 5 53
  • 基礎部分(The Basics) 當推斷浮點數的類型時睛驳,Swift 總是會選擇Double而不是Float。 結合...
    gamper閱讀 1,293評論 0 7
  • 1.什么是增強現實(Augmented Reality柏靶,簡稱AR)? 是一種實時地計算攝影機影像的位置及角度并加上...
    xtXuTeng閱讀 464評論 0 0
  • 希爾排序(Shell Sort) 算法思想:先將待排序表分割成若干個形如L[i, i+d, i+2d, ... ,...
    SmallRookie閱讀 349評論 0 1
  • 1:Coredata講解 Coredata是一個良好的對象圖管理工具,那么對象圖也就是實體??實體包括兩個部分钥勋,屬...
    iOS小吳閱讀 239評論 0 0