Edited at

ARKitを触ってみよう 〜第1話〜

More than 1 year has passed since last update.


背景

Appleが毎年行う開発者向けイベント WWDC(Worldwide Developers Conference)。

今年は、2017年6月5日〜9日開催。

WWDC2017の話は色々あるが、自分が気になったのは、Appleが、とうとうARにがっつり参画してきたこと。そこで、発表された中の一つであるARKitというものを触ってみることにした。

もともと、VR/ARに興味があり、暇な時にUnity(C#で)を使い、VRアプリとか少し作ってみたりしていた。

が、SwiftでARアプリを作って遊んでみる将来も楽しそう!ってなったのがはじまり。

今回は、ARKitのサンプルをシュミレーターで動作確認ができるところまでいきます。

(ゴール:ARKitを使ってアプリを作成)


必要なもののインストール

Xcode9 beta/iOS11は、Apple Developer Programのメンバーシップがないと

ダウンロードできないが、去年個人でアプリ開発するために登録したものが(最近放置気味だが)

まだ期限きれてなかったので早速ダウンロード。

https://developer.apple.com/download/

ここからiOS11とXcode9のベータ版をダウンロード。

(Xcode9のベータ版はmacOS10.12.4以上なら使えた)


Xcodeを開いてみる

新規でプロジェクトを早速作ろう。

開くと、AR用のものが!!

これを今回は触っていきます。

使うのは、やっぱり、3D扱えるSceneKitにしました。(他に、SpriteKitとMetal)

ちなみに、この状態でビルドすると、この飛行船が画面中央に表示される形になっており、飛行船の後ろが見える。

そして、シュミレーターの雰囲気がなんかリアル。

また、今回このXcode9では、iPhone7のこのシュミレーターと同時にiPadも平行してシュミレートするとかもできるよう。

現状のViewController.swift。

import UIKit

import SceneKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

@IBOutlet var sceneView: ARSCNView!

override func viewDidLoad() {
super.viewDidLoad()

// Set the view's delegate
sceneView.delegate = self

// Show statistics such as fps and timing information
sceneView.showsStatistics = true

// Create a new scene
let scene = SCNScene(named: "art.scnassets/ship.scn")!

// Set the scene to the view
sceneView.scene = scene
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

// Create a session configuration
let configuration = ARWorldTrackingSessionConfiguration()

// Run the view's session
sceneView.session.run(configuration)
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)

// Pause the view's session
sceneView.session.pause()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}

// MARK: - ARSCNViewDelegate

/*
// Override to create and configure nodes for anchors added to the view's session.
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()

return node
}
*/

func session(_ session: ARSession, didFailWithError error: Error) {
// Present an error message to the user

}

func sessionWasInterrupted(_ session: ARSession) {
// Inform the user that the session has been interrupted, for example, by presenting an overlay

}

func sessionInterruptionEnded(_ session: ARSession) {
// Reset tracking and/or remove existing anchors if consistent tracking is required

}
}

このサンプルコードをビルドするだけで、ARのアプリを体感できる!

(今後、この辺りをいじりちょっとずつオリジナリティを出して行く予定。)


最後に

今回、初めてXcode9のベータ版をいじってみた。

思ったことは、何と言ってもデバックがワイヤレスでできるので、線が嫌いな自分には嬉しい!!

これに関しては、最初に一度PCとデバック用端末をケーブルでつなぎ、

Xcodeのメニューのバー"Window"で、"Devices and Simulators"から、

Connect via networkにチェックする
と次からケーブルなしでOK!!

今週は時間ないので、来週あたり早いうちにコード触り出そう、、。

ARKitを触ってみよう 〜第2話〜で)


参考

ARKit リファレンス

https://developer.apple.com/documentation/arkit?changes=latest_minor

Unity ARKit プラグイン

https://oc.unity3d.com/index.php/s/3hfM9T05P9vOpCf

(これを使えば、Unityで簡単に作った3DオブジェクトをiPhoneから楽しめる)


アーカイブ

ARKitを触ってみよう 〜第1話〜

ARKitを触ってみよう 〜第2話〜

ARKitを触ってみよう 〜第3話〜