搭配場景模型使用亮度預估

Lighting Estimation API 會分析特定圖片,用於離散的視覺提示,並提供特定情境中光源的詳細資訊。接下來,您可以在轉譯物件時,使用與放置情境相同的條件來轉譯虛擬物件,讓這類物件更加貼近實際需求,並為使用者提供更身歷其境的體驗。

燈光提示和概念

人類無意察覺到細微的語氣,會對物體或物體的照明造成哪些影響。如果虛擬物件缺少陰影或包含閃爍材質,但這類物體無法反映周圍空間,使用者即便感覺無法解釋原因,也無法察覺到特定情境。這就是為什麼轉譯 AR 物件以符合情境中的光源,對於沉浸式體驗和更真實的體驗而言至關重要。

光照估測功能會提供大部分資料,讓您在轉譯虛擬物件時模擬各種光源,這些提示為陰影環境光度陰影鏡面醒目顯示反射

我們可以描述下列視覺提示:

  • 環境光度。「環境光」是來自環境周遭的整體擴散光源,照明所有光線。

  • 陰影。陰影通常具有方向性,且可告訴觀眾光源的來源。

  • 陰影。陰影是特定圖像中不同區塊的光源強度。舉例來說,同一個物體的不同部分在同一情境中可以有不同程度的陰影,具體程度取決於觀眾的相關程度,以及它與光源的距離。

  • 鏡面亮點。這些是閃射表面的光源表面。物件在場景中相對於檢視者位置的醒目顯示效果。

  • 映射。系統會根據途徑是否使用鏡面 (高反射) 或漫反射 (非反射) 屬性,將光源從表面反射到不同。舉例來說,金屬球具有高度鏡面,且反映出自身的環境,而另一個球型塗了霧的霧面則是漫反射。大部分現實生活中的物件都有了這些屬性的組合,比如精心設計的保齡球或常用的信用卡。

    反光錶面也會從環境環境中挑選色彩。物件的顏色會受到其環境顏色的影響。例如,藍色房間中的白色球體會面向藍色調。

運用光照估測模式增強真實性

Config.LightEstimationMode API 提供模式,可依據環境中的精細程度和寫實程度來預估光源。

  • 環境 HDR 模式 (ENVIRONMENTAL_HDR)。這個模式包含 API,可對方向光、陰影、鏡面高亮度和反射進行逼真預估,

  • 微光強度模式 (AMBIENT_INTENSITY)。此模式可決定特定圖片的平均像素強度和亮度。此粗略設定適合在精確亮度並非重要的情況下,例如具有烘焙光源的物體。

  • DISABLED。如果亮度與指定環境或物件無關,請停用 Config.LightEstimationMode

使用 ENVIRONMENTAL_HDR 模式

ENVIRONMENTAL_HDR 模式會使用機器學習技術來分析輸入相機圖片,並合成環境光源以轉譯虛擬物件。

這個模式結合了定向光源、環境光度學和 HDR 立方體,讓虛擬物體看起來像是特定場景的一部分:

  • 定向光源會分析特定圖片的明顯光源。這類光源會加入合理定位的鏡面高光,並將陰影投射在與其他可見的真實物體上一致的方向。

  • 環境光度和諧感知功能可真實呈現場景所有方向所帶來的整體環境光度。在轉譯期間,這些資訊會用來新增細微提示,以提供虛擬物件的定義。

  • HDR 立方體會擷取虛擬物件周圍的環境光源。在轉譯期間,此立方體圖會將中到高光源材料的倒影。

下圖顯示啟用 ENVIRONMENTAL_HDR 的情境中的虛擬物件範例。

為場景場景設定 ENVIRONMENTAL_HDR 模式

如要搭配場景場景使用 ENVIRONMENTAL_HDR,請擴充 ARFragment 類別,並按照下列方式覆寫設定:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
  return config;
}

如要查看運作方式的範例,請參閱 Solar System 範例。(這個範例導入了 ENVIRONMENTAL_HDR,但不使用 ARFragment)。

使用 AMBIENT_INTENSITY 模式

AMBIENT_INTENSITY 模式會決定特定圖片的平均像素強度,以及色彩校正純量。此設定配置為概略的亮度,例如精確光源的重要性 (例如具有烘焙光源的物體)。

  • 「Pixel 強度」會擷取場景中光源的平均像素強度,適用於整個虛擬物件。

  • 色彩校正純量會偵測每個個別影格的白平衡,方便您為虛擬物件進行色彩校正,以更流暢的方式整合到場景的整體色彩中。

為場景場景設定 AMBIENT_INTENSITY 模式

如要搭配場景場景使用 AMBIENT_INTENSITY,請擴充 ARfragment 類別,並按照下列方式覆寫設定:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
  return config;
}