のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

Unity 2017.2で統合されるVuforiaを試してみる

2017.2からSDKをインポートせずにVuforiaが使えるようになるみたいです。
まだベータ版ですがVuforiaを試してみます。

今回試すのはVuforiaの公式GettingStaredのやつです。
注意事項としてまだベータ版なので、リリース非推奨かつ、将来の商用プロジェクトとして開発することも推奨していないとのことです。
こちらの記事の記載も大きく変わっていく可能性があるのでご注意ください。
https://library.vuforia.com/content/vuforia-library/en/articles/Training/getting-started-with-vuforia-in-unity-2017-2-beta.html

前提条件

Unity 2017.2.0b11
ビルドターゲットはAndroidで(iOS, UWPも選択可能とのこと)

導入していきます

Unityプロジェクト作成

以下のリンクからインストール

Unity2017.2.0b11のインストール時にVuforia Augmented Reality SupportをOnにします
f:id:noshipu:20170921212033p:plain

そのままUnityプロジェクトを作成します

Vuuforiaを有効にする

Build SettingsからPlatformをAndroidに切り替えます。
Build Settings / Player Settings /XR Settings に移動してVuforia ARをOnにします。
f:id:noshipu:20170921231202p:plain

VuforiaなObjectを配置していく

1. GameObject->Vuforia->ARCameraを追加
※インポートが促された場合、許可する
このタイミングでMainCameraも削除しておいていいでしょう。

2. ARCameraのComponentのOpen Vuforia configurationを選択

3. Datasetsを有効化しておく

4. GameObject->Vuforia->ImageでImageTargetのオブジェクトがSceneに追加される

5. ImageTargetの子供にCubeを置いてみます
f:id:noshipu:20170921232445p:plain

これで準備完了です。

試してみる

Webカメラが使えればEditorから動かすことができます


Androidビルドでも動く


まだ任意のマーカーを登録できなかったので、2017.2のベータがとれるタイミングで使えるようになったらまた触ってみたいと思います

unity-landing.vuforia.com

DaydreamでUIのMaskが効かないときの対処メモ

Daydreamでビルドした際にuGUIのMaskがきかなかった時の対処法です。

対処

PlayerSettingsのDaydreamのDepthFormatを[24bit depth | 8-bit stencil]に変更すると直ります
f:id:noshipu:20170907231526p:plain

Instant PreviewでDaydreamアプリ開発を効率化する

こんな感じにビルドせずに実機で動作が見れます

GVRを利用したプロジェクトにInstant Previewを取り込むと、ビルドせずに実機で動作を確認することが可能になり、UnityEditorのランタイム上で色々調整ができるようになります。
シェーダーや実際のVRでの見え方の調整ではとても重宝しそうです。

導入は以下です。

Instant Previewのマニュアルはこちら
https://developers.google.com/vr/tools/instant-preview

既にGVRを使用しているUnityプロジェクトを対象に説明していきます。
UE4でもできるみたいなので、マニュアル参考にしてください。

1. Instant PreviewのUnityパッケージのインポート

下記のリンクからダウンロードします。
https://github.com/googlevr/gvr-instant-preview/releases
使用しているGVRのバージョンに合わせてunitypackageをダウンロードします。

今回使用していたGVRのバージョンが1.7だったので、"InstantPreviewForGVRUnitySDKv1.70.0.unitypackage"をダウンロードしました。
ダウンロードが終わったらプロジェクトにインポートします。

2. Prefabを配置

Assets/InstantPreview/GvrInstantPreviewMainをScene上に配置します。
Hierarchyを見ると各種設定項目があります。
f:id:noshipu:20170907165316p:plain
このScriptでadbコマンドを経由してInstantPreviewのアプリを自動的にインストールされます。

3. 実行する

Unityで再生を押すとアプリがインストールされます。
設定でWifi経由に変更することや、コントローラーのみを同期させることも可能なようです。
f:id:noshipu:20170907172602j:plain:w320

アプリがインストールされると実機側でデバッグできるようになります。

ストリーミングのパフォーマンス向上

Edit -> Project Settings -> Qualityから[V Sync Count]を[Don't Sync]に設定します。

その他の情報等については公式マニュアルを確認してください
https://developers.google.com/vr/tools/instant-preview

UnityでDaydream用の360度立体画像を作成する

DaydreamでGooglePlayに登録時に360度の立体画像が必要になります。
f:id:noshipu:20170818191555p:plain

今回はその画像の仕様と実際に撮影する方法をメモしておきます。

どこに使われるのか

Daydream端末のGooglePlayストア内に掲載されるアプリの背景画像になります。

360度画像の仕様

画像形式 EquirectangularのTop to Bottom形式
解像度 4096 x 4096 ピクセル
サイズ 15MB以内
ファイル形式 png or jpeg pngを推奨
透過情報 アルファなし

☆ 注意点

・正面にロゴ等を置いてもストアの情報で隠れるので注意が必要。
・プラットフォーム側でレンダリングされたUIとの奥行が衝突しないようにシーン内のオブジェクトをカメラから2.5m以上離れて撮影する必要がある
・ステレオ映像でなくても登録はできそう

背景素材の作り方

# WindowsでUnityを使って開発しているアプリを想定しています。

1. 360度撮影できるAssetをインポート

360度パノラマ画像を撮影する際に使用するメジャーなAssetですと下記があります。
(2017/8/21現在)

タイトル 価格 URL
360 Panorama Capture 無料 https://www.assetstore.unity3d.com/jp/#!/content/38755
SphericalImageCam $32.40 https://www.assetstore.unity3d.com/jp/#!/content/21979
VR Panorama 360 PRO Renderer $52.92 https://www.assetstore.unity3d.com/jp/#!/content/35102

今回は無料で使える360 Panorama Captureを紹介します。

2. TargetPlatformをPC Standaloneにする

Windows環境のStandalone選択状態で実行が必要になります。
Daydreamのプロジェクトだとモバイル依存の箇所でエラーがでたりするので、別プロジェクトに切り分けたりするのもありかもです。

3. 空のGameObjectを作成し、CapturePanorama.csをアタッチ

4. CapturePanoramaのパラメータを設定

・Capture StereoscopicをONに設定
・Panorama Widthを4096に設定

5. Unityを再生し、Pキーを押す

撮影され、プロジェクトフォルダの中に撮影された画像が入る。
Top to Bottom形式のステレオパノラマ画像が撮影できたので、GooglePlayに登録することができます!

もし視差なしの画像を用意するのであれば、Capture StereoscopicをOffにして撮影した画像を画像編集ツールを使って上下で2枚つなげれば、視差なしの画像を登録することができます。

360度の背景が必須画像であれば、OculusのようにGoogleVRの中にキャプチャのツールもSDKに含まれているとありがたいですね。