シーン内の仮想オブジェクトをリアルに照明

Lighting Estimation API は、仮想オブジェクトのレンダリング時にさまざまな照明キューを模倣できる詳細なデータを提供します。ARCore は、次の 3 つの光量推定モードをサポートしています。

  1. 無効
  2. アンビエント輝度モード
  3. 環境 HDR モード

前提条件

続行する前に、AR の基本コンセプトARCore セッションを構成する方法を理解してください。

照明の推定を有効にする

アプリで照明の推定を有効にする手順は次のとおりです。

  1. AR Foundation プロジェクトまたは ARCore Extensions プロジェクトを設定します。
  2. [Hierarchy] タブで XR Session Origin > AR Camera に移動します。

  1. AR Camera Manager コンポーネントで、Light Estimation を選択します。
  2. [Light Estimation] プルダウン メニューで、使用するモードを選択します。

環境 HDR モードを有効にする

環境 HDR モードでは、次の光量推定設定が有効になります。

このモードは、次の条件が満たされると自動的に有効になります。

アンビエント輝度モードを有効にする

ARCameraManager コンポーネントで [アンビエント輝度モード] が選択されている場合、基本的な光量推定が自動的に有効になります。

周囲強度モードでは、光量の推定に関して以下の設定を行うことができます。

  • アンビエント カラー
  • 周囲の輝度

シーンで照明情報を使用

適切な照明設定を取得したら、シーン内の仮想オブジェクトを現実世界の一部であるかのように照明できます。

ARCameraManager コンポーネントは、照明の推定が有効になっているときに、フレームの照明条件を推定する frameReceived イベントを発生させることができます。frameReceived イベントの情報は、ARLightEstimationData として ARCameraFrameEventArgs 構造体に保存されます。

ライトのパラメータを実行時に変更する手順は次のとおりです。

  1. シーン内の既存のディレクショナル ライトを作成または変更します。
  2. 新しいスクリプトをディレクショナル ライトにアタッチします。

    // 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.
    }
    
  3. この新しいスクリプトを変更して、照明の変化を検出します。変更方法の例については、Unity の BasicLightEstimation.cs スクリプトと HDRLightEstimation.cs スクリプトをご覧ください。

シーンで環境プローブを使用する

シーンで環境プローブを有効にする手順は次のとおりです。

  1. シーンの ARSessionOrigin で自動プレースメントを有効にします。
  2. ARSessionOriginAREnvironmentProbeManager コンポーネントを追加します。