ウーパの手習い

私的開発メモ用途なのでご容赦ください。2020年現在はSwiftとUnityでARのお勉強中。

エリアライトの有無

Unityで綺麗なインテリア空間を作る時に、影がきれいに出るエリアライト(Area Light)が重宝するそうです。そのエリアライトの実装事例を海外のUnityチュートリアル動画では、日の光が差し込む窓の背後に、窓と同じ面積ぐらいのエリアライトを設置する方法が紹介されています。

f:id:uuupacom:20180314104835p:plain

見えづらいですが、窓と同じサイズのエリアライトを置いています

現在私は、ATL広尾をVRChatの自作ワールドとして再現しようと、できるだけ負荷の低いインテリア空間を作ろうとしており、その目標のためにエリアライト有無の比較をメモしておくのがこの記事の目的です。

前提として私の場合、負荷を減らそうと自分なりに考え、ある程度ウソをついてもいいかと思って以下の対応をしています。
天井は光を通すようにしており、ベイクオンリーの設定にしたDirectional Lightの光が天井を抜けるようにしています。←追記参照
その他室内にはベイク用途に限定したPointLightを点在させている状態です。ですので、一般的な室内ビジュアライゼーションの実装とは異なる結果になっているかもしれません。


f:id:uuupacom:20180314105218p:plain

f:id:uuupacom:20180314105208p:plain

上がエリアライト無し、下がエリアライト有りです。

以下は、比較用に重ねて2.5秒ごとに切り替える画像

f:id:uuupacom:20180314110531g:plain

リアライトがあるほうが、窓からの光量が増えるので天井が明るくなっています。

事前に情報収集したエリアライトへの認識と、今回の結果をまとめると

  • AreaLightはベイクしているだけなのでSetPass calls数は増えない
  • それ相応に窓周辺は明るくはなる。相対的に窓から遠い部分の影の部分は暗くなるんだなぁ
  • StatsのGraphicsの右に表示されてるFPSが、エリアライト有りだとすごく低下しているが、ベイクしているので関係ないような気もする。たまたま下がったときにキャプチャしたのかな?
  • 劇的には効果ないけど、窓からの光によって自然な感じになったので採用することにする

追記:その後、天井がDirectionalLightの光を通すのはやめました。特に理由はありませんが、ファイルを作り直したときに室内照明を多く配置したら、それだけでいい感じだったので。そうすることで、多少オブジェクトの影の表現が自然になったかもしれません。相当作業を進めたあとの状態ですが、下のような感じになっています。

f:id:uuupacom:20180323125029p:plain

照明オブジェクトも設置してあり、これらはEmissionテクスチャを設定したうえで、画面全体にPostProcessingStackをかけているので発光しているように見えていますが、空間照明としての光量は微々たるもので、実際部屋を照らしているのは、この記事で解説している仕組みそのまま「実体のないPointLight群」です。