今回はInstant Previewについてです。
Google VRには既に存在していたのですが、それがARCoreにも技術展開されたようです。

Instant Previewとは?

これまでは、実装したコードを動作確認するには、APKを作成してデバイスにインストールする一連の処理が必要でした。そして、その一連の処理が結構時間が掛かり試行錯誤する場合、この時間がとてもモヤモヤした時間でした。その時間を短縮するためにアプリ側で実装したスクリプト(SDK for Unity内のコードも含む)をPC側で実行して、デバイス上のInstant Previewを経由して実際のVR/AR処理を行うアプリ(VR: Google VRサービス、AR: ARCore)と通信を行い実行しているようです。
これによりAPKの作成とインストールがなくなるため、動作確認が早くなります。
ただし、Google VRとARCoreでInstant Previewを使用したときの見え方が異なります。
Google VR: デバイス上に表示される
ARCore: Unity Editorとデバイスの両方に表示される(※)
※ WindowsではオンボードのGPUではUnity Editorにしか表示されないようです(出典)。そして私のPCはNvidia GeForce GTX 960Mも入っていますが、それを使用するように変更してもデバイス側には表示されませんでした。。。

便利な機能ですが、一部制限があります。
  • ActivityのResume / Suspendイベントはサポートされていない
  • デバイス上でARCore Instant PreviewアプリをSuspendさせると、それからの出力が止まるために、Unity Editor上の表示は固まります。
  • ARCoreコンフィギュレーションの変更はサポートされていない
  • タッチイベントが一部制限される
  • 長押下やUI部品(※)へのタッチはできません。
    ※ UI部品へのタッチはUnityEditor上でマウスクリックすることは出来ます。

    また、UnityEditorの画面が端末の画面サイズと一致しないと座標が意図していない値になるようです。その場合、UnityEditorのサイズを変更すると改善されます。
    以下の部分を選択すると、プリセットされている画面サイズの下に「+」メニューがあるので、それを選択

    「+」を選択すると、以下のダイアログが表示されるので、そこに名称と画面幅・高さを設定して追加(ZenfoneARの場合、2560x1440に設定しました)。
    最初はUnityEditorのスケールが「1x」になっていると思いますので、全体が表示されるように変更すると見やすくなります。
  • 画面方向
  • Instant Previewはスクリプト自体はUnity Editor上で動作しているので、画面回転をハンドリングすることが出来ません。そのためにサンプルアプリ「ComputerVision」では常に画面縦方向(Portrait)として扱っています。そのため、Instant Previewで動作させると以下のように表示されます。


    ただ、これだと動作確認できないので、「Unity Editorの表示領域を変更すればいいよ」とGoogleから提案されています。実際にUnity Editorの表示領域をPortraitなものに変更すると以下のように表示されます。
詳細はこちらを参照してみてください。

設定方法

設定方法を一応記載しますが、ほとんどすることは無いです。
  1. ここに記載されているように、Unityプロジェクトを生成
  2. Instant Preview使用時にタッチイベントを有効にする場合、以下のコードを追加
  3. #if UNITY_EDITOR
    using EditorInput = UnityEngine.Input;
    #endif
    
これで、動作させることが可能になります。

コメントの投稿