Bakulog

獏の夢日記的な何か。

Looking Glassが届いたので水を張ってみた

「ガジェット届いたのでいじりました」的な記事です。

  1. Looking Glassって何
  2. キャラを表示する(全身/上半身/バストアップ)
  3. 水槽っぽいから水槽にしてみよう
  4. 魚が泳げばかなり水槽なのでは
  5. まとめ

成果物はこんな感じです。

https://twitter.com/baku_dreameater/status/1084647897273053194

1. Looking Glassって何

裸眼で3D CGを立体視できる、ガラスの箱みたいなデバイスです。

公式ページ

裸眼で立体CGが出るデバイスでは他に
Gatebox等もありますが、Looking Glassは仕組み的に「ただのPC外付けモニター」という構成になっており、一般開発者フレンドリーを意識しているのが特徴です。

2. キャラを表示する(全身/上半身/バストアップ)

ここからはUnityで色々いじってみた話です。
手元ではUnity 2018.3.0f2を使っています。

単なるモデル表示に関しては、手元の環境ではGetting Startedガイドを読み、サンプルシーンを真似したら無事に映りました。

私の場合、ちょうど手元にVRMで遊ぼうとしたプロジェクトがあったため、四葉メリィさんのVRMモデルを表示してみました。

まず全身を映したもの。Looking Glassは横長なので、全身を入れると顔がよく見えなくなります。

https://twitter.com/baku_dreameater/status/1084072388004728832

上半身やバストアップの表示でも見栄えはよいです。表情をがっつりいじるとか、「キャラクターと喋ってます」感を出したりするのであれば、こちらの方が良いかもと感じます。

https://twitter.com/baku_dreameater/status/1084076846663127040

3. 水槽っぽいから水槽にしてみよう

モデル表示とは別の使い道を考えたところ、「ガラスの箱っぽい見た目なんだし水槽風に出来るんじゃないか?」と思いついたので、試しました。

とりあえず水を張ったように見える状態がこちら。

https://twitter.com/baku_dreameater/status/1084430400510820352

水面はUnityの標準アセットで作れます。

  • Asset Storeを開く
  • Unity公式のStandard Assetsをインポート
  • 水面にするPlaneを作成
  • アセットのStandard Assets/Environment/Water/Waterを開く
  • Material/WaterProDaytimeを水面にするPlaneに適用
  • Scripts/Waterスクリプトを水面にするPlaneにアタッチ

ただ、これだけで実行すると水面がLooking Glassに映りません

その原因は、Looking Glassのキャプチャ処理がOrthographicであり、水平な水面を真横からキャプチャしても見えないからです。

これを解決する簡単な方法は水面を傾けることで、上のスクリーンショットでは対策として水面を15度ほど傾けています。

どうせLooking Glass自体は置いたときに少し傾くので、水面を傾けても違和感は少ないです。

これ以外の問題として、水面が真っ黒に描画されてしまうケースがあります。詳細は把握していませんが、どうも水面の反射計算で、反射先にオブジェクトが無いと黒くなってしまうようです。

こちらも対策はあって、HoloPlayCaptureからみて奥側に白いCubeなりPlaneを追加すればOKです。

あとは水槽の底面に色つきのオブジェクトを敷いて背景絵を置けば、先程も見せたように水槽っぽくなります。

https://twitter.com/baku_dreameater/status/1084430400510820352

なお、水槽の絵はいらすとやのを使っています。

4. 魚が泳げばかなり水槽なのでは

水槽なんだから魚が泳いでいるべきだろう、ということで魚を足します。

  • Fish School Bundleアセットを買う
  • 魚の群れのPrefabを配置
  • School Controllerのプロパティをいじって魚を大きく、ゆったり動かす

私がPrefabの設定をいじった箇所はこんな感じ。

  • 魚の数: Size of the schoolFish Amountを5まで減らす
  • 速度: Speed and MovementMin SpeedMax Speedを減らす
  • 個々の魚のサイズ: Randomize Fish Sizeを大きくする
  • Area Sizeを全て0に設定し、群れっぽさをなくす
  • Size of the schoolWidthDepthHeightを水槽の内側に合うよう調整

これで泳いでくれるようになります。

https://twitter.com/baku_dreameater/status/1084647897273053194

5. まとめ

Looking Glassと水の組み合わせは絵的に相性が良さそうだと分かり、満足できました。あと、わりと短手順でそれっぽくなったのでLooking GlassもUnityも凄いなあとおもいました(小並感)

Looking Glassは見てると色々思いつけそうな雰囲気のデバイスなので、公式が想定しているLeap Motionとの組み合わせとかも含め、また何か投稿するかもしれません。