Lighting Estimation API は、仮想オブジェクトのレンダリング時にさまざまな照明キューを模倣できる詳細なデータを提供します。ARCore は、次の 3 つの光量推定モードをサポートしています。
前提条件
続行する前に、AR の基本コンセプトと ARCore セッションを構成する方法を理解してください。
照明の推定を有効にする
アプリで照明の推定を有効にする手順は次のとおりです。
- AR Foundation プロジェクトまたは ARCore Extensions プロジェクトを設定します。
- [Hierarchy] タブで XR Session Origin > AR Camera に移動します。
- AR Camera Manager コンポーネントで、Light Estimation を選択します。
- [Light Estimation] プルダウン メニューで、使用するモードを選択します。
環境 HDR モードを有効にする
環境 HDR モードでは、次の光量推定設定が有効になります。
- メインライトの向き
- メインライトの明るさ
- アンビエント球面調和音
このモードは、次の条件が満たされると自動的に有効になります。
- 周囲の球面高調波、主光方向、主光の強さは、AR カメラ マネージャーが提供する光推定モードで選択します。
- 環境プローブは
AREnvironmentProbeManager
で有効になります。 - 対応するカメラの設定が選択されている
アンビエント輝度モードを有効にする
ARCameraManager
コンポーネントで [アンビエント輝度モード] が選択されている場合、基本的な光量推定が自動的に有効になります。
周囲強度モードでは、光量の推定に関して以下の設定を行うことができます。
- アンビエント カラー
- 周囲の輝度
シーンで照明情報を使用
適切な照明設定を取得したら、シーン内の仮想オブジェクトを現実世界の一部であるかのように照明できます。
ARCameraManager
コンポーネントは、照明の推定が有効になっているときに、フレームの照明条件を推定する frameReceived
イベントを発生させることができます。frameReceived
イベントの情報は、ARLightEstimationData
として ARCameraFrameEventArgs
構造体に保存されます。
ライトのパラメータを実行時に変更する手順は次のとおりです。
- シーン内の既存のディレクショナル ライトを作成または変更します。
新しいスクリプトをディレクショナル ライトにアタッチします。
// Sample Lighting Estimation script Light light; void Awake () { light = GetComponent<Light>(); } void OnEnable() { if (cameraManager != null) cameraManager.frameReceived += FrameChanged; } void OnDisable() { if (cameraManager != null) cameraManager.frameReceived -= FrameChanged; } void FrameChanged(ARCameraFrameEventArgs args) { // Modify `light` parameters using ARCameraFrameEventArgs. }
この新しいスクリプトを変更して、照明の変化を検出します。変更方法の例については、Unity の
BasicLightEstimation.cs
スクリプトとHDRLightEstimation.cs
スクリプトをご覧ください。
シーンで環境プローブを使用する
シーンで環境プローブを有効にする手順は次のとおりです。
- シーンの
ARSessionOrigin
で自動プレースメントを有効にします。 ARSessionOrigin
にAREnvironmentProbeManager
コンポーネントを追加します。