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

背景

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話〜


『 Swift 』Article List