Vuforiaについて

今ViufoliaでARの研究、開発をしているので、自分なりに纏めようと思う。
現段階でGroudPlaneに関しては実装予定がないので参考サイトだけ表記しておきます。
【Unity】【AR】Unity2017.3+Vuforia7で水平面検知する - するめとめがね

目標

マーカを読み込んでオブジェクトを表示する
オートフォーカスの実装

開発環境

Unity2017.4.6f1
Vuforia7.5.20
実機はGalaxyS8 android8.0

vufoliaの概要

マーカを読み込んでオブジェクトを表示することができる

水平面検知をし、オブジェクトを出現させる。

サービスに関しては、有料と無料が両方ある。

Vufoliaの導入

自分が調べた段階では、三つあるのかと思います。
1:公式サイトからダウンロード

  1. このサイトに飛び、Downloadsに行く。
  2. 既にUnityがある場合は、Dowload Unity Extensin(Legacy)からダウンロードする。

 ない場合はDownload Unityへ
これの場合、自分の見解でPlayerSetting→XR Settingsがこのようになる。
f:id:kkam0707:20181207223732p:plain
別の方法でチェックボックスが表示されます。
特に実装する上で問題はないかと思います。
2:Exeからダウンロード
際程のPlayerSettingにあったVuforia Augmented Realityでダウンロードする。
ダウンロードしたらXR Settings->vuforia Augmented Realitにチェックをいれる。
※この場合1のパターンと実装の方法が少し変わります。
3:アセットストアからダウンロード
以下から確認ができるかと思います。
特にこの辺は、検証していませんので、ご自身でお願いします。
assetstore.unity.com

実装

先ほどの1と2のパターン合わせて書きます。
1の場合
Vuforia->Prefabsへ行く。
f:id:kkam0707:20181207231421p:plain
ここでHierarchyにARCameraとImageTargetを配置します。
※このタイミングでMainCameraは、削除しておく。

2の場合
GameObject->Vuforia->ARCameraを追加
GameObject->Vuforia->ImageでImageTargetのオブジェクトがSceneに追加される
※1と同様でMainCameraは、削除しておく。

ここまでが1と2の違いになるかと思います。
残りは同じはずなので、混乱することはないかと思います。

ImageTargetの設定1

先ほど配置したImageTargetに、表示したいオブジェクトを子に追加する。
f:id:kkam0707:20181208113228p:plain

Licensekeyの設定

ARCameraにボタンでOpen vufolia confugurationがあるのでそれを押す。
f:id:kkam0707:20181208112139p:plain

そうするとこのような画面に行くかと思います。

f:id:kkam0707:20181208112412p:plain
ここで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にチェックを入れる。
f:id:kkam0707:20181210111918p:plain
オブジェクトを表示するのに、大事なので表示されなかったらここを要確認です。

ImageTargetの設定2

またここでImageTargetに戻る。
・DatabeseとImageTargetを設定できるようになるので
 自分が用意したモノにする。
f:id:kkam0707:20181210112519p:plain
ここでEnableExtendedTrackingにチェックを入れておく
これはARマーカが外れてもトラッキングができちゃいます。
~参考サイト~
tsubakit1.hateblo.jp

ここまで来たらスマホに書き出しをしましょう。
書き出しに関して、以下を参考にお願いします。
UnityからAndroid実機ビルド手順(2017.08版) - Qiita
https://qiita.com/taroyan/items/2ff7f6aadd640221bde5

実行したら画像のようになれば成功です。
現在やってることのチラ見になってしまうが・・・
f:id:kkam0707:20181210114832p:plain

オートフォーカスの実装

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にもチャレンジしてみて下さい。
長文になってしまいましたが、足りないとこがもしあればコメント下さい。