Unity初心者がVRゲームを作成するにあたりぶち当たった問題をつらつらと書き記していきます。
※順次追記していきます。
■環境
Unity:2021.1.5f1
URP:11.0.0
Cardboard XR Plugin:v1.5.0
試験端末:HUAWEI P30 lite
■ぶち当たった問題
1,URPのテンプレートからプロジェクトを作成すると端末上で何も表示されない
2,シェーダーがガンマ色空間用にカスタマイズされていない?
3,SpotLightやPointLightのModeをRealTimeにするとAndroid端末上でのみ影が表示されない
■問題点1:URPのテンプレートからプロジェクトを作成すると端末上で何も表示されない
写実的な絵のゲームを作成したい場合、URPを使用するという選択肢があります。
モバイル端末アプリケーションにも推奨されており、URPのサンプルプロジェクトを開くと十分に写実的な映像が見られます。
※さらに写実的な映像を作成したい場合はHDRPの使用が推奨されている。
とりあえずこのサンプルプロジェクトをVR化することを第一ステップとしようと思い、下記を参考にビルドを行いました。
cardboardサンプルプロジェクトは正常に動作したのですが、URPのテンプレートからプロジェクトを作成してビルドした場合、真っ黒な画面が表示されるだけのアプリが出力されました…
・cardboardサンプルプロジェクトとの比較
ということで原因を調査しました。cardboardサンプルプロジェクトとURPサンプルプロジェクトの設定と比較して差分がある部分をひたすらチェックしていくというアナログな手段で調査しました。
※ググり方が悪かったのか問題点そのものの解決策は見つからなかったです。
以下の2点を変更するとVRアプリとしては正常に動作するようです。
①Project Setting→Player→Other Setting→Color Spare→Gamma
②Main camera→Camera→Rendering→Post Processing→チェック外す
①android端末はリニア色空間に対応していない?
上記投稿は2017年ですが依然として問題があるようです。
少なくともHUAWEI P30 liteでは2021/05/06現在対応していないようです。
※Oculusなどでは対応していそう?
嘆いていても仕方がないのでガンマ色空間でゲームを作成する方針とします。
②Post Processingは非対応?
Post Processingを有効にするとUnityのロゴマークの画面から遷移しませんでした。
こちらもどうやら非対応もしくは一部のポストプロセスが干渉してしまっていると思われます。
■問題点2:シェーダーがガンマ色空間用にカスタマイズされていない?
シェーダーについてはまだ全く勉強していない状態なのでそういうものなのかもしれませんが、"Universal Render Pipeline/Lit"で描写したときに影が濃すぎるように感じます。
"Lit"がガンマ色空間想定されていない、もしくはガンマ色空間は"そういうもの"、のどちらかかと思います。
※画面奥のSpot Lightの設定は、Mode = baked、Intensity=10にしています。
Mode = Mixed or Realtimeにすると黒い影は発生しません。
リニア色空間への変更は問題点1で不可であり、影の濃さや色調をPost Processingで設定することも同様に問題点1でできないので、シェーダースクリプトを書き換えることでどうにかできないか模索中です。素人ながらSimpleLit色々を弄ってみましたがいい感じにはならず。BakedGIをうまいこと弄れればそれっぽくなりそうな感じはします。
もし解決策ご存じの方いたら教えていただきたいです…
追記)
Intensityの設定が間違っていました。右の壁に描写されている影をみれば分かりますが、ガンマ色空間とリニア色空間での光の強さ(Intensity)は数値が同じでも実際に見える強さは異なります。
BakedGIはBaked Global Illuminationの略。Unity Learnに色空間とGIを含めた説明がありました。
https://learn.unity.com/tutorial/introduction-to-lighting-and-rendering
■問題点3:SpotLightやPointLightのModeをRealTimeにするとAndroid端末上でのみ影が表示されない
Preview上では影が見えるのですがAndroid端末上では見えません。
Sun Sourceに設定しているDirectionalLightはRealtimeでも影を表示します。
原因調査中…
追記1 2021/05/08)問題点2追記、問題点3追記
追記2 2021/05/08)問題点2追記