Exposure
物理ベースのライティングとマテリアルを使う際は、シーンの Exposure (露出) を正しく設定する必要があります。HD レンダーパイプライン (High Definition Render Pipeline、HDRP) にはほとんどのユースケースに適した露出を計算するための方法がいくつか含まれています。HDRP は EV100 で使うすべての露出値を表現します。
Exposure の使用
Exposure は Volume フレームワークを使うため、Exposure プロパティーを有効化し変更するには、Exposure オーバーライドを Volume に追加しなければなりません。Volume に Exposure を追加する手順は以下の通りです。
- シーンまたは Hierarchy ビューで、Volume コンポーネントを含むゲームオブジェクトを選択し、Inspector で表示します。
- Inspector で Add Override へ行き、Exposure をクリックします。これで HDRP は Volume が影響を与えるすべてのカメラに、Exposure 修正を適用します。
API
ランタイム中このオーバーライドにアクセスし制御するためには、Volume スクリプティング API を使用します。Volume システムの仕組みにより、プロパティーは標準 Unity コンポーネントとは異なる方法で編集されます。また、各プロパティーに overrideState があるなど、他にも注意する点があります。これは Volume システムが、設定したプロパティー値と Volume Profile に保存されているデフォルト値のうち、どちらを使うかを指示します。API を正しい利用法についての詳細は、 Volume スクリプティング API を参照してください。
プロパティー
Volume コンポーネントのオーバーライドのプロパティーを編集するには、プロパティーの左にあるチェックボックスを有効にします。これにより HDRP も Volume コンポーネントに対して、デフォルト値ではなく特定されたプロパティー値を使うことになります。チェックボックスを無効にすると、HDRP は設定されたプロパティーを無視し、Volume のデフォルト値を代わりに使います。
プロパティー | 説明 |
---|---|
Mode | ドロップダウンから、HDRP が露出をプロセスするために使う方法を選択します。 • Fixed (固定): シーン露出を手動で設定できます。 • Automatic (自動): 画面に何があるかによって、露出を自動設定します。 • Automatic Histogram (自動ヒストグラム): ヒストグラムコントロールで自動露出を継承します。 • Curve Mapping (カーブマッピング): 現在のシーン露出をカスタムカーブにマップします。 • Use Physical Camera: 現在の物理カメラ設定を使ってシーンの露出を設定します。 |
Fixed
これは最もシンプルで、柔軟性の少ない露出の計算方法ですが、比較的均等なエクスポージャーのシーンや、静的領域の画像を撮りたい場合に役立ちます。またローカル Volume を使ってシーンの様々な固定の露出値を混ぜることもできます。
プロパティー
プロパティー | 説明 |
---|---|
Fixed Exposure | Volume が影響を与えるカメラにエクスポージャー値を設定します。 |
Automatic
人間の目は非常に暗い場所でも明るい場所でも機能します。ただし任意の一瞬では、目は総合範囲の約 100 万分の 1 のコントラスト比しか感知できません。目は複数の光のレベルで黒いものに順応し再定義することで、正常に機能します。
Automatic モードは、画面の明度レベルの範囲に応じて、露出を動的に調整します。調節は徐々に行われるため、ユーザーは暗い場所から出てきた際に、屋外の明るさに一瞬目がくらむ場合があります。同様に、明るい場所から暗い場所へ移動すると、カメラが調整するのに少し時間がかかります。
プロパティー
プロパティー | 説明 |
---|---|
Metering Mode | ドロップダウンから、HDRP が輝度ソースをフィルタリングするために使う、計測法を選択します。利用可能な Metering Mode に関する情報は、Automatic セクションの使用 を参照してください。 |
Luminance Source | ドロップダウンから、HDRP が現在のシーン露出を計算するために使う、輝度ソースを設定します。現在 HDRP は Lighting Buffer オプションをサポートしていません。 |
Compensation | カメラが自動計算された露出値を補うために使う値を設定します。これはシーンを過度に露呈したい、または露呈不足にしたい場合に便利です。 |
Limit Min | シーン露出に設定できる最小値を設定します。 |
Limit Max | シーン露出に設定できる最大値を設定します。 |
Mode | ドロップダウンから、カメラが暗い場所から明るい場所へ、またはその逆へ移動するときに、HDRP が露出を変更するために使うメソッドを選択します。 • Progressive (プログレッシブ): Speed Dark to Light と Speed Light to Dark プロパティーフィールドで定義される期間中に露出が変わります。 • Fixed (固定): 露出は即時に変わります。ノート: シーンビューは Fixed を使います。 |
Speed Dark to Light | カメラが暗い場所から明るい場所へ移動するときの、露出が変化するスピードを設定します。 このプロパティーは Mode を Progressive に設定したときのみ表示されます。 |
Speed Light to Dark | カメラが明るい場所から暗い場所へ移動するときの、露出が変化するスピードを設定します。 このプロパティーは Mode を Progressive に設定したときのみ表示されます。 |
Target Mid Gray | 自動露出を使って、希望する中央グレーレベルに設定します (自動露出システムが平均シーン輝度をマップするグレー値)。 HDRP で使われるレンズモデルは完璧でないため、選択された値に精巧にマップしません。 |
Automatic Histogram
Automatic Histogram (自動ヒストグラム) は Automatic モードの拡張です。より安定した露出を実現するために、このモードは画像のヒストグラムを計算し、画像の一部を露出演算から除外することが可能です。これは画面の非常に明るい、または非常に暗い領域を破棄するのに役立ちます。
Automatic モードのプロパティーに加えてこのプロセスを制御するために、このモードには以下のプロパティーが含まれています。
プロパティー
プロパティー | 説明 |
---|---|
Histogram Percentages | このフィールドを使って、自動露出演算に考慮するヒストグラムの範囲を選択します。このフィールドの値は百分位数です。つまり、例えば低い百分位数を X とし、あるピクセルが画面上のすべてのピクセルの (100-X)% より強度が低い場合、HDRP は露出演算から破棄します。同様に、高い百分位数を Y とすると、あるピクセルが画面上のすべてのピクセルの Y% より強度が高い場合、HDRP は露出演算から破棄します。 これにより、露出演算はシャドウとハイライト領域の不要な範囲外の値を破棄することができます。 |
Use Curve Remapping | この露出モードの上にカーブマッピングを適用するかを特定します。カーブマッピングプロパティーに関する情報は、[Curve Mapping セクション](#Curve Mapping) を参照してください。 |
Automatic (自動) の使用
Automatic モードを設定するには、Metering Mode を選択します。これによりカメラに現在のシーン露出をどう計測するかが指示されます。Metering Mode は以下のように設定できます。
- Average: カメラは輝度バッファ全体を使って、露出を測定します。
- Spot: カメラはバッファの中央のみを使って、露出を測定します。これは画面の中央にあるものに対してのみ露出したい場合に便利です。
- Center Weighted: カメラはバッファ内のピクセルそれぞれに重点を適用し、それらを使って露出を測定します。中央値のピクセルは最大重点を、画面境界線上のピクセルは最小重点を、その間のピクセルは画面の境界線に近づくにつれてより重点が低くなります。
Mask Weighted: カメラはバッファ内のピクセルそれぞれに重点を適用し、それらを使って露出を測定します。重点を特定するため、この技法は Weight Texture Mask フィールドで設定されたテクスチャを使います。テクスチャが提供されていないと、この計測モードは Average と等しくなります。
Procedural Mask: カメラはバッファ内のピクセルそれぞれに重点を適用しそれらを使って露出を測定します。重点は以下のパラメーターで手続き的に生成されるマスクを使って生成されます。
プロパティー 説明 Center Around Exposure target プロシージャルマスクが カメラ で露出ターゲットとして設定されたゲームオブジェクトを軸として展開します。 Center プロシージャル計測マスクの中央を設定します ([0,0] は画面の左下を、[1,1] は画面の右上を示します)。Center Around Exposure target が無効になっているときのみに、利用可能です。 Offset マスクが中央に配置された場所のオフセットを設定します。Center Around Exposure target が有効になっているときのみに、利用可能です。 Radii プロシージャルマスクの半径を画面の半分の割合で設定します (0.5 は画面の半分で両方向に伸縮するマスクを意味します)。 Softness マスクの柔らかさを設定し、値が高いほどマスクのエッジでピクセルに与える影響が少なくなります。 Mask Min Intensity このしきい値以下 (EV100 単位で) のピクセルはすべて測光マスクで重点 0 に割り当てられます。 Mask Max Intensity このしきい値以上 (EV100 単位で) のピクセルはすべて計測マスクで重点 0 に割り当てられます。
次に、Limit Min および Limit Max を設定し、最小および最大露出値を定義します。シーンの明るい領域と暗い領域の間を移動して、シーンに最適な値を見つけるまで、各プロパティーを変更します。
今度は Compensation プロパティーを使って、シーンを過剰露出または露出不足にします。これはほとんどのカメラにおける露出補正と類似しています。
最後に適応速度を調整します。これは露出がどれだけ素早く変化に適応するかを制御します。人間の目は明るさよりも暗さに適応するのに時間がかかるため、Speed Light to Dark には Speed Dark to Light よりも低い値を使います。
Curve Mapping
Curve Mapping モードは Automatic モードのバリアントです。限度を設定する代わりに、X 軸が現在のシーン露出を、Y 軸が希望する露出を表す、カーブを操作します。一度にすべてのライティングに対して、より精密でコントロールされた露出を設定できます。
プロパティー
プロパティー | 説明 |
---|---|
Curve Map | カーブを使ってシーン露出 (X 軸) を希望の露出 (Y 軸) にリマップします |
Physical Camera (物理カメラ) の使用
このモードは主に カメラの Physical Settings に依存します。この Mode が展開する唯一のプロパティーでは、シーンを過剰露出、または露出不足にすることができます。
プロパティー
プロパティー | 説明 |
---|---|
Compensation | カメラが自動演算された露出値を補うために使う値を設定します。これはシーンを過剰露出、または露出不足にしたい場合に役立ちます。これはほとんどのカメラにおける露出補正と類似しています。 |
Exposure Debug (露出デバッグ) モード
HDRP にはシーンに正しい露出を設定するのに役立つ、いくつかのデバッグモードが用意されています。これらは Debug ウィンドウ でアクティベートすることができます。
Scene EV100 Values
このデバッグモードは、画面全体の EV100 単位に変換されたシーン輝度のヒートマップを表示します。これは、画面全体の強度分布を決定するのに役立ち、露出制限を正しく設定したかを判断するのに便利です。またシーンで明度がどのように分布されているかの情報を可視化できます。
さらに、このデバッグビューは画面中央でピクセルの数値を表示します。また画面下にあるヒートマップ指標でも、この値が完全範囲内のどこに位置するかが表示されます。
Histogram ビュー
Automatic Histogram (自動ヒストグラム) モードでは、リファレンスなしに明度パーセンテージの高低を設定することが困難な場合があります。これを解決するために、HDRP はシーン明度分布の概要がわかるよう、ヒストグラムデバッグビューが含まれています。
このデバッグモードが情報を表示する場所は 2 つあります。画面上、および画面下にあるヒストグラムです。これらの方法は両方とも、露出アルゴリズムが特定の明度値を容認するかそれとも除外するかを表示します。画面上では、デバッグモードが除外されたピクセルを特定の色で塗ります。ヒストグラムでは、明度値と効力の範囲を表示するのと同じ色を使って、棒を描きます。色は以下に一致します。
- 青: 明度値が低百分位数を下回り、除外されます。
- 赤: 明度値が高百分位数を上回り、除外されます。
- 白: 明度値が高百分位数と低百分位数の間にあり、容認されます。
ヒストグラムの下部にはターゲット露出を示す黄色い矢印があり、グレーの矢印は現在の露出を示します。
Show Tonemap Curve オプションを有効にすると、デバッグビューはヒストグラムビューをトーンマップするために使われるカーブを重ねます。
デフォルトにより、X 軸上の値は固定されていますが、ヒストグラムを現在の露出周辺に固定させることも可能です。これは Center Around Exposure オプションを有効にして行います。これはトーンマップカーブのオーバーレイを固定し、カーブの下でシーンがどのように分布するかを明確に表示するのに役立ちます。
Metering Weighted
Metering Weighted (ウェイト計測) デバッグビューは、HDRP が計測マスクを使用してシーンを重み付けした場合のシーンの外観画像と一緒にシーンを表示します。これは特に、プロシージャルな計測マスクの設定、または適切なテクスチャマスクの決定に役立ちます。
Final Image Histogram
Final Image Histogram (最終画像ヒストグラム) デバッグビューは、すべてのポストプロセス (トーンマッピングおよびガンマ修正を含む) が適用された後の画像のヒストグラムを表すオーバーレイとともに、シーンを表示します。このヒストグラムには 256 ビンあり、8 ビット画像値にマップします。 このビューは輝度ヒストグラムまたは RGB チャンネルの両方を個別に表示することができます。