平台專屬指南
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
打造逼真的 AR 體驗,關鍵在於光線的正確性。如果虛擬物件沒有陰影,或是有光澤的材質無法反射周圍空間,使用者就會覺得物件不太合適,即使他們無法解釋原因。這是因為人類會在潛意識中,感知物體在環境中的光線。Lighting Estimation API 會分析指定圖片中的線索,提供場景中燈光的詳細資訊。接著,您可以在算繪虛擬物件時使用這項資訊,讓虛擬物件在與其放置場景相同的條件下發光,讓使用者能感受到物件存在,並與其互動。
燈光提示
Lighting Estimation API 提供詳細資料,讓您在算繪虛擬物件時模擬各種燈光提示。這些提示包括陰影、環境光線、陰影、鏡面高光和反射。
陰影
陰影通常會呈現方向,讓觀眾知道光源來自何處。
環境光
環境光是指從周圍環境進入的整體漫射光線,可讓你看清楚周遭環境。
陰影
陰影是指光線的強度。舉例來說,同一個物體的不同部分在同一個場景中可能有不同的陰影層級,這取決於相對於觀看者的位置角度,以及物體與光源的距離。
鏡面高光
鏡面高光是指直接反射光源的表面亮點。物件上的醒目顯示會根據觀看者在場景中的相對位置而變更。
回想
光線反射到表面的效果會因表面是否具有鏡面 (高度反光) 或漫射 (非反光) 屬性而有所不同。舉例來說,金屬球會具有高度鏡面反射效果,並會反射周遭環境,而另一顆塗上霧面灰色的球則會呈現漫射效果。大多數的實體物件都具有這些屬性組合,例如磨損的保齡球或使用過的信用卡。
反光表面也會從周遭環境擷取顏色。物體的著色會直接受到環境著色的影響。舉例來說,藍色房間中的白色球會呈現藍色調。
環境高動態範圍模式
這些模式包含個別的 API,可針對方向性照明、陰影、鏡面高光和反射,提供精細且逼真的照明估算。
環境高動態範圍模式會使用機器學習技術即時分析相機影像,並合成環境光線,以便呈現逼真的虛擬物件。
這項照明估算模式提供以下功能:
主要方向燈。代表主要光源。可用於投射陰影。
環境球諧函數。代表場景中剩餘的環境光能量。
HDR 立方體貼圖。可用於在亮面金屬物件中算繪反射效果。
您可以以不同的組合使用這些 API,但這些 API 的設計目的是搭配使用,才能達到最逼真的效果。
主方向光
主方向光 API 會計算場景主要光源的方向和強度。有了這項資訊,場景中的虛擬物件就能顯示合理位置的鏡面高光,並在與其他可見實體物件一致的方向投下陰影。
如要瞭解這項功能的運作方式,請參考以下兩張相同虛擬火箭的圖片。在左圖中,火箭下方有陰影,但方向與場景中的其他陰影不符。在右側的火箭中,陰影指向正確方向。這項差異雖然細微,但很重要,因為陰影的方向和強度與場景中的其他陰影更為一致,因此能讓火箭在場景中顯得更真實。
當主要光源或亮光物體處於移動狀態時,物體上的鏡面高光會根據光源,即時調整其位置。
方向性陰影也會根據主要光源的位置調整長度和方向,就像在現實世界中一樣。為了說明這項效果,請思考這兩個虛擬與真實的人體模型。左側的人體模型是虛擬人體模型。
環境球諧函數
除了主要方向光源的光能量之外,ARCore 還提供球面調和函數,代表場景中從各個方向進入的整體環境光。在轉譯期間使用這項資訊,加入微妙的提示,突顯虛擬物件的定義。
請參考以下兩張同樣火箭模型的圖片。左側火箭是使用主要方向光 API 偵測到的照明估計資訊算繪而成。右側的火箭是使用主要方向光和環境球面調和 API 偵測到的資訊算繪而成。第二枚火箭的視覺效果更清晰,且能更自然地融入場景。
HDR 立方體貼圖
使用 HDR 立方體圖,在具有中等至高光澤度的虛擬物件 (例如亮面金屬表面) 上,算繪逼真的反射效果。立方體地圖也會影響物件的著色和外觀。舉例來說,如果鏡面物件周圍是藍色環境,物件材質就會反射藍色調。計算 HDR 立方體貼圖需要少量額外的 CPU 運算。
是否應使用 HDR 立方體圖,取決於物件如何反射周遭環境。由於虛擬火箭是金屬材質,因此具有強烈的鏡面反射成分,會直接反射周圍環境。因此,它可從立方體貼圖中受益。另一方面,使用無光澤灰色霧面材質的虛擬物件,則完全沒有鏡面反射成分。其顏色主要取決於漫射成分,因此不會受立方體貼圖的影響。
下方火箭的算繪作業使用了所有三個環境 HDR API。HDR 立方體地圖可啟用反射提示,並進一步強調場景中物體的基礎。
以下是同一個火箭模型在不同光源環境下的樣貌。所有這些場景都是使用三個 API 的資訊算繪,並套用方向性陰影。
環境亮度模式
環境強度模式會判斷指定圖片的平均像素強度和色彩校正常數。這是粗略的設定,適用於精確光照不太重要的用途,例如已內建光照的物件。
像素強度
擷取場景中燈光的平均像素強度。您可以將這種照明效果套用至整個虛擬物件。
顏色
偵測每個影格/畫面的白平。接著,您可以對虛擬物件進行顏色校正,讓物件更順暢地融入場景的整體色彩。
環境探針
環境探針會將 360 度相機視圖整理成立方體地圖等環境紋理。這些紋理可用於逼真照明虛擬物件,例如「反射」所在房間的虛擬金屬球。