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

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