プラットフォーム固有のガイド
リアルな AR 体験を作成するための重要な要素は、照明を適切に設定することです。仮想オブジェクトに影がないか、周囲の空間を反射しない光沢のある素材を使用している場合、ユーザーは、その理由を説明できない場合でも、オブジェクトが適切に配置されていないと感じます。これは、人間が周囲の物体の照明の状態に関する手がかりを無意識に認識するためです。Lighting Estimation API は、指定された画像を分析してそのような手がかりを探し、シーンの照明に関する詳細情報を提供します。この情報は、仮想オブジェクトのレンダリング時に使用して、配置されているシーンと同じ条件で照明を当てることで、ユーザーの没入感を高めることができます。
照明キュー
Lighting Estimation API は、仮想オブジェクトのレンダリング時にさまざまな照明キューを模倣できる詳細なデータを提供します。これらのキューには、シャドウ、アンビエント ライト、シェーディング、スペキュラ ハイライト、反射があります。
影
影は多くの場合、光源の方向を視聴者に伝えます。
周囲光
周囲光は、周囲から入ってくる全体的な拡散光で、すべてのものが見えるようになります。
シェーディング
シャドウは光の強さです。たとえば、同じシーン内の同じオブジェクトの異なる部分では、視聴者からの角度や光源からの距離に応じて、シャドウのレベルが異なる場合があります。
鏡面反射ハイライト
鏡面反射ハイライトは、光源を直接反射するサーフェスの光沢のある部分です。オブジェクトのハイライトは、シーン内の視聴者の位置に応じて変化します。
気分
光がサーフェスから反射する様子は、サーフェスが鏡面反射(反射率が高い)か拡散反射(反射しない)かによって異なります。たとえば、金属製のボールは光沢が高く、周囲を反射しますが、マットグレーに塗装されたボールは拡散します。ほとんどの実在のオブジェクトには、これらのプロパティが組み合わされています。たとえば、擦り傷のあるボウリング ボールやよく使用されたクレジット カードなどです。
反射面は周囲の環境の色も拾います。オブジェクトの色付けは、その環境の色付けに直接影響を受ける可能性があります。たとえば、青い部屋にある白いボールは青みがかった色になります。
環境 HDR モード
これらのモードは、指向性照明、シャドウ、鏡面反射ハイライト、反射の詳細でリアルな照明の推定を可能にする個別の API で構成されています。
Environmental HDR モードでは、機械学習を使用してカメラ画像をリアルタイムで分析し、環境光を合成して仮想オブジェクトのリアルなレンダリングをサポートします。
この照明推定モードでは、次のことができます。
メインの指向性ライト。メインの光源を表します。シャドウを投影するために使用できます。
アンビエント球面調和関数。シーン内の残りの環境光エネルギーを表します。
HDR キューブマップ。光沢のある金属製のオブジェクトの反射をレンダリングするために使用できます。
これらの API はさまざまな組み合わせで使用できますが、最もリアルな効果を得るには、組み合わせて使用することをおすすめします。
メインの指向性ライト
メインのディレクショナル ライト API は、シーンのメイン光源の方向と強度を計算します。この情報により、シーン内の仮想オブジェクトに適度に配置された鏡面反射ハイライトを表示し、他の可視実在オブジェクトと一致する方向に影を投影できます。
この仕組みを理解するため、同じ仮想ロケットの 2 つの画像について考えてみましょう。左側の画像では、ロケットの下に影がありますが、その方向はシーン内の他の影と一致していません。右側のロケットでは、影が正しい方向を向いています。違いは微妙ですが重要です。影の方向と強度がシーン内の他の影と一致するため、ロケットがシーンに溶け込みます。
メインの光源または照明が当てられたオブジェクトが動いている場合、オブジェクトのスペキュラ ハイライトは光源に対してリアルタイムで位置を調整します。
光源の方向の影は、実世界と同じように、メインの光源の位置に応じて長さと方向が調整されます。この効果を説明するために、2 つのマネキン(1 つは仮想マネキン、もう 1 つは実在のマネキン)について考えてみましょう。左側のマネキンが仮想マネキンです。
アンビエント球面調和関数
ARCore は、メインの指向性光の光エネルギーに加えて、シーンのすべての方向から入ってくる全体的なアンビエント光を表す球面調和関数を提供します。この情報をレンダリング時に使用して、仮想オブジェクトの定義を際立たせる微妙なキューを追加します。
同じロケット モデルの 2 つの画像について考えてみましょう。左側のロケットは、メインのディレクショナル ライト API によって検出された照明推定情報を使用してレンダリングされています。右側のロケットは、メイン ディレクション ライト API とアンビエント球面調和 API の両方で検出された情報を使用してレンダリングされています。2 つ目のロケットは視覚的に明確で、シーンにシームレスに溶け込んでいます。
HDR キューブマップ
HDR キューブマップを使用すると、光沢が中程度から高い仮想オブジェクト(光沢のある金属表面など)にリアルな反射をレンダリングできます。キューブマップは、オブジェクトのシェーディングと外観にも影響します。たとえば、青い環境に囲まれた鏡面反射オブジェクトのマテリアルは、青い色合いを反射します。HDR キューブマップの計算には、追加の CPU 計算が少し必要になります。
HDR キューブマップを使用するかどうかは、オブジェクトが周囲をどのように反射するかによって異なります。仮想ロケットは金属であるため、周囲の環境を直接反射する強い鏡面反射成分があります。そのため、キューブマップが有効になります。一方、くすんだグレーのマット マテリアルの仮想オブジェクトには、スペキュラ コンポーネントはまったくありません。色は主に拡散成分に依存し、キューブマップを使用するメリットはありません。
以下のロケットのレンダリングには、3 つの Environmental HDR API すべてが使用されています。HDR キューブマップを使用すると、反射キューとハイライトを有効にして、オブジェクトをシーンに完全に配置できます。
同じロケットモデルを、照明が異なる環境で撮影した写真です。これらのシーンはすべて、3 つの API の情報を使用してレンダリングされ、ディレクショナル シャドウが適用されています。
アンビエント インテンシティ モード
アンビエント インテンシティ モードでは、特定の画像の平均ピクセル強度と色補正スカラーが決定されます。これは、正確なライティングが重要でないユースケース(ライティングがベイクインされたオブジェクトなど)向けに設計された粗い設定です。
ピクセルの強度
シーン内の照明の平均ピクセル強度をキャプチャします。この照明は、仮想オブジェクト全体に適用できます。
色
個々のフレームのホワイトバランスを検出します。その後、仮想オブジェクトの色補正を行い、シーン全体の色にスムーズに統合できるようにします。
環境プローブ
環境プローブは、360 度カメラビューをキューブマップなどの環境テクスチャに整理します。これらのテクスチャは、仮想オブジェクトにリアルな照明を当てるために使用できます。たとえば、部屋を「反射」する仮想の金属球などです。