Lighting Estimation API แสดงข้อมูลโดยละเอียดที่ให้คุณเลียนแบบการจัดแสงแบบต่างๆ เมื่อแสดงผลวัตถุเสมือนได้ ARCore รองรับโหมดการประมาณแสง 3 โหมด ได้แก่
ข้อกำหนดเบื้องต้น
ตรวจสอบว่าคุณเข้าใจแนวคิด AR พื้นฐาน และวิธีกําหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
เปิดใช้การประมาณค่าแสง
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การประมาณแสงในแอป
- ตั้งค่าโปรเจ็กต์ AR Foundation หรือโปรเจ็กต์ ARCore Extensions
- ในแท็บ Hierarchy ให้ไปที่ XR Session Origin > AR Camera
- เลือก Light Estimation ในคอมโพเนนต์ AR Camera Manager
- ในเมนูแบบเลื่อนลง Light Estimation ให้เลือกโหมดที่ต้องการใช้
เปิดใช้โหมด Environmental 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