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
で自動配置を有効にします。 AREnvironmentProbeManager
コンポーネントをARSessionOrigin
に追加します。