iOS で SceneKit を試す(Swift 3) その52 - Scene Editor の Light Probe
シーンで動かない物体にはライトマップでテクスチャに焼き付けると綺麗な見た目となるが、 キャラクターなど動くもがあった場合、光は反映されない。
Light Probe はシーンの色の変化とすべての方向から受け取る照明の強度を球体で設定し、
有効範囲にある Physically Based のライティングモデルの Emission の値を光の情報として使用する。
そのため適応させたいキャラクターなどのジオメトリが動作する周辺にいくつか設置する必要がある。
Light Probe の制限
- 事前に計算させておく必要がある。
- ライトとなるジオメトリとそれを適応させるジオメトリは Physically Based のライティングモデルである必要がある
- 以前の記事で書いたが Light Probe は自体がライトになるわけではなく、ジオメトリの Emission の値がライトになる
- Emission の光を反映させたいジオメトリは Movabililty を true にする必要がある
- キャストシャドウは落とせないので他のライトと併用する。
シーン設定
Game (SceneKit) のテンプレートでプロジェクトを作成するか既存のファイルから ship.scn ファイルを選択。
中身はいらないので Scene Graph View か、Scene Editor 上にあるものを全て削除。
Object Library (Command + Control + Option + 3) から Plane と、Sphere、Light Probe を以下のように設定する。
Plane
Node Inspector (Command + Option + 3) で以下に変更。
Material Inspector (Command + Option + 5) で Physically Based に変更し、 Emission の色を赤に変更する。
両面描画のチェックを外す。
Sphere
原点に設置。
Node Inspector (Command + Option + 3) で Movabililty の is movable チェックをオンにする。
Light Probe
今回は下からしか照らされないので、球の真上に置く。
Light Probe の Attrubutes Inspector
名前以外では Probe の Near Clipping と Far Clipping。 Light Probe の計算を行う Compute のボタンにのみ。
Near Clipping と Far Clipping
適応範囲を Near Clipping と Far Clipping で設定する。
基本デフォルトのままでも良いと思われる。
(Apple のサンプルもデフォルト値を使用している)
Compute
ボタンを押すと Probe の計算が始まりジオメトリに結果が反映される。
今回のシーン設定でこのボタンを押すと以下のようになり、球の底の部分が赤く照らされているのがわかる。
もし、何も問題がなく、ジオメトリに変化がない場合は Movabililty のチェックボタンをオン/オフすると反映される場合がある。
複数 Light Probe があって、いくつも Compute ボタンを押すのが面倒
Scene Inspector (Command + Option + 7) に、「Compute all probes」というボタンがあるのでこれを押す。 計算していない Probe 量が多いと終わるまで結構時間がかかるので注意。
状況によっては複数の Light Probe を設置する必要がある。
四隅に Light Probe を設置してみた。
中央にも置いてみた。天井の照明が適応されている。
今回はここまで