Vuforiaについて
今ViufoliaでARの研究、開発をしているので、自分なりに纏めようと思う。
現段階でGroudPlaneに関しては実装予定がないので参考サイトだけ表記しておきます。
【Unity】【AR】Unity2017.3+Vuforia7で水平面検知する - するめとめがね
目標
マーカを読み込んでオブジェクトを表示する
オートフォーカスの実装
開発環境
Unity2017.4.6f1
Vuforia7.5.20
実機はGalaxyS8 android8.0
vufoliaの概要
マーカを読み込んでオブジェクトを表示することができる
水平面検知をし、オブジェクトを出現させる。
サービスに関しては、有料と無料が両方ある。
Vufoliaの導入
自分が調べた段階では、三つあるのかと思います。
1:公式サイトからダウンロード
- このサイトに飛び、Downloadsに行く。
- 既にUnityがある場合は、Dowload Unity Extensin(Legacy)からダウンロードする。
ない場合はDownload Unityへ
これの場合、自分の見解でPlayerSetting→XR Settingsがこのようになる。
別の方法でチェックボックスが表示されます。
特に実装する上で問題はないかと思います。
2:Exeからダウンロード
際程のPlayerSettingにあったVuforia Augmented Realityでダウンロードする。
ダウンロードしたらXR Settings->vuforia Augmented Realitにチェックをいれる。
※この場合1のパターンと実装の方法が少し変わります。
3:アセットストアからダウンロード
以下から確認ができるかと思います。
特にこの辺は、検証していませんので、ご自身でお願いします。
assetstore.unity.com
実装
先ほどの1と2のパターン合わせて書きます。
1の場合
Vuforia->Prefabsへ行く。
ここでHierarchyにARCameraとImageTargetを配置します。
※このタイミングでMainCameraは、削除しておく。
2の場合
GameObject->Vuforia->ARCameraを追加
GameObject->Vuforia->ImageでImageTargetのオブジェクトがSceneに追加される
※1と同様でMainCameraは、削除しておく。
ここまでが1と2の違いになるかと思います。
残りは同じはずなので、混乱することはないかと思います。
ImageTargetの設定1
先ほど配置したImageTargetに、表示したいオブジェクトを子に追加する。
Licensekeyの設定
ARCameraにボタンでOpen vufolia confugurationがあるのでそれを押す。
そうするとこのような画面に行くかと思います。
ここでAppLicenseKeyが必要になるので公式サイトへ行き、アカウントを作る。
基本は英語だが、ほぼ直観で行けると思うので困らないかなって思います。
アカウントが作れたらログインをし、Developをクリックする。
・次にGetDevelopmentKeyをクリック。
アプリ名を入力するのとチェックボックスを押すだけ。
・入力したアプリ名が表示されるので、それをクリックすると
長い文字列が表示されます。
これがLicenseKeyになるのでコピーする。
・Unityに戻り、AppLicenseKeyに入力する。
Databeseの設定
次にARで読み込む画像をあらかじめ設定しておく必要がる。
先ほどのLicenceKeyの引き続きでTargetManager->AddDatabeseに飛ぶ。
・Nameの欄にDatabeseの名前を決める。
・TypeはDeviceにする。
作成したDatabeseからAddTargetを選択
・TypeはSingleImage
・Fileは、読み込む画像
※読み込む画像は、それなりに色が多めにある画像が好ましい。
画像も少し大きいほうが、認識は、早い気がします。
僕は513×813ピクセルで作っていました。
・Widthは1
・Nameは、そのままの通りです。
これで画像が追加されました。
ここでRatingというのがあり、星マークが多いほど認識がしやすい。
なるべくカラフルなのは、これが関係しています。
・Download Databese(All)を選択
・Select a development PlatformはUnityEditorを選択
これによってUnityPackageがダウンロードされるので、プロジェクトにD&Dをする。
・先ほどのLicenceKeyを入力した場所に、Databeseがあります。
そこに自分のDatabeseとActivateにチェックを入れる。
オブジェクトを表示するのに、大事なので表示されなかったらここを要確認です。
ImageTargetの設定2
またここでImageTargetに戻る。
・DatabeseとImageTargetを設定できるようになるので
自分が用意したモノにする。
ここでEnableExtendedTrackingにチェックを入れておく
これはARマーカが外れてもトラッキングができちゃいます。
~参考サイト~
tsubakit1.hateblo.jp
ここまで来たらスマホに書き出しをしましょう。
書き出しに関して、以下を参考にお願いします。
UnityからAndroid実機ビルド手順(2017.08版) - Qiita
https://qiita.com/taroyan/items/2ff7f6aadd640221bde5
実行したら画像のようになれば成功です。
現在やってることのチラ見になってしまうが・・・
オートフォーカスの実装
Androidには、オートフォーカスが対応されてない場合があります。
以下のコードをARCameraにアタッチをする。
using System.Collections; using System.Collections.Generic; using UnityEngine; using Vuforia; using UnityEngine.UI; public class FocusController : MonoBehaviour { private bool mVuforiaStarted = false; void Start () { VuforiaARController vuforia = VuforiaARController.Instance; if (vuforia != null) vuforia.RegisterVuforiaStartedCallback(StartAfterVuforia); } private void StartAfterVuforia() { mVuforiaStarted = true; CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO) } void OnApplicationPause(bool pause) { if (!pause && mVuforiaStarted) { CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO) } } }
~参考サイト~
【Unity】VuforiaでARアプリを作るときのTIPS 10選 - おもちゃラボ
作業量はそこそこ多いが、簡単に実装できてしまうので
興味がある人は、今回紹介しなかったGroudPlaneにもチャレンジしてみて下さい。
長文になってしまいましたが、足りないとこがもしあればコメント下さい。