06.22 ARKit 2.0如何讓虛擬對象看起來更加真實

ARKit 2.0如何讓虛擬對象看起來更加真實

在增強現實中,光照效果很大程度上決定了一個虛擬物體能否很好的融入現實背景中,也就是我們一再提到的光照一致性問題。

ARKit和ARCore的初始版本都支持對環境光的基礎估計,例如在ARCore SDK中就包含一個輕量級的光估計,以便於更好地設置渲染對象,匹配真實場景。

ARKit 2.0如何讓虛擬對象看起來更加真實

例如在房間中放置一個虛擬無人機,

ARKit 2.0如何讓虛擬對象看起來更加真實

如果我們將現實中的燈光改變,例如開關燈,渲染的無人機也會受到影響。發揮作用的ARCore / DiffuseWithLightEstimateion是基於Lambert照明模型的表面著色器,根據環境光光亮調整最終渲染圖形的調色。

這樣一來虛擬物體能夠更自然地融入環境,不至於太突兀,但是以往ARKit和ARCore在光照一致性方面能夠做到的還非常有限,只能大致估計環境光的方向、光亮等,而無法做到物體之間的互相映射、複雜光照環境下的光照渲染等。

為了讓AR對象更加逼真,Aoole在iOS 12的更新中增加了機器學習功能,將可以預測反射、光照等智能環境紋理。

ARKit 2.0如何讓虛擬對象看起來更加真實

每年iOS的更新都是非常具有話題性的,關於今年的WWDC大會上,iOS 12帶來了不少有趣的新功能,我們在ARKit 2.0 可以吐舌頭的AR表情中,有過大致的盤點。關於Memoji以及一些在文中詳細介紹的內容我們就不再贅述,今天我們一起來具體看看ARKit 2.0是如何讓虛擬對象看起來更加真實的。

基於圖像的光照(Image Based Lighting)

“在3D渲染中,環境紋理是基於圖像的照明算法的基礎,其表面可以逼真地反射周圍的光線。 ARKit可以在使用相機圖像AR的期間生成環境紋理,允許SceneKit或自定義渲染引擎為AR中的虛擬對象提供真實的基於圖像的照明”———Apple doc.

一個物體不會單獨的存在一個空無一物的環境中,它的周圍一般會有其他的物體,當光源照射到其他物體的時候,一定也會存在反射,其中很多反射光就會照射到該物體上去。為了獲取空間中完整的光照情況,傳統的辦法是360°地採集光,費時費力。基於圖像的光照(IBL)顧名思義就是一種簡化的由果推因,從圖像反推環境光情況的技術。

多年之前的3D Studio Max就具備為不屬於真實場景的虛擬物體重新創建基於圖像光照的功能,使得虛擬物體與環境更加無縫銜接,虛擬物體具備了現實世界材料中存在的一些物理屬性。

ARKit 2.0如何讓虛擬對象看起來更加真實

ARKit 2.0如何讓虛擬對象看起來更加真實

而實時反射在AR中也不是一個全新的事物,在去年Vuforia和Unity就已經完成,真正困難的是如何在移動端較好的實現這些功能。

移動端的使用中,設備本身計算能力受限,隨使用者而改變的環境又十分複雜,不可能完成360度全景的光照採集,ARKit採用機器學習的方式來構建環境光照地圖中確實的部分。

補充一下關於PBR(基於物理的實時渲染)的概念。

ARKit 2.0如何讓虛擬對象看起來更加真實

顧名思義,PBR採用了一種更符合物理學規律的方式來模擬光線,通過模擬虛擬物體表面的粗糙程度,來計算出射該物體的光線呈現一個怎樣的方式,例如當一個表面越是粗糙,微平面上的光線排列就會越混亂,越無序。鏡面則相反。

PBR材料的三個主要參數稱為:反照率、粗糙度、金屬度,上圖反映了在不同粗糙度、金屬度下物體的顯示效果。

再根據能量守恆以及反射率方程,就能將某一點處的光線的分佈情況做一個大致的分析。但是在我們的使用場景中,環境中的具體光照信息是難以探測的,Apple的做法是用經驗豐富的機器學習工具去還原缺失的光照信息。

IBL方法用一個簡化模型來反映環境光地圖:環境光探測球,球上將反射周圍環境的各種光線,我們就可以找到在該位置上,光源的相對方位、周圍光線的相對位置。

ARKit 2.0如何讓虛擬對象看起來更加真實

上圖即為在ARKit 2.0的環境光探測器效果。在光照探測器位置,ARKit將自動創建一個AREnvironmentProbeAnchor對象,為特定區域的空間區域提供光照信息。紋理由environmentTexture屬性表示,對於EnvironmentTexturing.automatic ARKit會自動創建,定位並將AREnvironmentProbeAnchor對象添加到會話中。ForEnvironmentTexturing.manual通過創建AREnvironmentProbeAnchor對象,並將它們添加到需要探測光照信息的點上。

ARKit 2.0如何讓虛擬對象看起來更加真實

最近一個新的Unity插件已經支持了ARKit 2.0的實時光照效果,遊戲開發者Dan Miller發佈了一個短片。“在ARKit 2中,用戶可以用環境探測器實時的反射周圍的光線”

ARKit 2.0如何讓虛擬對象看起來更加真實

再看一個demo。

在iOS 12更新後,虛擬物體與環境的融合效果將會大大增強,特別是金屬質感強的虛擬物體,比如BMW I Visualizer中的虛擬汽車

ARKit 2.0如何讓虛擬對象看起來更加真實

逼真的顯示效果是增強現實所追求的,若能從成像素質上騙過觀眾的眼睛,AR的目的也就達到了。

ARKit 2.0如何讓虛擬對象看起來更加真實

ARKit 2.0如何讓虛擬對象看起來更加真實


分享到:


相關文章: