#背景
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のメンバーシップがないと
ダウンロードできないが、去年個人でアプリ開発するために登録したものが(最近放置気味だが)
まだ期限きれてなかったので早速ダウンロード。
ここから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話〜