一般男性が趣味を晒していくだけ

社会人をしながら趣味で人生を謳歌している。。。はず

UnityとBlenderでAR家具配置検討アプリを作ってみる#7~ARを使えるようにしてみよう~

前回ではスクリプトを作成してUnity上でモデルに機能追加をして動かしてみましたね。

ちなみに前回↓

hinunun.hatenablog.com

 

さぁ、次はUnityにキットを読み込ませてできることを増やしていきましょう。

今回追加するキットはARにまつわるものです。

※今回はAndroidで説明します。余裕があればiOSも。。。できれば。。。いいな。。。

 

 

AR用のパッケージを追加する

それではUnityプロジェクトにARを使うためのパッケージを追加していきましょう。

ARCoreのインストール(iOSの場合はARkit)

上のメニューバーからWindowを選択し、その中のPackage Managerを選択します。

Package Managerのウィンドウが開くので、少し待ちます。

f:id:hinunun:20210727160619p:plain

f:id:hinunun:20210727160717p:plain

たくさんパッケージがあるから興味があるやつは試すと楽しい

たくさんあるパッケージの中から、Android用のARパッケージである「ARCore XR Plugin」を選択し、インストールします。

iOSの場合は「ARkit XR Plugin」です。

f:id:hinunun:20210727160948p:plain

f:id:hinunun:20210727161145p:plain

追加されればOK

ARFoundationのインストール

続いて、ARFoundationもPackage Managerからインストールします。

f:id:hinunun:20210727161800p:plain

インストール後に画面は変わりませんが、押した「Install」ボタンがグレーアウトされていれば入っています(笑)

 

これでARを使うパッケージはインストール完了です!

ではARを使うためにいろいろUnityをいじっていきましょう。

 

AR用に設定を変えていく

ではAR用に設定を変更していきましょう。

変更するものはカメラですね。

AR用のカメラに変更する

まずはAR用のカメラを用意しましょう。

ARFoundationには専用カメラがあるのでそれを使います。

今のプロジェクトで使用しているMain Cameraは不要なので消しましょう。

そしてヒエラルキービューからAR Cameraを追加します。

AR Session Origin とAR Sessionを追加しましょう。

f:id:hinunun:20210727162623p:plain

f:id:hinunun:20210727184900p:plain

f:id:hinunun:20210727184950p:plain

AR SessionとAR Session Originの両方がないとだめ

AR Session Originの中にAR Cameraが入っています。

これでAR用のカメラを使う準備はできました。

 

※今回はものが置けるかを見られれば良いので、AR Cameraの位置を動かして、モデルが見えるようにはしておいてください。

 

ARをするには地面を検出したいですよね。地面を検出する仕組みを入れましょう。

平面を検出する

ARアプリでは一般的にカメラから周辺の景色の特徴点から平面を検出します。

そのためには、AR Plane Managerというコンポーネントを追加します。

ヒエラルキービューのAR Session Originを選択した状態でインスペクタからAdd Componentを選択してコンポーネントを追加します。

f:id:hinunun:20210727163522p:plain

f:id:hinunun:20210727163652p:plain

f:id:hinunun:20210727163744p:plain

これが追加されればOK

平面検出には水平方向と垂直方向の両方を検出することができます。

今回は床に対してモデルを置きたいので、Detection ModeをHorizontalにしておきましょう。

 

Plane PrefabはNoneになっていますが、ここにオブジェクトをセットすると、平面検出をしたところにそのオブジェクトを描画してくれます。

 

Androidのアプリとして出力する

ではAndroidアプリとして出力して見てみましょう。

Platformの切り替え

メニュータブのFileからBuild Settingsを開きます。

f:id:hinunun:20210727164459p:plain

f:id:hinunun:20210727164551p:plain

Platformはたくさん選択できる。Unityをインストールするときにオプション設定を忘れずに。

最初はプラットフォームがPCになっていますが、今回はAndroidなのでAndroidを選択して、Switch Platformをポチします。

f:id:hinunun:20210727164744p:plain

Switch PlatformがBuildになればOK

このままでBuildボタンを押したくなりますが、まだ設定が必要です。

Player Settingsの設定

Player Settingsからもう少し設定をしていきます。

f:id:hinunun:20210727165118p:plain

f:id:hinunun:20210727165230p:plain

Other Settingsの中身をいじっていきます。

まずはGraphics APIsの中にあるVulkanをマイナスアイコンを押して削除します。

f:id:hinunun:20210727165433p:plain

マイナスアイコンを押すと削除される

次に、Minimum API LevelをAndroid 7.0以上にします。これはARCoreが対応しているAndroidのバージョンが7.0以降だからです。

私はAndroid9.0くらいにしています。

 

さて、これで設定が終わったのでBuild!!!。。。とはまだ行きません。

やってみるとわかりますが、エラーが出ます。

f:id:hinunun:20210727172618p:plain

なんと。。。

ではGradleを新しくしますか。

Gradleを新しくする

最新版のGradleをダウンロードしましょう。

下記サイトからダウンロードできます。

gradle.org

これの一番新しそうなものをダウンロードしてください。

そしてUnityに紐ついているGradleを新しくするための作業を行います。

UnityのメニューバーのEditからPreferenceを選択して、環境設定を開きます。

f:id:hinunun:20210727173411p:plain

そうすると、環境設定ウィンドウが開くので、そこからExternal ToolsのAndroidにあるGradle Installed with UnityにGradleのパスを設定します。

f:id:hinunun:20210727175044p:plain

適当なディレクトリに新しいGradleを格納し、そこにパスを通します。

私は C:\Users\yodai\Unity\Gradle に入れました。私の名前はYodaiです(笑)

そして、格納したパスをコピーして、Gradle Installed with Unityに貼り付けてパスを通します。

f:id:hinunun:20210727180513p:plain

さて、あとは先ほど開いていたPlayer SettingsのplayerのPublishing Settings内の設定を行います。

f:id:hinunun:20210727181650p:plain

いろいろ設定するのめんどいよねー

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'
     
}
   
}
}

f:id:hinunun:20210727182101p:plain

このファイルたちに挿入する。

よっしゃあああ!これでいけるぞおおお!

。。。となればいいのですが、まだです。

 

Android側の設定をしましょう。開発者モードにしていきます。

 

Androidを開発者モードにする

Androidの設定を開きます。

バイス情報を開いて、ビルド番号を複数回タップすると開発者モードに切り替わります。

f:id:hinunun:20210727183509p:plain

開発者モード!!!

あとは、開発モードのオプションからUSBデバッグをONにします。

f:id:hinunun:20210727183712p:plain

これでUSBをつないでアプリをビルドできる

ついに用意が整いました。

さて、AndroidスマホをPCに接続して、Build And Runしましょう!

 

ビルドする前に、Scenes In Buildでどのシーンをビルドするか指定しましょう。

Add Open Scenesをポチして、ビルドしたいシーンを選択します。

f:id:hinunun:20210727194039p:plain

必要なシーンの数だけ選択する。今回は画面一つだから一つだけ。

さて、これで満を持してBuild And Runをポチしましょう。

動きましたか?動いているといいなぁ。。。

 

iOSのアプリとして出力する

実機を持っていないのでちゃんとできるかわからないのでやり方だけになります。

・PlatformをiOSに変更する

・Player SettingsのOther Settingsの設定を行う

  ・Camera Usage Descriptionに適当なコメントを入れる

  ・Target minmum iOS Versionを11以上に変更する

  ・Require ARkit supportにチェックを入れる

  ・ArchitectureをARM64に変更する

f:id:hinunun:20210727190921p:plain

さて、あいぽんをPCに接続して、Build And Runしましょう!

 

動きましたか?動いているといいなぁ。。。

 

最後に

これでUnityでスマホのカメラを使ってAR表示することができるようになりました。

今回はほぼ作業みたいなものだったので、また次回はスマホ画面でモデルを操作できるボタン等を追加して遊んでみましょう。

モデルを動的に生成するスクリプトも書いてみましょうか。

さぁ、ここから面白くなってきます!頑張っていきましょう!

 

ではではー!

.