前略

Mirage Solo がきたぁぁぁぁぁぁ

開封

というわけで弊社に Mirage Solo が届いたので最速で開封していきます。

DSC05951.jpg

一体型 HMD 系は入ってるパーツが少ないので楽で良いですね、 Oculus Go よりも若干こちらの方が物が少ないでしょうか。

「 Mirage Solo とは?」という方はこちらの Impress さんの記事が解りやすいのでこちらをご参照ください。

VR 空間を歩き回れるスタンドアロンの HMD 「 Lenovo Mirage Solo with Daydream 」実機レビュー

6DoF 体験……したい

初期設定も済ませて、さぁ!6DoF(ポジショントラッキング)一体型の力を見せてくれ!と行きたいところですが PlayStore のカテゴリが解りづらくどれが6DoF 対応コンテンツか解らない状態です。

「これ、あれですね、探すより作った方が早そうですね」

という気分になってきたので6DoF 体験するためのコンテンツを作る事にしました。30分あればいけるでしょう。

開発環境構築

Mirage Solo は Daydream ベースなので言ってしまえば Android です。つまり Unity で Android 開発環境さえ用意してしまえば環境構築は完成です。

Android の開発環境構築は世間に大量に出回っているので割愛します。

(この割愛した環境構築が一番大変なんですがね……)

今回の構築した環境は以下の通りです。

ソフトウェア名 バージョン番号
Unity 2018.1.0.f2
Android SDK Platform 8.1(API Level27)
Android SDK Platform-Tools 27.0.1
Android SDK Tools 26.1.1
JDK 1.8.0_171

CRS を Mirage Solo 対応にする

新 VR デバイスを試すならやっぱり、ユニティちゃん「 Candy Rock Star 」(以下、 CRS)ですよね!

016.png

というわけでこれをサクッと Mirage Solo 対応にしていきます。

CRS の Project は Unity4.5系時代の物なので Unity2018で果たして動作するのだろうかという不安もありましたが Unity2018でもサクッと自動 API 変換が通りました。

Camera-DepthTexture シェーダーの修正

Unity4時代にはあったが今はなくなってしまったという項目がありそれが原因で「 Camera-DepthTexture 」の Build が通りませんのでサクッと該当項目削除します。

015.png

下記行数を削除してください。

117行目 TreeVertBark(v);
149行目 TreeVertLeaf(v);

(恐らく今は使って無いので単純削除で大丈夫な筈)

カメラリグを作る

CRS ではカメラが良い感じに手ぶれしながら、カメラスイッチ等が入っていますのでこれを無効にしていきます。

画像の緑枠が元々使われているカメラリグで橙色枠のカメラリグがこれから作る物です。

  1. 緑枠のカメラの ComponentValue をそのまま新規作成したカメラに突っ込みます。
  2. 緑枠のカメラについてる Component も全てコピーして先ほど作成したカメラに貼り付けていきます。
  3. Prefab のトップになる空の GameObject と、位置や角度のオフセットになる空の GameObject を作って橙色枠のような階層にします。
  4. それを Prefab 化します。
  5. 赤線を引いた「 Depth Of Field(被写界深度)」と「 Jitter Motion(手ぶれ再現)」を無効にします。削除してしまっても OK です。被写界深度の方は良い感じに調整するのであれば残していてもいいかもしれません。

009.png

StageDirector の設定

StageDirector の「 Main Camera Rig 〜」の Prefab を先ほど作成したカメラリグの Prefab に置き換えます。

010.png

続いて「 StageDirector.cs 」の中にあるカメラ操作周りを全てコメントアウトします。

public void SwitchCamera(int index)
{
    //if (mainCameraSwitcher)
    //    mainCameraSwitcher.ChangePosition(cameraPoints[index], true);
}

public void StartAutoCameraChange()
{
    //if (mainCameraSwitcher)
    //    mainCameraSwitcher.StartAutoChange();
}

public void StopAutoCameraChange()
{
    //if (mainCameraSwitcher)
     //   mainCameraSwitcher.StopAutoChange();
}

PlayerSettings の設定

BuildTarget を Android にしてないかたはこの辺りで Android に設定しましょう。

PlayerSettings で変更する内容は画像の赤枠部分です。

  • 色空間を Linear から Gamma に
  • MinimumAPI を Android7.0に(Daydream は7〜なので)
  • VR サポートに Daydream を追加

014.png

Deploy

あとは普通の Android 端末のように Build&Run すれば終わりです! めっちゃ簡単です。 Daydream の SDK すら入れません。

他詰まりそうな所

Deploy ができない

デバッグモードになっていますか? Android と同じように「ビルド番号」の部分連続タップで開発者モードを ON にできます。

PC でデバイスを認識出来ない

コネクタが奥まってるので丈夫なケーブルだと奥まで刺さってないことが…… (今回の一番の詰まりポイントだった)

スクショとか画面キャプチャできます?

Daydream ボタンと音量小ボタンを同時に長押しでスクショできます。

Daydream ボタンと音量大ボタンを同時長押しで画面録画が始まります。

で撮影録画した奴どうやって PC に保存するんです?

これどうやるんですかね? PC に繋いでも外部ストレージに出来ないんですよね…… とりあえず adb コマンドでお茶濁します。

005.png

基本 Android なので困ったら Android のノウハウそのまま使えますし、 Android の非 VR アプリも動くので適当なファイラとか入れてしまえば良いと思います。

さいごに

特に6DoF 特有の設定とかなく6DoF 駆動してしまいます。 とても簡単に Build できますし、操作周りさえうまくやれば Oculus Go 、 Gear VR 、 Daydream マルチ対応のアプリはそこまで苦労せずに作れそうですね。

Mirage Solo でキャプチャした物がこちらですが、一体型とは思えないヌルサクです。(キャプチャしながらなのに)発熱もとても少ないですし、とても良い端末だと思いますので未購入の皆さん買いましょう!

以上、本記事は

  • 環境構築 30分
  • 開発 30分
  • ケーブルが刺さってない事に気付かずに悩んでる時間 10分
  • ユニティちゃんを眺める 15分
  • おやつタイム 10分(表参道で買ったアイス)
  • 記事執筆 2時間

でお送りしました!


本記事はユニティちゃんライセンス条項の元に提供されています

clipboard.png