OclusGo向けアプリ開発中、こんな事が起こっていました
ふぁってなった。これ15時間待ってろってこと?#OculusGoDev #unity3d pic.twitter.com/ivQgro8WSx
— m0a (@abe00makoto) 2018年5月24日
ベイクとは?
明かりを事前に計算してテクスチャ化しておくものと言う理解で良さそうです。
これにすごく時間がかかっています。
困っていたところ、
さやちゃんぐbot先生にライティングについて教えていただきました。
ありがたく知見を纏めます。
ライティングの設定
window -> lighting -> Settings でライティングの設定画面ができるので移動してインスペクタと同じ場所においておきます
各種設定は以下の通り
上から順に
- Realtime Global IlluminationはOclusGoのようなモバイルにはスペック不足なのでoffに設定
- LightmapperはProgressiveに(2018.1以降ならデフォルト)
- Indirect SamplesはProgressive Lightmapperが間接照明計算に使用するサンプル数を制御します。これも500から50に減らしておきます。
- Auto Generateは毎回自動で生成はしんどいのでoffにし 手動でGenerateする。
こんな感じです。
それとレイヤーというものについても教えていただきました。
レイヤーについて
レイヤーとはPhotoShopのレイヤーと同じようなもの。
使い方として
EditLayersでLayer設定画面を出しPlayerを追加します。
実際のPlayerに対応するオブジェクトにPlayer Layerを割り当てます。
そしてライトの設定で
ModeをBakedにして移動しないオブジェクトであるPlayerをライトの対象外から除外できます。
このようにして事前に計算できるものを増やすことでモバイルでも動作可能なライティングができていきます。
この場合はstaticに設定されているオブジェクト用のライトになります。したがってPlayer専用のライトも別途作る必要があります。
複数のライトを駆使してライティングを作っていきます。
(ライトは一つのGameObject内にまとめて管理していましたので、真似しようと思います。)
影の形
ライトの設定には影の設定があります。
SoftShadows
柔らかい影の形。冬っぽい?HardShadows
境界のはっきりした影。夏っぽくなる。
おまけ
skyboxの無料アセットがあるそうです。