ARCoreとARKitを試してみよう.
今月はGoogle ARCoreとApple ARKitをすこし試してみました.とりあえず,それぞれのSDKをUnity環境で使って,サンプルを改造して自分が作ったモデルとかをタップした位置に表示する簡単な内容のアプリを作ってみます.
はじめに
この記事はAndroidアプリとかCとかプログラムは何となく分かるけど,Unityって詳しくないしよくわかんないけどとりあえずARナントカアプリを試してみたいという感じでやったもののレポートなので同じ位の知識の人向けです.テキトーに書いてるので動かなくても知りません.
参考までに私の環境:
PC:MacBook Pro 13'
Unity
- ver2017.2.0b9 Personal
- 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で新規プロジェクトを作成します.
Assets>Import Package>Custom Package…からダウンロードしたarcore-unity-sdk-preview.unitypackageをインポートします.
Allを選択してからImport.
ImportできたらScenseからHelloARを開いてみます.
Build Settings…を開きます.
Build Settingsで,PlatformからAndroidを選択したらSwitch Platformします.Add Open Scenesを押してHelloARのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.
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のパスの位置などを確認してみてください.それでもなら検索してみましょう.
Build and Runで実機にアプリがインストールされるので遊んでみましょう.
タップした場所にAndroidロゴのキャラクタが表示されたかと思いますが,表示されるモデルを変えてみます.Prefabsフォルダに新しくPrefabをつくってあげます.
自分の表示したいモデルもドラッグアンドドロップで入れてあげます.他のCADでつくった.fbxファイルを使ってみました.
ヒエラルキータブのExampleControllerをクリックするとインスペクタータブに色々情報が表示されます.ExampleControllerにアタッチされているスクリプトHelloARControllerには,ARアプリ上の画面で検出された平面をタップした時にその位置にプレハブをインスタンスして配置するといった内容が記述されています.
ExampleControllerの詳細にあるHelloARControllerの設定にAndy Android Prefabの項目があります.
右側の丸いマーク⦿をクリックして,先程作成した表示したいモデルのPrefabを選択してダブルクリック.Andy Android Prefabの項目が選択したPrefabに変わります.
さあこれで,Bild and Runしてみます.タップした場所に表示されるヤツが変更されていると思います.後はスケールとかをいい感じに調整してみてあげてください.
参考までに,私が試したものを.↓
これだよ pic.twitter.com/XcWkJHyp2f
— つ (@k3174r0) 2017年9月5日
ARKit
ARkitを試すにはXcode9が必要です.古い情報ではbeta版をインストール必要と書かれていることがありますが,現在はMacのApp Storeからダウンロードできる最新のxcodeがもうARKit対応しています.アップデートしておきましょう.
Unity-Technologies / Unity-ARKit-Plugin / Downloads — Bitbucket
↑ここからリポジトリをダウンロードするをクリックしてARKit
のUnity用SDKをダウロードしてきます.
まずはプロジェクト作りましょう
Assetsフォルダにダウンロードしてきて解凍したUnity-Technologies-unity-arkit-plugin-ホニャララをドラッグアンドドロップしてあげます.
UnityARKitSceneを開きます.
Build Settingsで,PlatformからiOSを選択したらSwitch Platformします.Add Open Scenesを押してUnityARKitSceneのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.
インスペクタータブでPlayerSettings>Camera Usage Discriptionの項目に何かしら説明分を記入します.アプリの初回起動時にカメラ使用許可のメニューに表示される説明文です.ここが空白だと動かないです.
したらBuild and Runです.しばらくすると,Xcodeが開かれます.
Xcode上で,プロジェクトファイルの最上のUnity-iPhoneをクリックしてGeneralで幾つか変更します.Identity>Bundle Identiferを固有の名称に変更.Signing>Teamで自分のプロファイルを指定.(ここの設定は,いままでXcodeでiOSアプリを制作したことがない人は検索して自分で設定してください.)Generic iOS Deviceクリックしてを接続したiOSデバイスを指定します.あとはプレイボタン▶を押せば実機上にインストールされます.
タップした場所に灰色の箱が表示されたと思います.箱から自分が表示したいモデルに変えてみます.
ヒエラルキータブでHitCubeParent>HitCubeをクリックしてインスペクタータブでチェックを外して無効化します.自分が表示したいモデルをゲームオブジェクトにして.HitCubeParentの下に配置します.
追加したオブジェクトにAdd ComponentからUnityARnHitTestExampleスクリプトを追加します.
UnityARnHitTestExampleの設定項目Hit TransformにHitCubeParentを指定してあげます.
これで同じようにBuild and RunでXcodeからビルドして実機で確認してみましょう.モデルによっては,シーンでカメラとオブジェクトが同じ向きに配置されるので180度回転させてあげるとか調整をしてあげましょう.
参考までに私が試したモノ↓
こんどはARKitでつらい現実。iOS11リリースで画面収録も出来た。 pic.twitter.com/J1b0s6B9xR
— つ (@k3174r0) 2017年9月26日
おわりに
説明結構雑になってしまいましたすいません.この記事では一切ソースのスクリプト書き換えたりしなかったですが,実際は読んでいろいろ書いたりして試してみるといろいろおもしろいことが思いつくと思います.
試したのは平面検出・オブジェクト表示だけなので他にも色々できそうです.表示するモデルにRigidbody追加して落としたり転がしたりするだけでも面白そうです.
まだ全然わからないですが,私的にはARKitのほうがトラッキングが良かったりiPhone/iPadは数があるのでアプリを開発する上でいろいろ有利かなと思います.でもイジイジするのだとARCoreのが楽しい感じでした.あとARCoreのほうが名前がカッコイイ.