LoginSignup
2
5

More than 1 year has passed since last update.

HDRPで白飛びを直す方法(ライティングの設定を理解する)

Last updated at Posted at 2021-11-09

はじめに

今回の記事はUnity JapanさんがYoutubeで公開している「クオリティを引き上げる!Unity HDRPのライティング、カメラ、ポストプロセス設定」という動画の内容を一部まとめたものです。

この動画を参考にHDRPのライティング設定を直せば,下記のような白飛びが発生しなくなります。
image.png
また,公式の動画はこちらです。

上記の動画では大まかに以下の4つの内容が解説されています。

  • 昼のライトセッティング
  • 夜のライトセッティング
  • カメラの設定について
  • フォグの設定について

そのうち今回の記事では白飛びを直す方法として,動画全体の4分の1である昼のライトセッティングまでの内容をまとめているので,更に詳細を知りたい方はUnity Japanさんの公式動画を視聴してください。

光について

まずHDRPではPhysical Light units(現実に存在する光の単位)以下PLUを採用しています。

今までのプロジェクトで使用されていた回転や大きさ等のシンプルな項目のみで操作できるライトではなくなった理由として,このPLUを細かく設定してあげることでまるで現実のようなクオリティの高いライディングの設定をすることができるようになるからです。
image.png
またこのPLUは現実世界の様々な場所で共有・公開されていて,我々も直ぐにその情報を手に入れることができます。

そしてこのPLUというのはひとつではなく,Unityで扱えるPLUには下記のものがあります。

  • Candelas(cd)
  • Lumens(lm)
  • Luminance(nit)
  • Lux(lx)
  • EV100(EV)

詳細な説明は各項でします。

Candelas

光源が特定方向を照らす光の強さ。
image.png

Lumens

光源が全方向に照射する光の総量。
image.png

Luminance

テレビやモニター等の平面上の光源から発せられる光の強さ。
image.png

Lux

光源によって照らされた場所の最終的な明るさ。
image.png
いまいち分からないという人は光の三原色で考えると分かり易いです。
image.png
まず,赤・緑・青のそれぞれの光の強さを数値に変換した際に,それぞれが1になるとします。
すると赤・緑・青が全て重なっている箇所は最も光が強くなり,それぞれの光の強さである1を足した総量は3になります。

この光の総量がLuxです。

また太陽から地球に照射される光の量もLuxで表されることが多いです。
その理由として,太陽は周囲全体を照らす光源(Lumen)ではありますが,その光源の殆どは地球とは無関係の場所を照らすので,LumenよりLuxで考えた方が合理的なのではないかということらしいです。
image.png

EV100

EV100は概ねLuxと同じような考え方ですが,それを光の単位ではなくカメラの露出値に置き換えたものとなります。
image.png
露出値とは,ある一定の明るさを基準にした際に被写体がどれだけ明るいかを表したものです。

PLUについて

下記のようにPLUには凡その基準値があります。
image.png
image.png
image.png
このような情報はネット上で数多く公開されており,ここに求めるシチュエーションがないといった場合であっても,検索すれば直ぐに見つけることができます。

また,現実世界から引っ張ってこれる情報はこれだけではありません。

光源の色を色温度という光の単位で取得することができます。
この色温度も明るさ同様に,一般化された情報があります。
image.png

実際に使用する

環境光の設定

まずHDRP環境でディレクショナルライトを作成します。
そしたら,LightコンポーネントにあるEmission / Intensityを設定します。
(今回は非常にまぶしい日中を再現したいので,数値を120,000にします)

この際,Shadow / Enableにもチェックを入れておきましょう。
(ここにチェックがないと影が生成されません)
image.png
設定が終わると画面が白くなってしまいますが,これは後程カメラの設定をした際に解消されるので今の段階では何もしなくていいです。
image.png
続いて色温度の設定もここで行います。
先ほどの表を参考に,再現したいものを入力してください。
image.png

空を設定する

HDRPで空の設定を行うには,先にGlobal Volumeというオブジェクトを作ります。
image.png
作り立てのGlobal Volumeには単に領域を指定する効果しかないので,いろいろな効果を持たせる為のプロファイルを生成します。

Global VolumeのVolumeで新規をクリックしてください。
image.png
すると新しくプロファイルが追加されます。
image.png
Volumeとプロファイルがそれぞれ独立しているので,別々のVolumeに同じプロファイルを再利用するということもできます。

続いて,空を作成する為インスペクタのAdd OverrideからVisual Enviormentという設定を作ります。
作成出来たら,以下のようにVisual Enviorment / Sky / タイプにチェックを入れ,横の選択欄からHDRI Skyを選択してください。
image.png
続いてAdd Overrideをもう一度クリックし,Sky / HDRI Skyを生成してください。
image.png
生成されたHDRI Skyの項目を以下のように切り替え,Hdri Skyからキューブマップを割り当てることでHDRP上で空を作ることができます。
image.png
しかし現在の状況では,地上に照射されている光はディレクショナルライトによるものが全てです。

実際はディレクショナルライトによるものだけではなく空も地表を照らしているので,ディレクショナルライトのインテンシティを下げ空のインテンシティを上げる必要があります。

その為にHDRI Sky / Intensity ModeをLuxに切り替えます。
image.png
この設定を行うとIntensity Modeの下にあったExposureがDesired Lux Valueに切り替わります。

このDesired Lux ValueにLuxを基準に調整した数値を入力してあげることで,ライティングが完成します。入力する値は「太陽:空」の比で調整します。

割合は,

晴天時 5:1
曇り時 4:1

です。

今回は非常にまぶしい日中を再現する為に値を120,000Luxと設定しているので,Desired Lux Valueに20,000,ディレクショナルライトに戻りIntensityを100,000に設定してあげてください。
image.png
image.png

カメラの設定

※ 空の設定からここまでかなりスキップしています。

VolumeにExposureの設定を追加します。
作る場所は空と同じVolumeでも,別の場所でもいいです。
image.png
Exposureを導入することで,カメラの露出値(EV100)を設定することができます。

Exposureにある項目にチェックを入れ,Fixed Exposureの値を調整します。
今回は13の値を入れます。
image.png
これだけで画面の眩しさが抑えられ,イメージ通りになります。
image.png
以上までが白飛びを直す方法です。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5