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
イベントの情報は、ARCameraFrameEventArgs
構造体に ARLightEstimationData
として保存されます。
実行時にライトのパラメータを変更する手順は次のとおりです。
- シーンでディレクショナル ライトを作成または変更します。
ディレクショナル ライトに新しいスクリプトを追加します。
// 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
で自動配置を有効にします。 AREnvironmentProbeManager
コンポーネントをARSessionOrigin
に追加します。