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

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 イベントの情報は、ARCameraFrameEventArgs 構造体に ARLightEstimationData として保存されます。

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

  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. AREnvironmentProbeManager コンポーネントを ARSessionOrigin に追加します。