Edited at

UnityのOculusGo向けのライティング #OculusGoDev

More than 1 year has passed since last update.

OclusGo向けアプリ開発中、こんな事が起こっていました

ベイクとは?

明かりを事前に計算してテクスチャ化しておくものと言う理解で良さそうです。

これにすごく時間がかかっています。

困っていたところ、

さやちゃんぐbot先生にライティングについて教えていただきました。

ありがたく知見を纏めます。


ライティングの設定

window -> lighting -> Settings でライティングの設定画面ができるので移動してインスペクタと同じ場所においておきます

Unity_2018_1_0f2_Personal__64bit__-_stage4_unity_-_FPS2018_-_Android__Personal___Metal_.png

各種設定は以下の通り

Unity_2018_1_0f2_Personal__64bit__-_stage4_unity_-_FPS2018_-_Android__Personal___Metal_.png

上から順に


  • Realtime Global IlluminationはOclusGoのようなモバイルにはスペック不足なのでoffに設定

  • LightmapperはProgressiveに(2018.1以降ならデフォルト)

  • Indirect SamplesはProgressive Lightmapperが間接照明計算に使用するサンプル数を制御します。これも500から50に減らしておきます。

  • Auto Generateは毎回自動で生成はしんどいのでoffにし 手動でGenerateする。

こんな感じです。

それとレイヤーというものについても教えていただきました。


レイヤーについて

レイヤーとはPhotoShopのレイヤーと同じようなもの。

使い方として

UnityEditor_LayerVisibilityWindow_と_Unity_2018_1_0f2_Personal__64bit__-_stage4_unity_-_FPS2018_-_Android__Personal___Metal__と_Franz.png

EditLayersでLayer設定画面を出しPlayerを追加します。

実際のPlayerに対応するオブジェクトにPlayer Layerを割り当てます。

Unity_2018_1_0f2_Personal__64bit__-_stage4_unity_-_FPS2018_-_Android__Personal___Metal_.png

そしてライトの設定で

Light.png

ModeをBakedにして移動しないオブジェクトであるPlayerをライトの対象外から除外できます。

このようにして事前に計算できるものを増やすことでモバイルでも動作可能なライティングができていきます。

この場合はstaticに設定されているオブジェクト用のライトになります。したがってPlayer専用のライトも別途作る必要があります。

複数のライトを駆使してライティングを作っていきます。

(ライトは一つのGameObject内にまとめて管理していましたので、真似しようと思います。)


影の形

ライトの設定には影の設定があります。


  • SoftShadows

    柔らかい影の形。冬っぽい?


  • HardShadows

    境界のはっきりした影。夏っぽくなる。



おまけ

skyboxの無料アセットがあるそうです。

https://assetstore.unity.com/packages/2d/textures-materials/sky/skybox-series-free-103633