iOS で SceneKit を試す(Swift 3) その40 - Scene Editor カメラの HDR 設定 Part2
引き続き HDR の説明。
カメラとなる SCNCamara の HDR とは、
トーンマッピング処理を行い、シーン全体の輝度値を、ディスプレイに表示できる狭い範囲の輝度値に変換するすること。
具体的には露出調整、Bloom 効果を表現する。
また、HDR は Scene Editor のカメラのプロパティにある HDR のチェックをオンにするか、
コードで SCNCamara の wantsHDR を true にしないと、どの機能プロパティを設定しても動作しない。
Scene Editor の パラメーター
HDR
HDR
チェックをオンにすると HDR の機能を動作できるようにする。
Average Gray
HDR を使用する際、Photoshop のトーンカーブのように光の情報をどのように LDR に適応するかトーンマッピングカーブを作成する。
Average Gray はトーンマッピングカーブの中間点として使用する輝度レベルを設定し、暗いまたは明るいコンテンツのシーンを調整することができる。
値を高くすると画面全体の輝度高くなり、 値を低くすると輝度低くなる。
デフォルト値は 0.18。
0.05
0.5
White Point
ハイライトとシャドウ間で光の情報の緩やかな遷移、または急な遷移を行う。
デフォルト値は 1.0
10.0
0.3
Adaptation
Auto Adapt
チェックを入れると、現在のカメラが映す輝度を自動的に測定し、それに応じて露出レベルを調整する。 さらに、遮蔽物などでシーンの輝度が変化すると、自動的に新しい露出レベルへ変更するアニメーションが行われる。
ドキュメントではデフォルトでオンとなっているが、値は false が返す。
Apple のコードサンプル Badger で洞窟から出る際、この効果が顕著に現れる。
Auto Adapt なし / あり
Speed Factor
Brightening と Darkening の値があり、暗い領域から明るくなる領域、または明るいところから暗くなる際の持続時間。
デフォルト値では Brightening は 0.4、 Darkening 0.5 と変化が異なる。
Exposure
Minimum、Maximum
露光量と最小値を最大値。
最小値を下げると暗い部分が露出不足(均一に黒)になり、
最大値をあげると露出オーバー(均一に白)になる。
1.0 で 2 倍、 2.0 で 4 倍、-1.0 で 1/2。
差が大きいほど、コントラストが低くなる。
デフォルトでは Minimum が -15、Maximum が 15。
Minimum -15、Maximum -3。
Minimum 1、Maximum -15。
Offset
トーンマッピングカーブの明暗にオフセット(偏り)をつける。
プラス値を与えると画面全体の輝度が上がり、マイナス値を与えると下がる。
デフォルト値は 0.0
-3
3
Bloom
ブルームエフェクトを与える。
ブルームエフェクトとは、シーンのハイライト(明るい色の領域)にソフトグローを追加し、明るいハイライトを実際の人間の目や物理カメラに表示する方法をシミュレートする。
輝度によって処理が行われるため、設定によってはエフェクトが表示されないことがあるので注意。
Intensity
ブルームエフェクトの強さを設定する。
値を小さくすると微妙な効果を得られ、大きくすると非常に明るい輝きが発生する。
デフォルト値は 0.0 で効果は現れない。
Threshold
ブルームエフェクトをトリガするために必要な輝度レベルを設定する。 値を小さくするとシーンの広範囲に適応され、 値を大きくするとハイライトのみにエフェクトが適用される。
デフォルト値は 1.0。
Blur Radius
ブルームエフェクトでハイライトに適用されるソフトグローのぼかしのピクセル単位の半径。
値を大きくすると広範囲で柔らかいグローが表現され、0 で無効になる。
デフォルト値は 4.0 ピクセル。
以下の設定を設定したブルームエフェクト
プロパティ | 値 |
---|---|
Exposure Offset | 2 |
Bloom Threshold | 6 |
Bloom Blur Radius | 18 |
コード
let camera = SCNCamera() // HDR camera.wantsHDR = true camera.averageGray = 0.18 camera.whitePoint = 1.0 // Adaptation camera.wantsExposureAdaptation = true camera.exposureAdaptationBrighteningSpeedFactor = 0.4 camera.exposureAdaptationDarkeningSpeedFactor = 0.6 // Exposure camera.minimumExposure = -15.0 camera.maximumExposure = 15.0 camera.exposureOffset = 0.0 // Bloom camera.bloomIntensity = 0.0 camera.bloomThreshold = 0.5 camera.bloomBlurRadius = 4.0
今回はここまで。