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
ทําตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนพารามิเตอร์ของหลอดไฟขณะรันไทม์
- สร้างหรือแก้ไขแสงทิศทางที่มีอยู่ในฉาก
แนบสคริปต์ใหม่กับแสงทิศทาง
// 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