Lighting Estimation API จะวิเคราะห์รูปภาพโดยใช้รูปแบบที่แยกออกมาเป็นภาพ และให้ข้อมูลโดยละเอียดเกี่ยวกับการจัดแสงในฉากนั้นๆ จากนั้นคุณสามารถใช้ข้อมูลนี้เมื่อแสดงภาพวัตถุเสมือนจริงเพื่อจัดแสงให้แสงใต้สภาวะแวดล้อมเดียวกันกับวัตถุ ทําให้วัตถุเหล่านี้ดูสมจริงขึ้นและเพิ่มประสบการณ์ที่สมจริงให้แก่ผู้ใช้
แนวทางและแนวคิดในการจัดแสง
มนุษย์รู้สัญญาณเล็กๆ น้อยๆ ไม่รู้ตัวว่าวัตถุหรือสิ่งมีชีวิตอยู่ในแสงสว่างในสภาพแวดล้อมอย่างไร เมื่อวัตถุเสมือนไม่มีเงาหรือวัสดุแวววาวไม่ครอบคลุมพื้นที่โดยรอบ ผู้ใช้สัมผัสได้ว่าวัตถุนั้นไม่เหมาะกับฉากใดเป็นพิเศษ แม้ว่าจะอธิบายไม่ได้ก็ตาม ด้วยเหตุนี้ การแสดงภาพวัตถุ AR ให้สอดคล้องกับแสงในฉากจึงเป็นสิ่งสําคัญสําหรับประสบการณ์ที่สมจริงและสมจริงยิ่งขึ้น
การประมาณแสงจะช่วยทํางานส่วนใหญ่ให้คุณโดยให้ข้อมูลแบบละเอียดที่คุณเลียนแบบลักษณะแสงต่างๆ ได้เมื่อแสดงภาพวัตถุเสมือนจริง จุดเหล่านี้ได้แก่ เงา แสงแวดล้อม เฉดสี ไฮไลต์เฉพาะ และการสะท้อน
เราอธิบายลักษณะภาพต่อไปนี้ได้
แสงแวดล้อม แสงแวดล้อมเป็นแสงแบบกระจายโดยรวมที่เดินทางมาจากสภาพแวดล้อมรอบๆ และส่องสว่างให้ทุกอย่าง
เงา เงามักจะเป็นทิศทางและบอกผู้ชมว่าแหล่งที่มาของแสง มาจากที่ใด
การเฉดสี เฉดสีคือความเข้มของแสงในพื้นที่ต่างๆ ของรูปภาพที่ระบุ ตัวอย่างเช่น ส่วนต่างๆ ของวัตถุเดียวกันอาจมีระดับเฉดสีแตกต่างกันในฉากเดียวกันโดยขึ้นอยู่กับมุมที่สัมพันธ์กับผู้ชม และความใกล้เคียงของแหล่งกําเนิดแสง
ไฮไลต์ที่โดดเด่น นี่คือพื้นผิวที่มันวาวสะท้อนแสงโดยตรง ไฮไลต์ในวัตถุที่เปลี่ยนไปเมื่อเทียบกับตําแหน่งของผู้ชมในฉาก
การทบทวน แสงที่เด้งขึ้นมาบนพื้นผิวต่างๆ ขึ้นอยู่กับว่าพื้นผิวของสถานที่นั้นมีคุณสมบัติเฉพาะหรือไม่ (แสงสะท้อนมาก) หรือกระจายแสง (ไม่สะท้อนแสง) เช่น ลูกบอลโลหะจะมีรูปทรงที่เจาะจงมากและสะท้อนถึงสภาพแวดล้อม ในขณะที่ลูกบอลสีอื่นจะเป็นสีเทาเข้มแบบกระจายตัว วัตถุในชีวิตจริงส่วนใหญ่มีส่วนประกอบผสมกันเหล่านี้ เช่น ลูกโบว์ลิ่งที่นอนไม่หลับหรือบัตรเครดิตมือสอง
พื้นผิวสะท้อนแสงยังเลือกสีจากสภาพแวดล้อมโดยรอบด้วย สีของวัตถุอาจได้รับผลกระทบโดยตรงจากการใช้สีของสภาพแวดล้อม เช่น ลูกบอลสีขาวในห้องสีน้ําเงินจะเป็นสีเทา
ใช้โหมดการประมาณแสงเพื่อเพิ่มความสมจริง
Config.LightEstimationMode
API มีโหมดที่ประมาณแสงในสภาพแวดล้อมด้วยระดับความละเอียดและความสมจริงที่แตกต่างกัน
โหมด HDR ตามสภาพแวดล้อม (
ENVIRONMENTAL_HDR
) โหมดนี้ประกอบด้วย API ที่ให้การประเมินแสงที่สมจริงสําหรับการจัดแสง เงา ไฮไลต์ที่เฉพาะเจาะจง และการสะท้อนแสงตามทิศทางโหมดความเข้มข้นของแอมเบียนท์ (
AMBIENT_INTENSITY
) โหมดนี้จะกําหนดความหนาแน่นของพิกเซลโดยเฉลี่ยและสีของแสงสําหรับรูปภาพหนึ่งๆ การตั้งค่าคร่าวๆ ที่ออกแบบมาเพื่อกรณีการใช้งานที่แสงสว่างไม่สําคัญ เช่น วัตถุที่มีแสงสว่างแบบอบDISABLED
ปิดใช้Config.LightEstimationMode
หากการจัดแสงให้เข้ากับสภาพแวดล้อม ที่ไม่เกี่ยวข้องกับฉากหรือวัตถุ
กําลังใช้โหมด ENVIRONMENTAL_HDR
โหมด ENVIRONMENTAL_HDR
ใช้แมชชีนเลิร์นนิงเพื่อวิเคราะห์รูปภาพของกล้องอินพุตและสังเคราะห์แสงแวดล้อมสําหรับแสดงภาพวัตถุเสมือนจริง
โหมดนี้จะรวมการจัดแสงแบบทิศทาง แอมเบียนท์ทรงกลมโดยรอบ และคิวอาร์โค้ดแบบ HDR เพื่อทําให้วัตถุเสมือนจริงรู้สึกเหมือนเป็นส่วนหนึ่งของฉาก
การจัดแสงแบบปรับทิศทางจะวิเคราะห์แหล่งกําเนิดแสงที่ปรากฏชัดเจนสําหรับรูปภาพหนึ่งๆ การจัดแสงประเภทนี้จะเพิ่มไฮไลต์ที่มีลักษณะเป็นตําแหน่งในตําแหน่งที่เหมาะสมและมีเงาเป็นทิศทางซึ่งสอดคล้องกับวัตถุจริงอื่นๆ ที่มองเห็นได้
ฮาร์โมนิกแบบแอมเบียนท์ทรงกลมจะแทนแสงแวดล้อม แบบสมจริงจากทุกทิศทางในฉาก ในระหว่างการแสดงภาพนี้ เราจะใช้ข้อมูลนี้เพื่อเพิ่มรายละเอียดเล็กๆ น้อยๆ ที่บอกคําจํากัดความของวัตถุเสมือน
Cube Map ของ HDR จะบันทึกแสงแวดล้อมรอบวัตถุเสมือนจริง ในระหว่างแสดงผลนี้ Cubemap จะสะท้อนถึงเนื้อหาความมันวาวปานกลางถึงสูง
รูปภาพต่อไปนี้แสดงตัวอย่างของออบเจ็กต์เสมือนที่วางอยู่ในฉากที่เปิดใช้ ENVIRONMENTAL_HDR
กําหนดค่าโหมด ENVIRONMENTAL_HDR
สําหรับฉากในโหมด
หากต้องการใช้ ENVIRONMENTAL_HDR
กับโหมด Sceneform ให้ขยายคลาส ARFragment
และลบล้างการกําหนดค่าดังนี้
@Override
protected Config getSessionConfiguration(Session session) {
Config config = new Config(session);
config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
return config;
}
หากต้องการดูตัวอย่างวิธีการทํางาน โปรดดูตัวอย่างระบบสุริยะ (ตัวอย่างนี้นํา ENVIRONMENTAL_HDR
ไปใช้โดยไม่มี ARFragment
)
กําลังใช้โหมด AMBIENT_INTENSITY
โหมด AMBIENT_INTENSITY
กําหนดความหนาแน่นของพิกเซลเฉลี่ยและการปรับสเกลสีที่ปรับแก้สําหรับรูปภาพหนึ่งๆ เป็นการตั้งค่าแบบคร่าวๆ ที่ออกแบบมาเพื่อกรณีการใช้งานที่แสงสว่างไม่สําคัญ เช่น วัตถุที่มีแสงสว่างแบบอบแห้ง
ความเข้มข้นของพิกเซลจะบันทึกความเข้มพิกเซลโดยเฉลี่ยของแสงในฉากเพื่อนําไปใช้กับออบเจ็กต์เสมือนทั้งชิ้น
สเกลสเกลของการแก้ไขสีจะตรวจหาความสมดุลสีขาวสําหรับแต่ละเฟรมและช่วยให้คุณแก้สีวัตถุเสมือนเพื่อให้สีต่างๆ ผสานเข้ากับสีของฉากได้อย่างราบรื่นยิ่งขึ้น
กําหนดค่าโหมด AMBIENT_INTENSITY
สําหรับฉากในโหมด
หากต้องการใช้ AMBIENT_INTENSITY
กับโหมด Sceneform ให้ขยายคลาส ARfragment
และลบล้างการกําหนดค่าดังนี้
@Override
protected Config getSessionConfiguration(Session session) {
Config config = new Config(session);
config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
return config;
}