ARで平面検出!UnityとARKit2.0でAR開発
あけましておめでとうございます。製造建設ソリューションサービス部の菱沼です。今年もVR/ARについての記事を書いていきたいと思います。
前回は3DモデルをマーカーにするARKit2.0のサンプルコードを動かしてみました。今回はUnityを利用して平面検出を行うサンプルコードを動かしていきます。
ARKit2.0とは
「ARKit2.0」とはAppleが提供しているiOS向けの「ARプラットフォーム」です。「ARKit2.0」では以下の新機能が追加されました。
〇水平面だけではなく、垂直面も検出
〇AR空間の永続化(アプリを終了しても配置したものが残る)
〇AR空間を複数人で共有
〇3Dオブジェクトをマーカーにできる
〇動いているオブジェクトであっても認識可能
動作環境
「ARKit2.0」の動作環境は以下の通りです。
〇iOSのみ
〇iOS12以上
〇iPhone:iPhone6s以降
〇iPad:iPad(5世代)以降
〇iPad Pro:iPad Pro(すべてのモデル)
UnityでARKit2.0を動作させる
さて、ここから本題のARKit2.0をUnityで使用する方法について解説していきます。
開発環境準備
以下をダウンロードもしくはアップデートしてください。Unityはアカウントを作成する必要があります。
- Xcode10以上(MacOSのバージョン10.13.6以上)
- Unity
- Unity-ARKit-Plugin
Unity-ARKit-Pluginは左側メニューの「ダウンロード」から「リポジトリをダウンロードする」を選択してください。
Unityでプロジェクト作成
1.ダウンロードした「Unity-ARKit-Plugin」を解凍
2.フォルダを任意の場所に配置
3.Unity起動
4.右上にある「Open」を選択
5.解凍したフォルダを選択
6.「Opening Project in Non-Matching Editor Installation」で
「Continue」を選択(Unityのバージョン違いを自動で修正してくれます)
7.「Unity Package Manager: Manifest relocation」で「OK」を選択
これでUnityのプロジェクトを開くことができます。
プロジェクト設定
1.上部メニューの「File」から「Build Settings…」を選択
2.「Scenes In Build」の項目から「UnityARKitPlugin/Examples/ARKit2.0/UnityARWorldMap/UnityARWorldMap」にチェックを入れる
3.「Platform」の項目から「iOS」を選択し、直下にある「Switch Platform」を選択(かなり時間がかかります)
4.「Switch Platform」の右にある「Player Settings…」を選択
5.「Other Settings」を選択
6.「Identification」の「Bundle Identifier」に任意の値を入力
例:com.〇〇〇.〇〇〇(comは変更しない)
7.「Configuration」の「Target minimum iOS Version」を「12.0」に変更
8.同じく「Configuration」の「Requires ARKit support」にチェックを入れる
実機で動作
1.「Build Settings」に戻り、「Build And Run」を選択
2.「Save As:」に任意の名前を入力
3.「save」を選択
4.Xcodeが起動するので、左側の「Unity-iPhone」を選択
5.「Signing」の「Team」に自身のAppleIDを指定する
6.iPhoneまたはiPadを接続する
7.Xcode上部メニューの再生、停止ボタンの横にある「ScanningApp>Generic iOSDevices」をクリックし、「Device」の項目から自身のiPhoneまたはiPadを選択
8.再生ボタンをクリックする
以上でサンプルプログラムの実行が完了となります。もし、実行したときに「Cloud not launch “ScanningApp”」の表示が出たときは、以下の手順を試してください。
1.iPhone,iPadの「設定」「一般」「デバイス管理」から登録したAppleIDをクリック
2.「”xxxxxx@xxxxx”を信頼」をクリック
3.再生ボタンをもう一度クリック
AR体験!
それでは最後にAR体験をしてみましょう。
[su_youtube url=”https://www.youtube.com/watch?v=VZqwwVWyIS8″ width=”400″ height=”220″]
平面を検出することができましたね。また、検出した平面にキューブを配置することもできます。
おわりに
いかがでしたか?平面検出を簡単に行うことができました。
特徴点がないと認識が難しいことが少し難点かと思われますが、それも近い将来改善されることでしょう。
ARKitの今後の展開に期待をしたいですね。次回はこのサンプルを活用して簡単なコンテンツを作成しようかと思います。
最後までお付き合いいただき、ありがとうございました。
▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!