2020/01/19
LookingGlass購入一周年記念で作った遠景の描画方法を追加しました
Twitterで簡単に説明しましたが、やはりわかりにくいと思ったので書きました。
開発環境はUnity 2018.2.20f1+HoloPlay SDK 0.1.4 です。
#はじめに
Looking Glassはどうしても背景(奥方向)の描画が苦手です。
そしてCapture.csのInspectorからビューボリュームを調整するのも結構大変です。
ならばRenderTextureで書き割りを作ってしまえ!というのが今回のネタです。
#結果
まず結果です。
https://twitter.com/aodama/status/1084862221765627905
一番手前の車線の自動車だけが見る角度で変化し、それ以外はRenderTextureの画像になります。
RenderTextureを描画すると動画のような感じになります
#実装
Looking Glassのビューボリューム外をRenderTextureに描画して、それをLooking Glassで表示範囲に置くだけです。
RenderTextureはQuadに貼り付けてシーンに配置しています。
ここまではTwitterで説明したので、もうちょっと詳細に。
まずHoloPlay Captureの子にあるHoloPlay Cameraと同じ位置にRenderTexture用のカメラを作ります。この時FovはHoloPlay Cameraと同じ値に設定しましょう。
次に追加したカメラのNear ClipををRenderTextureを置く位置に設定します。手前は描画しなくていいですからね。あとこのカメラでRenderTexture自身を描画しないようにレイヤーを設定してください。
これで動画のようなLooking Glassな3Dと背景が共存出来ます。
#調整
RenderTextureを置く位置によって、Looking Glass上での見え方はかなり変わります。
例えば上の画像のようにRenderTextureを中央付近と奥に置いた場合、中央付近は動画のようなクッキリとした見た目になりますが、奥に置いた場合はこんな感じでかなりジャギジャギします。仕様なので仕方ありません…
そのかわりRenderTextureを奥に置けばLooking Glassのビューボリュームはほぼ全部使えます。これ重要!
少しでもジャギジャギ感を軽減するなら、RenderTextureを低解像度にしてぼかしてしまうのが一番簡単です。
下の画像はRenderTextureの解像度を256x160にした場合です。
#課題
奥から手前や手前から奥のようなRenderTextureを跨いで移動するのは御法度。ズレちゃいますからね。
#まとめ
結局は用途次第ですが、例えばLooking Glassでゲームを作る際に奥行きのある背景を出せるのは強みになると思います。
#一周年記念アプリの遠景について
動画
https://twitter.com/aodama/status/1208755492505309186
やっていることは単純で、Curved Worldアセットで地面を曲げて、遠景(RenderTexture)のつなぎを見えないようにしています。