ARCoreとARKitを試してみよう.

今月はGoogle ARCoreとApple ARKitをすこし試してみました.とりあえず,それぞれのSDKをUnity環境で使って,サンプルを改造して自分が作ったモデルとかをタップした位置に表示する簡単な内容のアプリを作ってみます.

はじめに

この記事はAndroidアプリとかCとかプログラムは何となく分かるけど,Unityって詳しくないしよくわかんないけどとりあえずARナントカアプリを試してみたいという感じでやったもののレポートなので同じ位の知識の人向けです.テキトーに書いてるので動かなくても知りません.

 

参考までに私の環境:

PC:MacBook Pro 13'

Unity

  • ver2017.2.0b9 Personal

Androidバイス(ARCore用):GalaxyS8

  • OSバージョン忘れました

iOSバイス(ARKit用):iPad Pro 9.7' 2016

  • iOS11.0

 

ARアプリは実機がないとデバッグできないので,買いましょう.買うか迷って時間と思考を無駄にするくらいならカネをふんだんに使ってカネにならないことをしましょう.

 

ARCore

ARCoreで遊ぶのに必要なものをダウンロードしてきます.面倒なのでAndroidStudio(AndroidSDK)は導入済みのものとして説明します.

ARCore Downloads  |  ARCore  |  Google Developers

↑ここからarcore-preview.apkとarcore-unity-sdk-preview.unitypackageをダウンロードしてきます.apkはadb installコマンドで実機に入れてあげます.

とりあえずUnityで新規プロジェクトを作成します.

f:id:k3174r0:20170929211827p:plain

Assets>Import Package>Custom Package…からダウンロードしたarcore-unity-sdk-preview.unitypackageをインポートします.

f:id:k3174r0:20170929204826p:plain

Allを選択してからImport.

f:id:k3174r0:20170929213018p:plain

 ImportできたらScenseからHelloARを開いてみます.

f:id:k3174r0:20170929214841p:plain

Build Settings…を開きます.

f:id:k3174r0:20170929221053p:plain

Build Settingsで,PlatformからAndroidを選択したらSwitch Platformします.Add Open Scenesを押してHelloARのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.

f:id:k3174r0:20170929222230p:plain

PlayerSettingsから以下のように設定を変更します.

Other Settings > Multithreaded Rendering: Off
Other Settings > Package Name: 好きな名称に変更(com.Company.ProductName以外)
Other Settings > Minimum API Level: Android 7.0 'Nougat' (API Level 24)
Other Settings > Target API Level: Android 7.0 'Nougat' (API Level 24)
XR Settings > Tango Supported: On

 

これでサンプルはビルドできます.UnityでAndroidアプリをビルドしたことがある人はスッとできるかと思います.エラーが出る時はPreference>External ToolsでAndroidSDKのパスの位置などを確認してみてください.それでもなら検索してみましょう.

f:id:k3174r0:20170929225817p:plain

Build and Runで実機にアプリがインストールされるので遊んでみましょう.

 

タップした場所にAndroidロゴのキャラクタが表示されたかと思いますが,表示されるモデルを変えてみます.Prefabsフォルダに新しくPrefabをつくってあげます.

f:id:k3174r0:20170929233452p:plain

自分の表示したいモデルもドラッグアンドドロップで入れてあげます.他のCADでつくった.fbxファイルを使ってみました.

f:id:k3174r0:20170930003921p:plain

f:id:k3174r0:20170930004028p:plain

ヒエラルキータブのExampleControllerをクリックするとインスペクタータブに色々情報が表示されます.ExampleControllerにアタッチされているスクリプトHelloARControllerには,ARアプリ上の画面で検出された平面をタップした時にその位置にプレハブをインスタンスして配置するといった内容が記述されています.

f:id:k3174r0:20170930005109p:plain

ExampleControllerの詳細にあるHelloARControllerの設定にAndy Android Prefabの項目があります.

f:id:k3174r0:20170930010055p:plain

右側の丸いマーク⦿をクリックして,先程作成した表示したいモデルのPrefabを選択してダブルクリック.Andy Android Prefabの項目が選択したPrefabに変わります.

f:id:k3174r0:20170930011338p:plain

さあこれで,Bild and Runしてみます.タップした場所に表示されるヤツが変更されていると思います.後はスケールとかをいい感じに調整してみてあげてください.

 

参考までに,私が試したものを.↓

 

ARKit

ARkitを試すにはXcode9が必要です.古い情報ではbeta版をインストール必要と書かれていることがありますが,現在はMacApp Storeからダウンロードできる最新のxcodeがもうARKit対応しています.アップデートしておきましょう.

Unity-Technologies / Unity-ARKit-Plugin / Downloads — Bitbucket

↑ここからリポジトリをダウンロードするをクリックしてARKit

のUnity用SDKをダウロードしてきます.

まずはプロジェクト作りましょう

f:id:k3174r0:20170930044122p:plain

Assetsフォルダにダウンロードしてきて解凍したUnity-Technologies-unity-arkit-plugin-ホニャララをドラッグアンドドロップしてあげます.

f:id:k3174r0:20170930044352p:plain

UnityARKitSceneを開きます.

f:id:k3174r0:20170930044753p:plain

Build Settingsで,PlatformからiOSを選択したらSwitch Platformします.Add Open Scenesを押してUnityARKitSceneのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.

f:id:k3174r0:20170930045505p:plain

インスペクタータブでPlayerSettings>Camera Usage Discriptionの項目に何かしら説明分を記入します.アプリの初回起動時にカメラ使用許可のメニューに表示される説明文です.ここが空白だと動かないです.

f:id:k3174r0:20170930050156p:plain

したらBuild and Runです.しばらくすると,Xcodeが開かれます.

Xcode上で,プロジェクトファイルの最上のUnity-iPhoneをクリックしてGeneralで幾つか変更します.Identity>Bundle Identiferを固有の名称に変更.Signing>Teamで自分のプロファイルを指定.(ここの設定は,いままでXcodeiOSアプリを制作したことがない人は検索して自分で設定してください.)Generic iOS Deviceクリックしてを接続したiOSバイスを指定します.あとはプレイボタン▶を押せば実機上にインストールされます.

f:id:k3174r0:20170930052301p:plain

タップした場所に灰色の箱が表示されたと思います.箱から自分が表示したいモデルに変えてみます.

ヒエラルキータブでHitCubeParent>HitCubeをクリックしてインスペクタータブでチェックを外して無効化します.自分が表示したいモデルをゲームオブジェクトにして.HitCubeParentの下に配置します.

f:id:k3174r0:20170930053822p:plain

追加したオブジェクトにAdd ComponentからUnityARnHitTestExampleスクリプトを追加します.

f:id:k3174r0:20170930054506p:plain

UnityARnHitTestExampleの設定項目Hit TransformにHitCubeParentを指定してあげます.

f:id:k3174r0:20170930054806p:plain

これで同じようにBuild and RunでXcodeからビルドして実機で確認してみましょう.モデルによっては,シーンでカメラとオブジェクトが同じ向きに配置されるので180度回転させてあげるとか調整をしてあげましょう.

 

参考までに私が試したモノ↓

 

おわりに

説明結構雑になってしまいましたすいません.この記事では一切ソースのスクリプト書き換えたりしなかったですが,実際は読んでいろいろ書いたりして試してみるといろいろおもしろいことが思いつくと思います.

試したのは平面検出・オブジェクト表示だけなので他にも色々できそうです.表示するモデルにRigidbody追加して落としたり転がしたりするだけでも面白そうです.

まだ全然わからないですが,私的にはARKitのほうがトラッキングが良かったりiPhone/iPadは数があるのでアプリを開発する上でいろいろ有利かなと思います.でもイジイジするのだとARCoreのが楽しい感じでした.あとARCoreのほうが名前がカッコイイ.