Apple Engine

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

Xcode 11 での SceneKit の変更点 その3 - リフレクションプローブ

f:id:x67x6fx74x6f:20191001221713p:plain

 

リフレクションプローブ(Reflection Probe)とは?

ライトプローブ同様に周囲の光(色)をキューブマップとして焼き込み、周りの反射するマテリアルに適応する。設定方法はライトプローブと変わらない。
ARKit の environmentTexturing プロパティ、AREnvironmentProbeAnchor で生成される環境マップの表面反射と同様。

ただし、ARKit はカメラ画像から推論して周囲の画像を生成しているが、リフレクションプローブはカメラからちゃんと画像を生成する。

プロパティやメソッドは過去記事参照。

 

リフレクションプローブが反射するため物体を捉えるエリアとそれを使用した反射を適応できる範囲を設定することができ、
そしてリフレクションプローブが生成する環境マップの適応を位置をオフセットとしてずらすことができる。

以下の画像の白い球体の枠が反射する物体の範囲。
赤い立方体は反射の影響を受ける物体の範囲。
背景は白い範囲外でも影響を受け、赤い立方体から外れるとリフレクションプローブの影響を受けなくなる。

f:id:x67x6fx74x6f:20191001222059p:plain

 

また、ライトプローブの様に Manual で開発者側が計算してテクスチャを生成するのだが、リフレクションプローブはリアルタイム (Scene Editor では Live) で周囲の情報を取得することができる。

Scene Editor で Manual に設定した場合、ライトプローブと同様に Compute ボタンを押してテクスチャを生成する必要がある。

f:id:x67x6fx74x6f:20191001221858p:plain
Manual 設定。わかりづらいがパーティクルが反映されている。

 

注意点

リアルタイムのリフレクションプローブはそれなりに処理が重いので注意。

 

バグ? 仕様?

リアルタイムのリフレクションプローブでパーティクルが反映されない。
Beta の初期や iOS シミュレータでは反映されるためバグな気がしないでもない。
一応、Feedback にバグリポート済み。

 

次回はスクリーンスペースリフレクションについて。