一覧に戻る

EPSON スマートグラス向けのセットアップ

2017.09.22Epsonスマートグラス

セットアップ

このトピックでは、EPSONスマートグラス向けプロジェクトのセットアップについて説明します。

Android Studioプロジェクトのセットアップ

このトピックではAndroid Studioを使用しています。EclipseのサポートはWikitude SDK 5.0リリースで非推奨になり、将来のバージョンではサポートされないことに注意してください。

  1. 新しいAndroidアプリケーションプロジェクトを作成します。Wikitude SDK Androidパッケージにはサンプルも同梱されています。サンプルでは以下のすべてのステップがすでに完了しています。

  2. libs / wikitudesdk.aarファイルをモジュールのlibsフォルダ(プロジェクトのルート/app/libs)にコピーします。

  3. モジュールのbuild.gradleを開きます。以下のコードに示すように、wikitudesdk.aarを依存関係として追加し、libsフォルダが検索されるようにします。

    android {
        ...
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile (name: 'wikitudesdk', ext:'aar')
        compile 'com.android.support:appcompat-v7:21.0.3'
    }

    repositories {
        flatDir{
            dirs 'libs'
        }
    }
  4. ライセンスをご購入済みの場合は、指定したパッケージ名をapplicationIdとして設定します。

        defaultConfig {
            applicationId "xxxx"
        }
  5. 「AndroidManifest.xml」に下記の権限を追加します。

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" android:required="true" />
    <uses-feature android:name="android.hardware.location" android:required="true" />
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
    <uses-feature android:name="android.hardware.sensor.compass" android:required="true" />
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
    <uses-sdk android:targetSdkVersion="19" android:minSdkVersion="9"/>
  6. AndroidManifest.xmlで、ArchitectView(以下はwearableArchitectViewと呼ばれる)を保持するアクティビティに対してandroid:configChanges="screenSize|orientation"を設定する必要があります。たとえば、以下のように設定します。

    <activity android:name="com.yourcompany.yourapp.YourArActivity" android:configChanges="screenSize|orientation"/>
  7. 有効なトライアルライセンスキーを入力します。無料トライアルキーを入手するには、このセクションをご参照ください。

ArchitectView

Wikitude SDKは、ネイティブのAndroid SDKではないことにご注意ください。基本的なコンセプトは、wearableArchitectViewをプロジェクトに追加し、ライフサイクルイベントについて通知することです。wearableArchitectViewはカメラサーフェスを作成し、センサーイベントを処理します。ARchitect Worldと呼ばれるAR体験はJavaScriptで実装され、アプリケーションのアセットフォルダ、または独自のサーバーにパッケージ化されます。AR体験は、HTMLやJavaScriptで書かれ、WikitudeのAR名前空間(AR.GeoObjectなど)のメソッドを呼び出します。

<script src="https://wikitude.com/libs/architect.js"></script>

AR名前空間を使用するHTMLファイルでは、wearableArchitectViewが適切に処理します。デスクトップブラウザでARchitect Worldをテストするには、JavaScriptエラーを回避して開発コンソールを表示するには、ade.jsツールを含める必要があります。

AR体験を別のアクティビティで処理することを推奨します。wearableArchitectViewをレイアウトXML内に宣言します。例えば、FrameLayoutの親タグ内に追加します。

<com.wikitude.architect.WearableArchitectView android:id="@+id/wearableArchitectView" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

WearableArchitectViewはカメラサーフェスを作成しているため、アプリケーション内の別の場所でカメラを使用している場合に備えて、カメラを適切に解放することができます。WearableArchitectViewはカメラ(正面または背面)のほかに、コンパスと加速度センサーの値を使用するので、OpenGL 2.0とAndroid 4.0以上のデバイスが必要です。WearableArchitectView.isDeviceSupported(Context context)は、現在のデバイスが必要なすべてのハードウェアとソフトウェアの要件を満たしているどうかをチェックします。

アクティビティのライフサイクルイベントをWearableArchitectViewに通知することは非常に重要です。アクティビティのライフサイクルメソッド内で、wearableArchitectViewのonCreate()、onPostCreate()、onPause()、onResume()、onDestroy()を呼び出します。アクティビティでwearableArchitectViewのメンバ変数を定義するのがベストプラクティスです。wearableArchitectViewアクティビティのonCreate()の直後に設定し、その後にメンバ変数を使用してwearableArchitectViewにアクセスします。

this.wearableArchitectView = (WearableArchitectView)this.findViewById( R.id.wearableArchitectView );
final ArchitectStartupConfiguration config = new ArchitectStartupConfiguration();
config.setLicenseKey( * license key */ );
this.wearableArchitectView.onCreate( config );

AR体験をロードするには、アクティビティのonPostCreate()を使用してください。

this.wearableArchitectView.onPostCreate();
this.wearableArchitectView.load( "YOUR-AR-URL" );

最初にデバイスでArchitectViewを実行する際にWikitude SDKはキャリブレーションがあるかどうかを確認します。キャリブレーションはデフォルトで外部ストレージに保存されていますが、wearableArchitectView.onPostCreate('calibration path')を呼び出して手動で設定することができます。Wikitude SDKを使用して他のアプリをインストールしたユーザーが同じキャリブレーションを使用できるように、デフォルトのキャリブレーションパスを使用することをお勧めします。キャリブレーションの詳細とカスタマイズする方法については、「キャリブレーション」をご参照ください。

wearableArchitectView.load()の引数は、独自のAR体験を定義したHTMLファイルへのパスを表します。このパスには、Web URL(http://またはhttps://で始まる)またはアセットのルートフォルダの相対パスを使用できます。例えば、wearableArchitectView.load('arexperience.html')とした場合、プロジェクトのフォルダ内にあるHTMLファイルをロードします。wearableArchitectView.load('http://your-server.com/arexperience.html')とした場合は、HTTPを使用してリモートサーバーからファイルをロードします。

ロケーション

ロケーションベース型ARアプリでは位置情報の管理が重要です。ユースケースに応じて、GPSまたはネットワーク経由で位置情報が把握され、都度更新されます。SDKExamplesプロジェクトではLocationProviderの基本的な実装方法を提供していますのでご確認ください。

2D/3D モード

Wikitude SDKには2つの異なる立体視モードがあります。

  • Wikitude SDKステレオスコピックモード
  • ハードウェアステレオスコピックモード

Wikitude SDKステレオスコピックモードでは、ビューを分割して、両目に対して個別に測定された画像をレンダリングします。これは、wearableArchitectView.setStereoscopic3dRenderingEnabled(3Dモードの場合はtrue、2Dモードの場合はfalse)を使用して有効にすることができます。

Epson Moverioのハードウェアステレオスコピックモードでは、両方のディスプレイで1つの画像が拡大されますが、これはハードウェアのボタンまたはEpson Moverio SDKを使用してトリガすることができます。BT-200の場合、画像は半分に分割され、左半分は左目に表示され、右半分は右目に表示されます。3Dモードの左右の画像は、ディスプレイに合うように伸張された480x540ピクセルです。つまり、ARオブジェクトのない通常のWebコンテンツを表示する場合は、幅を半分のサイズに変更する必要があります。すべてのARオブジェクトはWikitude Epson SDKによってレンダリングされます。つまり、内部で処理されるので幅を変更する必要はありません。ハードウェアステレオスコピックモードを有効にするには、wearableArchitectView.setStereoscopic3dDisplayModeEnabled(3Dモードの場合はtrue、2Dモードの場合はfalse)を使用できます。
ほとんどの場合、両方の立体モードを同じ値に設定するのが適切です。