Lighting Estimation API 提供詳細資料,可讓您在算繪虛擬物品時模擬各種光源提示。ARCore 支援三種輕度預估模式:
必要條件
請務必先瞭解基本 AR 概念,以及如何設定 ARCore 工作階段,然後再繼續操作。
啟用亮度預估功能
請按照下列步驟在應用程式中啟用亮度預估功能。
- 設定 AR Foundation 專案或 ARCore Extensions 專案。
- 在「Hierarchy」分頁中,前往 XR Session Origin > AR Camera。
- 在 AR Camera Manager 元件下方,選取 Light Estimation。
- 在 Light Estimation 下拉式選單中,選取要使用的模式。
啟用環境 HDR 模式
環境 HDR 模式可啟用下列光估設定:
符合下列條件時,系統會自動啟用這個模式:
- 只要在 AR 相機管理員提供的「光度估算」模式中,選取環境球面上弦、主光方向和/或主光線強度
AREnvironmentProbeManager
已啟用環境探測功能- 已選取相容的攝影機設定
啟用微光強度模式
選取 ARCameraManager
元件中的「微光模式」後,系統會自動啟用基本光強度預估功能。
微光強度模式會啟用下列亮度預估設定:
- 環境顏色
- 環境強度
在場景中使用亮度資訊
有了正確的光源設定後,您就能為場景中的虛擬物件打光,就像是真實世界的一部分。
在啟用亮度估算功能時,ARCameraManager
元件可以引發 frameReceived
事件,用於估算影格的亮度條件。frameReceived
事件的資訊會以 ARLightEstimationData
的形式儲存在 ARCameraFrameEventArgs
結構體中。
如要在執行階段變更光源參數,請按照下列步驟操作。
- 在場景中建立或修改現有的定向光源。
將新的指令碼附加至方向燈。
// Sample Lighting Estimation script Light light; void Awake () { light = GetComponent<Light>(); } void OnEnable() { if (cameraManager != null) cameraManager.frameReceived += FrameChanged; } void OnDisable() { if (cameraManager != null) cameraManager.frameReceived -= FrameChanged; } void FrameChanged(ARCameraFrameEventArgs args) { // Modify `light` parameters using ARCameraFrameEventArgs. }
修改這個新的指令碼,以便偵測光線變化。如需這種做法的範例,請參閱 Unity 的
BasicLightEstimation.cs
和HDRLightEstimation.cs
指令碼。
在場景中使用環境探測功能
請按照下列步驟,在場景中啟用環境探測功能。
- 在場景
ARSessionOrigin
中啟用自動設定廣告插播時間點。 - 在
ARSessionOrigin
中新增AREnvironmentProbeManager
元件。