明るさを適切に設定する

プラットフォーム固有のガイド

リアルな AR エクスペリエンスを作り出すためには、照明を適切に使うことが重要です。仮想オブジェクトに影がないことや、光沢のあるマテリアルが周囲の空間を反映していないと、ユーザーはその理由を説明できなくても、物体が十分に収まっていないと感じることができます。これは、人間が無意識のうちに、周囲の物体の照明についての手がかりを認識しているためです。Lighting Estimation API は、指定された画像にこうした手がかりがないか分析し、シーン内の照明に関する詳細情報を提供します。この情報を利用して仮想オブジェクトをレンダリングすると、仮想オブジェクトが配置されているシーンと同じ条件下でライトになり、ユーザーの地に足をつけて集中力を保つことができます。

照明の合図

Lighting Estimation API は、仮想オブジェクトをレンダリングする際にさまざまな照明の合図を模倣できる、詳細なデータを提供します。これらは、シャドウ、アンビエント ライト、シェーディング、鏡面ハイライト、反射です。

多くの場合、影は方向性を示し、光源のソースを視聴者に伝えます。

周囲光

アンビエント ライトは、周囲から差し込む光を全体的に拡散し、あらゆるものを見えるようにしたものです。

シェーディング

シェーディングは光の強さです。たとえば、同じオブジェクトのさまざまな部分を、視聴者に対する角度や光源への近さに応じて、同じシーン内で異なるシェーディング レベルを設定できます。

鏡像のハイライト

鏡面ハイライトとは、光源を直接反射する光沢のある表面のことです。シーン内のビューアの位置からの相対的なオブジェクトの変化をハイライト表示します。

気分

反射面が鏡面性(高反射)か拡散(非反射)特性によって、光がサーフェスから反射する仕組みは異なります。たとえば、金属のボールは鏡面が非常に高く、その環境を反映します。一方、くすんだマットなグレーに塗られた別のボールは拡散します。実在するほとんどの物体は、これらの性質が組み合わさっています。たとえば、傷がついたボウリングのボールや、よく利用されているクレジット カードなどです。

また、反射面は周囲の環境から色を取り出します。オブジェクトの色は、環境の色の影響を直接受けることがあります。たとえば、青い部屋にある白いボールは青みがかった色になります。

環境 HDR モード

これらのモードは個別の API で構成されており、方向ライティング、シャドウ、スペキュラー ハイライト、反射など、きめ細かくリアルなライティングを推定できます。

環境 HDR モードでは、機械学習を使用してカメラ画像をリアルタイムで分析し、環境照明を合成して仮想オブジェクトのリアルなレンダリングをサポートします。

この照明推定モードでは、次のことが可能です。

  1. メインのディレクショナル ライト:メインの光源を表します。シャドウの適用に使用できます。

  2. 周囲球面高調波。シーン内の残りの周囲光エネルギーを表します。

  3. HDR キューブマップ。光沢のある金属製の物体の反射をレンダリングするために使用できます。

これらの API はさまざまな組み合わせで使用できますが、最も現実的な効果を得るために組み合わせて使用するように設計されています。

メインのディレクショナル ライト

メインのディレクショナル ライト API は、シーンのメイン光源の方向と強度を計算します。この情報により、シーン内の仮想オブジェクトは適切な位置に配置された鏡面ハイライトを表示し、目に見える他の現実の物体と同じ方向にシャドウを投影できます。

この仕組みを確認するために、同じ仮想ロケットの 2 つの画像を見てみましょう。左の画像では、ロケットの下に影がありますが、その方向がシーンの他の影と異なっています。右側のロケットでは、影が正しい方向を指している。これは微妙ながらも重要な違いであり、影の方向と強さがシーン内の他の影とよく似ているため、シーンに現れるロケットの根拠となります。

     

メインの光源や照明のオブジェクトが動いているとき、オブジェクトの鏡面ハイライトの位置が、光源に対する相対的な位置をリアルタイムで調整されます。

ディレクショナル シャドウも、現実世界と同じように、メインの光源の位置を基準にして長さと方向を調整します。この効果を説明するために、この 2 つのマネキン(1 つは仮想、もう 1 つは本物)を想像してください。左側のマネキンはバーチャル マネキンです。

周囲の球面高調波

ARCore は、主要な指向性光の光エネルギーに加えて、シーン内のあらゆる方向から入ってくる全体的な環境光を表す球面調波を提供します。レンダリング時にこの情報を使用して、仮想オブジェクトの定義を際立たせる微妙なキューを追加します。

次の 2 つの同じロケットモデルの画像を考えてみましょう。左側のロケットは、メインのディレクショナル ライト API によって検出されたライティング推定情報を使用してレンダリングされています。右側のロケットは、主方角光と周囲球面調和 API の両方で検出された情報を使用してレンダリングされています。2 つ目のロケットはより視覚的に鮮明になり、よりシームレスにシーンに溶け込みます。

     

HDR キューブマップ

HDR キューブマップを使用すると、光沢が中程度から高い仮想オブジェクト(光沢のある金属面など)にリアルな反射をレンダリングできます。キューブマップは、オブジェクトのシェーディングと外観にも影響します。たとえば、青い環境に囲まれた鏡面オブジェクトのマテリアルは青色に反射します。HDR キューブマップを計算するには、少量の CPU 計算を追加する必要があります。

HDR キューブマップを使用すべきかどうかは、オブジェクトが周囲をどのように反射するかによって決まります。仮想ロケットは金属製であるため、強力な鏡面成分が周囲の環境を直接反射します。そのため、キューブマップの恩恵を受けることができます。一方、くすんだグレーのマットな素材を使用した仮想オブジェクトは、鏡面コンポーネントをまったく持っていません。その色は主に Diffuse コンポーネントに依存しており、キューブマップからはメリットがありません。

3 つの環境 HDR API はすべて、下のロケットのレンダリングに使用されました。HDR キューブマップでは反射キューが有効になり、対象物がシーンに完全に接している点がさらに強調されます。

これは、同じロケットモデルを異なる照明環境で撮影したものです。これらのシーンはすべて、3 つの API からの情報を使用してレンダリングし、方向性のあるシャドウを適用しています。

           

アンビエント輝度モード

アンビエント輝度モードでは、特定の画像の平均ピクセル輝度と色補正スカラーを決定します。これは、照明がベイクされたオブジェクトなど、正確な照明が重要でないユースケース向けに設計された粗い設定です。

ピクセル輝度

シーン内の照明の平均ピクセル強度をキャプチャします。このライティングは仮想オブジェクト全体に適用できます。

フレームごとにホワイト バランスを検出します。その後、仮想オブジェクトに色補正を加えて、シーンの全体的な色付けに溶け込ませることができます。

環境プローブ

環境プローブは、360 度カメラビューをキューブマップなどの環境テクスチャに整理します。こうしたテクスチャを使用して、仮想的な物体(部屋の中を「反射」する仮想金属ボールなど)に、リアルに光を当てることができます。