28
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-07

#背景
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話〜

28
34
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?