Lighting Estimation API ให้ข้อมูลที่ละเอียดซึ่งช่วยให้คุณจำลองแสงเงาต่างๆ เมื่อแสดงผลวัตถุเสมือนได้ ARCore รองรับโหมดการประมาณแสง 3 โหมด ได้แก่
ข้อกำหนดเบื้องต้น
โปรดทำความเข้าใจแนวคิด AR พื้นฐานและวิธีกำหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
เปิดใช้การประมาณแสง
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การประมาณแสงในแอป
- ตั้งค่าโปรเจ็กต์ AR Foundation หรือโปรเจ็กต์ส่วนขยาย ARCore
- ในแท็บ Hierarchy ให้ไปที่ XR Session Origin > AR Camera
- เลือก Light Estimation ในส่วนคอมโพเนนต์ AR Camera Manager
- เลือกโหมดที่ต้องการใช้ในเมนูแบบเลื่อนลง Light Estimation
เปิดใช้โหมด HDR ของสภาพแวดล้อม
โหมด HDR สำหรับสภาพแวดล้อมจะเปิดใช้การตั้งค่าการประมาณแสงต่อไปนี้
- ทิศทางของแสงหลัก
- ความเข้มของแสงหลัก
- แอมเบียนท์สเฟียร์ฮาร์โมนิก
โหมดนี้จะเปิดใช้โดยอัตโนมัติเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ฮาร์โมนิคแบบแอมเบียนท์ ทิศทางแสงหลัก และ/หรือความเข้มของแสงหลักถูกเลือกในโหมดการประมาณแสงซึ่งตัวจัดการกล้อง AR จัดหาให้
- เครื่องตรวจสอบสภาพแวดล้อมเปิดใช้ใน
AREnvironmentProbeManager
- เลือกการกำหนดค่ากล้องที่เข้ากันได้
เปิดใช้โหมดความสว่างของหน้าจอแอมเบียนท์
ระบบจะเปิดใช้การประมาณแสงพื้นฐานโดยอัตโนมัติเมื่อเลือกโหมดความเข้มของแสงโดยรอบในคอมโพเนนต์ ARCameraManager
โหมดความเข้มแสงแวดล้อมจะเปิดใช้การตั้งค่าการประมาณแสงดังต่อไปนี้
- สีแบบแอมเบียนท์
- ความเข้มของแสงโดยรอบ
ใช้ข้อมูลการจัดแสงในฉาก
เมื่อตั้งค่าแสงถูกต้องแล้ว คุณสามารถให้แสงกับวัตถุเสมือนในฉากราวกับว่าวัตถุนั้นเป็นส่วนหนึ่งของโลกแห่งความเป็นจริง
คอมโพเนนต์ ARCameraManager
สามารถส่งเหตุการณ์ frameReceived
ซึ่งประมาณสภาพแสงของเฟรมเมื่อเปิดใช้การประมาณแสง ระบบจะจัดเก็บข้อมูลจากเหตุการณ์ frameReceived
ไว้ในโครงสร้าง ARCameraFrameEventArgs
เป็น ARLightEstimationData
ทําตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนพารามิเตอร์ของหลอดไฟขณะรันไทม์
- สร้างหรือแก้ไขแสงทิศทางที่มีอยู่ในฉาก
แนบสคริปต์ใหม่กับ Directional Light
// 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. }
แก้ไขสคริปต์ใหม่นี้เพื่อตรวจหาการเปลี่ยนแปลงของแสง ดูตัวอย่างวิธีดำเนินการได้ที่สคริปต์
BasicLightEstimation.cs
และHDRLightEstimation.cs
ของ Unity
ใช้อุปกรณ์ตรวจจับสภาพแวดล้อมในฉาก
ทําตามขั้นตอนต่อไปนี้เพื่อเปิดใช้เครื่องมือวัดสภาพแวดล้อมในฉาก
- เปิดใช้ตำแหน่งโฆษณาที่ลงโดยอัตโนมัติใน
ARSessionOrigin
ของฉาก - เพิ่มคอมโพเนนต์
AREnvironmentProbeManager
ลงในARSessionOrigin