2013年7月23日火曜日

Google Glass向けARアプリを10分で作る方法

前回、UnityからのGoogle Glassにアプリを転送する事に成功したので、今度は10分でGoogle Glass向けのARアプリを開発してみる。

今回使うAR EngineはVuforia。Qualcomm社が提供する世界トップレベルの認識エンジンを搭載している。Vuforiaのエコシステムは、6万以上の登録開発者、4500本以上のアプリで採用されている。まさに、AR界のUnityだ。


それでは、VuforiaのサイトのDownload the SDKからVuforiaのUnity Extensionをダウンロードしてくる。


ダウンロードしたUnity Extensionをダブルクリックする


Unityが実行され、PackageをImportするか聞いてくるので、[Import]を選択しUnityに取り込む。



TagetManagerのページに移動し、認識オブジェクトを作成する。
Create Databaseボタンを選択する。

作成するDatabase名を入力する。
今回は、recognize_go という名前にする。


recognize_goというDatabaseができあがる。recognize_goを選択する。


Add Targetを選択し、認識した画像を選ぶ



しばらくprocessingの状況になるので、しばらく待つ。プレビューが表示されたら、goにチェックマークをいれて、Download Selected Targetsを選択する


Unity Editorをえらび、Database Nameを入力し、Createを押すと、ダウンロードが始まる。


ダウンロードした、recognize_go.unitypackage をダブルクリックして、Unityに取り込む。


ここからは、Vuforiaを組み込んでいく。Main Cameraを選択し、Command+Deleteで削除する。



AssetsのQualcomm Augmented Reality>Prefabsフォルダに移動し、ARCameraとImageTargetをシーンに追加する。




それでは、ImageTargetを選択し、Inspectorを設定する。



InspectorのImage Target Behaviorの部分のData Setに先ほど読み込んだ、recognize_goをセットする。




うまくいけば、画面は下記のように変更される。


次にARCameraの設定をおこなう。ARCameraを選択し、Inspectorを編集する。



Data Set Load Behaviourの項目のLoad Data Set recognを有効にし、Activateも有効にする。


Google Glass用なので、とりあえずTextが表示されるように改造する。GUI Textを用いる。
AssetsのQualcomm Augmented Reality>ScriptフォルダにあるDefaultTrackableEventHandler.csにGUI Textを追加できるようにし、認識中には表示、認識していない時には非表示にする。

まずは、最初で、GUIText guitextinfoとし、GUI Textを追加できるようにする。

/// <summary>
/// A custom handler that implements the ITrackableEventHandler interface.
/// </summary>
public class DefaultTrackableEventHandler : MonoBehaviour,
                                            ITrackableEventHandler
{
    #region PRIVATE_MEMBER_VARIABLES
public GUIText guitextinfo;
     private TrackableBehaviour mTrackableBehaviour;


......

OnTrackingFound()で、 guitextinfo.enabled = true;
OnTrackingLost()で、 guitextinfo.enabled = false;
とする。
.....

   private void OnTrackingFound()
    {
        Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
        Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);

        // Enable rendering:
        foreach (Renderer component in rendererComponents)
        {
            component.enabled = true;
        }
         
        // Enable colliders:
        foreach (Collider component in colliderComponents)
        {
            component.enabled = true;
        }

        Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
        
        guitextinfo.enabled = true;
    }


    private void OnTrackingLost()
    {
        Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
        Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
        // Disable rendering:
        foreach (Renderer component in rendererComponents)
        {
            component.enabled = false;
        }

        // Disable colliders:
        foreach (Collider component in colliderComponents)
        {
            component.enabled = false;
        }

        Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
        
        guitextinfo.enabled = false;
    }

    #endregion // PRIVATE_METHODS
}

それでは、文字列を表示するGUI Textを追加する。
GameObject > Create Other > GUI Text を選択する。


targetImageを選択し、Guitextinfoの部分にGUI Text をドラッグ&ドロップする。


最後にGUI Textを編集する。
GUI TextのFontサイズを50にし、Textに

name: GO
born: 2011
made by: renee french

と入力して、完成。

あとは、Google Glassで表示するためにLandscapeの設定する。
File > Build Settings...を選択し、Player Settings...を選択する。



Default OrientationをLandscape Leftに設定する。


Google Glassの画面は下記のように表示される。



最後に、Vuforiaの特性上、ぬいぐるみ系は特徴点がすくなく、認識精度があまり上げられない可能性がある。


https://developer.vuforia.com/resources/dev-guide/natural-features-and-rating


0 件のコメント:

コメントを投稿