平台專屬指南
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine

如要打造逼真的 AR 體驗,光照效果是關鍵。如果虛擬物體缺少陰影,或是材質閃亮,無法反映周圍空間,即使使用者無法解釋原因,也能感覺到物體不太合適。這是因為人類會下意識地感知環境中物體的光照方式。光線估算 API 會分析指定圖片中的這類線索,提供場景中光線的詳細資訊。接著,您可以在算繪虛擬物體時使用這項資訊,使這些物體的光照條件與其所處的場景相同,讓使用者保持投入。
燈光提示
光線估算 API 提供詳細資料,讓您在算繪虛擬物件時,模擬各種光線提示。這些線索包括陰影、環境光、陰影、鏡面高光和反射。
陰影
陰影通常有方向性,可讓觀眾判斷光源位置。
環境光
環境光是從周圍環境射入的整體漫射光,可讓所有物體顯現。
加上底色
陰影是光線的強度,舉例來說,同一場景中同一物件不同部位的陰影程度可能不同,具體取決於物件相對於觀看者的角度,以及與光源的距離。
鏡面高光
鏡面高光是表面直接反射光源的閃亮部分。物件上的亮部會根據場景中檢視者的位置而改變。
回想
光線從表面反射的方式會因表面是否具有鏡面 (高反射率) 或漫射 (不反射) 屬性而異。舉例來說,金屬球會呈現高度鏡面反射,並反射周圍環境,而塗上暗啞霧面灰色的球則會呈現漫射。現實生活中的大多數物體都具有這些屬性的組合,例如有刮痕的保齡球或使用頻繁的信用卡。
反射面也會從周遭環境中擷取顏色。物體的顏色會直接受到環境色彩的影響。舉例來說,藍色房間中的白色球體會呈現藍色調。
環境 HDR 模式
這些模式包含個別的 API,可精細且真實地估算方向性照明、陰影、鏡面亮部和反射。
環境 HDR 模式會使用機器學習技術即時分析相機影像,並合成環境照明,支援虛擬物件的逼真算繪。
這個光線估算模式提供:
主要方向光:代表主要光源。可用於投射陰影。
環境球諧函數。代表場景中剩餘的環境光能量。
HDR 立方體貼圖。可用於在閃亮的金屬物體中算繪反射效果。
您可以搭配使用這些 API,但建議一併使用,才能獲得最逼真的效果。
主要方向光
主要方向光 API 會計算場景主要光源的方向和強度。這項資訊可讓場景中的虛擬物件顯示合理位置的鏡面高光,並以與其他可見實體物件一致的方向投射陰影。
如要瞭解這項功能,請參考以下兩張相同虛擬火箭的圖片。在左側圖片中,火箭下方有陰影,但方向與場景中的其他陰影不符。右側火箭的陰影指向正確方向。這是細微但重要的差異,因為陰影的方向和強度更符合場景中的其他陰影,因此火箭在場景中更顯真實。

當主要光源或發光物體移動時,物體上的鏡面高光會即時調整位置,與光源保持相對位置。
方向性陰影也會根據主要光源的位置調整長度和方向,就像現實世界一樣。為說明這項效果,請參考以下兩個模特兒,一個是虛擬,另一個是真實。左側的人體模型是虛擬模型。

環境球諧函數
除了主要方向光中的光能外,ARCore 也提供球諧函數,代表場景中來自各個方向的整體環境光。在算繪期間使用這項資訊,加入細微的提示,凸顯虛擬物件的定義。
請看這兩張相同火箭模型的圖片。左側的火箭是使用主要方向光 API 偵測到的光照估計資訊算繪而成。右側的火箭是使用主要方向光和環境球諧函數 API 偵測到的資訊算繪而成。第二個火箭的視覺定義更清楚,且與場景的融合度更高。

HDR 立方體貼圖
使用 HDR 立方體貼圖,在光澤度中高程度的虛擬物體上算繪逼真的反射效果,例如閃亮的金屬表面。立方體貼圖也會影響物件的陰影和外觀。舉例來說,如果鏡面物件周圍是藍色環境,就會反射藍色色調。計算 HDR 立方體對應需要少量額外的 CPU 計算。
是否應使用 HDR 立方體貼圖,取決於物件如何反射周圍環境。由於虛擬火箭是金屬材質,因此具有強烈的鏡面反射成分,可直接反射周圍環境。因此可從立方體貼圖獲益。另一方面,如果虛擬物件的材質是暗灰色霧面,則完全沒有鏡面反射成分。其顏色主要取決於漫射元件,因此無法從立方體貼圖獲益。
以下火箭是使用三種環境 HDR API 算繪而成。HDR 立方體貼圖可啟用反射提示,並進一步強調物件在場景中的位置。

以下是同一火箭模型在不同光照環境下的呈現效果。這些場景都是使用三個 API 的資訊算繪而成,並套用方向性陰影。

環境強度模式
「環境強度」模式會判斷特定圖片的平均像素強度和色彩校正純量。這是粗略設定,適用於不需要精確光源的用途,例如已烘焙光源的物件。
像素強度
擷取場景中照明的平均像素強度。您可以將這類照明套用至整個虛擬物件。
顏色
偵測每個影格的白平衡。接著,您可以校正虛擬物件的色彩,讓物件更順暢地融入場景的整體色彩。
環境探針
環境探測器會將 360 度攝影機畫面整理成環境紋理,例如立方體地圖。這些紋理可用於真實地照亮虛擬物體,例如「反射」所在房間的虛擬金屬球。