Apple Engine

Apple, iPhone, iOS, その周辺のことについて

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) で以下に変更。

f:id:x67x6fx74x6f:20170804182550p:plain

 

Material Inspector (Command + Option + 5) で Physically Based に変更し、 Emission の色を赤に変更する。

f:id:x67x6fx74x6f:20170804182722p:plain

 

両面描画のチェックを外す。

f:id:x67x6fx74x6f:20170804154134p:plain

 

Sphere

原点に設置。

Node Inspector (Command + Option + 3) で Movabililty の is movable チェックをオンにする。

f:id:x67x6fx74x6f:20170804182820p:plain

 

Light Probe

今回は下からしか照らされないので、球の真上に置く。

f:id:x67x6fx74x6f:20170804182522p:plain

 

Light Probe の Attrubutes Inspector

名前以外では Probe の Near Clipping と Far Clipping。 Light Probe の計算を行う Compute のボタンにのみ。

f:id:x67x6fx74x6f:20170804182107p:plain

 

Near Clipping と Far Clipping

適応範囲を Near Clipping と Far Clipping で設定する。

基本デフォルトのままでも良いと思われる。
(Apple のサンプルもデフォルト値を使用している)

 

Compute

ボタンを押すと Probe の計算が始まりジオメトリに結果が反映される。

今回のシーン設定でこのボタンを押すと以下のようになり、球の底の部分が赤く照らされているのがわかる。

f:id:x67x6fx74x6f:20170804182338p:plain

 

もし、何も問題がなく、ジオメトリに変化がない場合は Movabililty のチェックボタンをオン/オフすると反映される場合がある。

 

複数 Light Probe があって、いくつも Compute ボタンを押すのが面倒

Scene Inspector (Command + Option + 7) に、「Compute all probes」というボタンがあるのでこれを押す。 計算していない Probe 量が多いと終わるまで結構時間がかかるので注意。

 

状況によっては複数の Light Probe を設置する必要がある。

四隅に Light Probe を設置してみた。

f:id:x67x6fx74x6f:20170804182153p:plain

 

中央にも置いてみた。天井の照明が適応されている。

f:id:x67x6fx74x6f:20170804182207p:plain

 

今回はここまで