iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
0

ARKit

今天來介紹一下ARKit,會做一個簡單的小Demo,可以在畫面中加入一個自己建立的物體。
首先在 StoryBoard 中先將畫面加入 ARSCNView 及 Button

https://ithelp.ithome.com.tw/upload/images/20181112/20107549Udxa0C0D2k.png
ARSCNView是用來顯示使用3DSceneKit内容增強相機畫面的AR體驗的畫面。

https://ithelp.ithome.com.tw/upload/images/20181112/2010754994HHIsOlUQ.png

然後在程式碼的部分
首先我們要先 import ARKit

import ARKit

再將 ARSCNView 拉進程式碼中做關聯

@IBOutlet weak var sceneView: ARSCNView!

在加入一個變數

let configuration = ARWorldTrackingConfiguration()

然後在 viewDidLoad 的部分加入

self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints, ARSCNDebugOptions.showWorldOrigin]
self.sceneView.session.run(configuration)
self.sceneView.autoenablesDefaultLighting = true

debugOptions 中有兩個屬性
showFeaturePoints:會在畫面中顯示 ARKit 所偵測到的特徵點
showWorldOrigin:會在畫面中顯示 ARKit 的原點

autoenablesDefaultLighting:是在 ARKit 中加入環境反射

接著要將我們的 Add Button 拉進程式碼中做關聯
並加入一個 SCNNode 這是一個在 ARKit 中的節點
在這個節點加入一個 SCNBox 並設定他的寬高長及圓角
並將位置設定在 xyz 軸的 (0, 0, -0.2)
最後再將這個節點加入進我們的 sceneView

@IBAction func addAction(_ sender: UIButton) {
    let node = SCNNode()
    node.geometry = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.03)
    node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue // 表面顏色
    node.geometry?.firstMaterial?.specular.contents = UIColor.white // 反射顏色
    node.position = SCNVector3Make(0, 0, -0.2)
    self.sceneView.scene.rootNode.addChildNode(node)

效果如下

https://ithelp.ithome.com.tw/upload/images/20181112/20107549oolFxKBLju.jpg


上一篇
DAY28 本地資料庫(Realm)
下一篇
DAY30 ImageTracking
系列文
iOS APP開發學習筆記 30

尚未有邦友留言

立即登入留言