UnityとBlenderでAR家具配置検討アプリを作ってみる#7~ARを使えるようにしてみよう~
前回ではスクリプトを作成してUnity上でモデルに機能追加をして動かしてみましたね。
ちなみに前回↓
さぁ、次はUnityにキットを読み込ませてできることを増やしていきましょう。
今回追加するキットはARにまつわるものです。
※今回はAndroidで説明します。余裕があればiOSも。。。できれば。。。いいな。。。
AR用のパッケージを追加する
それではUnityプロジェクトにARを使うためのパッケージを追加していきましょう。
ARCoreのインストール(iOSの場合はARkit)
上のメニューバーからWindowを選択し、その中のPackage Managerを選択します。
Package Managerのウィンドウが開くので、少し待ちます。
たくさんあるパッケージの中から、Android用のARパッケージである「ARCore XR Plugin」を選択し、インストールします。
iOSの場合は「ARkit XR Plugin」です。
ARFoundationのインストール
続いて、ARFoundationもPackage Managerからインストールします。
インストール後に画面は変わりませんが、押した「Install」ボタンがグレーアウトされていれば入っています(笑)
これでARを使うパッケージはインストール完了です!
ではARを使うためにいろいろUnityをいじっていきましょう。
AR用に設定を変えていく
ではAR用に設定を変更していきましょう。
変更するものはカメラですね。
AR用のカメラに変更する
まずはAR用のカメラを用意しましょう。
ARFoundationには専用カメラがあるのでそれを使います。
今のプロジェクトで使用しているMain Cameraは不要なので消しましょう。
そしてヒエラルキービューからAR Cameraを追加します。
AR Session Origin とAR Sessionを追加しましょう。
AR Session Originの中にAR Cameraが入っています。
これでAR用のカメラを使う準備はできました。
※今回はものが置けるかを見られれば良いので、AR Cameraの位置を動かして、モデルが見えるようにはしておいてください。
ARをするには地面を検出したいですよね。地面を検出する仕組みを入れましょう。
平面を検出する
ARアプリでは一般的にカメラから周辺の景色の特徴点から平面を検出します。
そのためには、AR Plane Managerというコンポーネントを追加します。
ヒエラルキービューのAR Session Originを選択した状態でインスペクタからAdd Componentを選択してコンポーネントを追加します。
平面検出には水平方向と垂直方向の両方を検出することができます。
今回は床に対してモデルを置きたいので、Detection ModeをHorizontalにしておきましょう。
Plane PrefabはNoneになっていますが、ここにオブジェクトをセットすると、平面検出をしたところにそのオブジェクトを描画してくれます。
Androidのアプリとして出力する
ではAndroidアプリとして出力して見てみましょう。
Platformの切り替え
メニュータブのFileからBuild Settingsを開きます。
最初はプラットフォームがPCになっていますが、今回はAndroidなのでAndroidを選択して、Switch Platformをポチします。
このままでBuildボタンを押したくなりますが、まだ設定が必要です。
Player Settingsの設定
Player Settingsからもう少し設定をしていきます。
Other Settingsの中身をいじっていきます。
まずはGraphics APIsの中にあるVulkanをマイナスアイコンを押して削除します。
次に、Minimum API LevelをAndroid 7.0以上にします。これはARCoreが対応しているAndroidのバージョンが7.0以降だからです。
私はAndroid9.0くらいにしています。
さて、これで設定が終わったのでBuild!!!。。。とはまだ行きません。
やってみるとわかりますが、エラーが出ます。
ではGradleを新しくしますか。
Gradleを新しくする
最新版のGradleをダウンロードしましょう。
下記サイトからダウンロードできます。
これの一番新しそうなものをダウンロードしてください。
そしてUnityに紐ついているGradleを新しくするための作業を行います。
UnityのメニューバーのEditからPreferenceを選択して、環境設定を開きます。
そうすると、環境設定ウィンドウが開くので、そこからExternal ToolsのAndroidにあるGradle Installed with UnityにGradleのパスを設定します。
適当なディレクトリに新しいGradleを格納し、そこにパスを通します。
私は C:\Users\yodai\Unity\Gradle に入れました。私の名前はYodaiです(笑)
そして、格納したパスをコピーして、Gradle Installed with Unityに貼り付けてパスを通します。
さて、あとは先ほど開いていたPlayer SettingsのplayerのPublishing Settings内の設定を行います。
Custom Gradle系のものにチェックを入れます。
次に、
Assets\Plugins\Android\mainTemplate.gradle
Assets\Plugins\Android\launcherTemplate.gradle
のファイルの先頭に、下の行を挿入します。
ファイルはメモ帳やら何やらで開いてください。
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
↑この文言がある場合は消しましょう。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
// Must be Android Gradle Plugin 3.6.0 or later. For a list of
// compatible Gradle versions refer to:
// https://developer.android.com/studio/releases/gradle-plugin
classpath 'com.android.tools.build:gradle:3.6.0'
}
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
よっしゃあああ!これでいけるぞおおお!
。。。となればいいのですが、まだです。
Android側の設定をしましょう。開発者モードにしていきます。
Androidを開発者モードにする
Androidの設定を開きます。
デバイス情報を開いて、ビルド番号を複数回タップすると開発者モードに切り替わります。
あとは、開発モードのオプションからUSBデバッグをONにします。
ついに用意が整いました。
さて、AndroidスマホをPCに接続して、Build And Runしましょう!
ビルドする前に、Scenes In Buildでどのシーンをビルドするか指定しましょう。
Add Open Scenesをポチして、ビルドしたいシーンを選択します。
さて、これで満を持してBuild And Runをポチしましょう。
動きましたか?動いているといいなぁ。。。
iOSのアプリとして出力する
実機を持っていないのでちゃんとできるかわからないのでやり方だけになります。
・PlatformをiOSに変更する
・Player SettingsのOther Settingsの設定を行う
・Camera Usage Descriptionに適当なコメントを入れる
・Target minmum iOS Versionを11以上に変更する
・Require ARkit supportにチェックを入れる
・ArchitectureをARM64に変更する
さて、あいぽんをPCに接続して、Build And Runしましょう!
動きましたか?動いているといいなぁ。。。
最後に
これでUnityでスマホのカメラを使ってAR表示することができるようになりました。
今回はほぼ作業みたいなものだったので、また次回はスマホ画面でモデルを操作できるボタン等を追加して遊んでみましょう。
モデルを動的に生成するスクリプトも書いてみましょうか。
さぁ、ここから面白くなってきます!頑張っていきましょう!
ではではー!
.