คำแนะนำเฉพาะแพลตฟอร์ม
Android (Kotlin/Java)
Android NDK (C)
Unity (มูลนิธิ AR)
เครื่องยนต์ที่ไม่มีจริง
ส่วนสำคัญในการสร้างประสบการณ์ AR ที่สมจริงคือการจัดแสงอย่างเหมาะสม เมื่อวัตถุเสมือนไม่มีเงาหรือมีวัสดุมันวาวที่ไม่สะท้อนพื้นที่โดยรอบ ผู้ใช้จะรู้สึกว่าวัตถุนั้นไม่พอดีแม้จะอธิบายเหตุผลไม่ได้ก็ตาม เนื่องจากมนุษย์รับรู้ถึงสัญญาณของการส่องวัตถุในสภาพแวดล้อมของตนโดยไม่รู้ตัว Lighting Estimation API จะวิเคราะห์ภาพที่ระบุสำหรับสัญญาณดังกล่าว พร้อมให้ข้อมูลโดยละเอียดเกี่ยวกับการจัดแสงในฉาก คุณสามารถใช้ข้อมูลนี้เมื่อแสดงภาพวัตถุเสมือนเพื่อให้แสงภายใต้สภาวะเดียวกันกับฉากที่จัดวาง เพื่อให้ผู้ใช้มีทิศทางและมีส่วนร่วม
คิวการจัดแสง
Lighting Estimation API ให้ข้อมูลโดยละเอียดที่ให้คุณเลียนแบบสัญญาณแสงแบบต่างๆ เมื่อแสดงภาพวัตถุเสมือน ซึ่งได้แก่ เงา แสงแวดล้อม เฉดสี ไฮไลต์ที่น่าประทับใจ และการสะท้อน
ให้แสงเงา
เงามักเป็นทิศทางและบอกให้ผู้ชมรู้ว่าแหล่งกำเนิดแสงมาจากไหน
แสงแวดล้อม
แสงแวดล้อมคือแสงกระจายโดยรวมที่พุ่งออกมาจากสภาพแวดล้อม ทำให้มองเห็นทุกอย่างได้
การไล่เฉดสี
การแรเงาคือความเข้มของแสง ตัวอย่างเช่น ส่วนต่างๆ ของวัตถุเดียวกันอาจมีระดับการแรเงาที่แตกต่างกันในฉากเดียวกัน ทั้งนี้ขึ้นอยู่กับมุมที่สัมพันธ์กับมุมมองและระยะใกล้ของแหล่งกำเนิดแสง
ไฮไลต์สุดล้ำ
ไฮไลต์ที่น่าตื่นตาคือส่วนเล็กๆ ของพื้นผิวที่สะท้อนแหล่งกำเนิดแสงโดยตรง ไฮไลต์บนวัตถุจะเปลี่ยนโดยสัมพันธ์กับตำแหน่งของผู้ดูในฉาก
การสะท้อนความรู้สึก
แสงจะสะท้อนจากพื้นผิวต่างๆ โดยขึ้นอยู่กับว่าพื้นผิวนั้นมีคุณสมบัติในการสะท้อนแสง (สะท้อนแสงสูง) หรือกระจาย (ไม่สะท้อนแสง) ตัวอย่างเช่น ลูกบอลโลหะจะโดดเด่นและสะท้อนสภาพแวดล้อม ส่วนลูกบอลอีกลูกหนึ่งมีสีเทาด้านหม่นจะกระจายไป วัตถุในโลกจริงส่วนใหญ่มีคุณสมบัติเหล่านี้ผสมผสานกัน เช่น ลูกโบว์ลิ่งสับฟ์หรือบัตรเครดิตที่ใช้เป็นประจำ
พื้นผิวสะท้อนแสงยังเลือกสีจากสภาพแวดล้อมรอบตัวได้ด้วย การลงสีของวัตถุอาจได้รับผลกระทบโดยตรงจากการให้สีสิ่งแวดล้อม ตัวอย่างเช่น ลูกบอลสีขาวในห้องสีฟ้าจะให้เป็นโทนสีฟ้า
โหมด HDR ด้านสิ่งแวดล้อม
โหมดเหล่านี้ประกอบด้วย API แยกต่างหากที่ช่วยให้ประเมินแสงแบบละเอียดและสมจริงสำหรับการจัดแสงตามทิศทาง เงา ไฮไลต์พิเศษ และการสะท้อน
โหมด HDR ด้านสิ่งแวดล้อมใช้แมชชีนเลิร์นนิงในการวิเคราะห์ภาพจากกล้องแบบเรียลไทม์และสังเคราะห์แสงแวดล้อมเพื่อรองรับการแสดงผลวัตถุเสมือนจริงแบบสมจริง
โหมดการประมาณแสงนี้ให้
ไฟทิศทางหลัก แสดงที่มาของแสงหลัก สามารถใช้เพื่อแคสต์เงา
ฮาร์มอนิกทรงกลม แสดงพลังงานแสงแวดล้อมที่เหลืออยู่ในฉาก
คิวบ์แมป HDR สามารถใช้ในการแสดงภาพการสะท้อนในวัตถุที่เป็นโลหะแวววาว
คุณใช้ API เหล่านี้ในชุดค่าผสมต่างๆ ได้ แต่ API เหล่านี้ออกแบบมาให้ใช้ร่วมกันเพื่อให้ได้ผลลัพธ์ที่สมจริงที่สุด
ไฟทิศทางหลัก
API ทิศทางของแสงหลักจะคำนวณทิศทางและความเข้มของแหล่งกำเนิดแสงหลักของฉาก ข้อมูลนี้ช่วยให้วัตถุเสมือนจริงในฉากแสดงไฮไลต์จุดที่น่าสนใจในระดับที่เหมาะสมได้และช่วยให้เกิดเงาในทิศทางที่สอดคล้องกับวัตถุจริงที่มองเห็นได้อื่นๆ
หากต้องการดูวิธีการทำงาน ให้ลองพิจารณาภาพทั้งสองนี้ของจรวดเสมือนเดียวกัน ในภาพทางด้านซ้าย มีเงาอยู่ใต้จรวด แต่ทิศทางไม่ตรงกับเงาอื่นๆ ในฉาก ในจรวดทางด้านขวา เงาจะชี้ไปในทิศทางที่ถูกต้อง จุดแตกต่างที่เล็กน้อยแต่สำคัญ และทำให้จรวดอยู่ในฉากเพราะทิศทางและความเข้มของเงาตรงกับเงาอื่นๆ ในฉากมากกว่า
เมื่อแหล่งกำเนิดแสงหลักหรือวัตถุที่มีแสงสว่างกำลังเคลื่อนที่ ไฮไลต์ข้อมูลจำเพาะบนวัตถุจะปรับตำแหน่งวัตถุนั้นแบบเรียลไทม์โดยสัมพันธ์กับแหล่งกำเนิดแสง
นอกจากนี้เงาที่มีทิศทางยังจะปรับความยาวและทิศทางโดยสัมพันธ์กับตำแหน่งของแหล่งกำเนิดแสงหลัก เช่นเดียวกับในโลกแห่งความเป็นจริง เพื่อให้เข้าใจถึงเอฟเฟกต์นี้ ให้ลองดูหุ่น 2 ตัวนี้ อันหนึ่งเป็นแบบเสมือนจริงและของจริงอีกอัน หุ่นทางด้านซ้ายเป็นหุ่นเสมือนจริง
แอมแปร์ฮาร์มอนิกทรงกลม
นอกจากพลังงานแสงในไฟทิศทางหลักแล้ว ARCore ยังให้ค่าฮาร์มอนิกทรงกลมด้วย ซึ่งแสดงแสงแวดล้อมโดยรวมที่มาจากทุกทิศทางในฉาก ใช้ข้อมูลนี้ในระหว่างการแสดงภาพเพื่อเพิ่มคำแนะนำเล็กๆ น้อยๆ ที่ช่วยอธิบายคำจำกัดความของวัตถุเสมือนจริง
ลองพิจารณา 2 ภาพนี้เป็นโมเดลจรวดเดียวกัน จรวดทางด้านซ้ายจะแสดงผลโดยใช้ข้อมูลการประมาณแสงที่ตรวจพบโดย API แสงทิศทางหลัก จรวดทางด้านขวาจะแสดงผลโดยใช้ข้อมูลที่ตรวจพบจากทั้งแสงทิศทางหลักและ API ฮาร์มอนิกทรงกลม จรวดลูกที่สองมีคำจำกัดความที่มองเห็นได้ชัดเจนกว่า และกลมกลืนไปกับฉากมากขึ้น
คิวบ์แมป HDR
ใช้คิวบ์แมป HDR เพื่อแสดงผลการสะท้อนที่สมจริงบนวัตถุเสมือนจริงที่มีความมันวาวระดับปานกลางถึงสูง เช่น พื้นผิวโลหะที่แวววาว นอกจากนี้ คิวบ์แมปยังมีผลต่อเฉดสีและรูปลักษณ์ของวัตถุด้วย ตัวอย่างเช่น วัสดุของวัตถุเฉพาะที่ล้อมรอบด้วยสภาพแวดล้อมสีฟ้าจะแสดงเฉดสีฟ้า การคำนวณลูกบาศก์ HDR ต้องใช้การประมวลผล CPU เพิ่มเติมเล็กน้อย
คุณควรใช้ Cubemap แบบ HDR หรือไม่นั้น ขึ้นอยู่กับวิธีที่วัตถุสะท้อนสภาพแวดล้อม เนื่องจากจรวดเสมือนมีความเป็นเมทัลลิก จึงมีส่วนประกอบที่เป็นสเปคแรงซึ่งสะท้อนสภาพแวดล้อมรอบตัวได้โดยตรง จึงได้รับประโยชน์จาก Cubemap ในทางกลับกัน วัตถุเสมือนจริงที่มีวัสดุด้านสีเทาแบบหม่นจะไม่มีส่วนประกอบที่เป็นจุดเด่นเลย สีของสีจะขึ้นอยู่กับคอมโพเนนต์แบบกระจายเป็นหลัก และจะไม่ได้ประโยชน์จาก Cubemap
มีการใช้ Environmental HDR API ทั้ง 3 ตัวในการแสดงภาพจรวดด้านล่าง คิวบ์แมป HDR จะทำให้คิวสะท้อนกลับและไฮไลต์เพิ่มเติมที่ทำให้วัตถุอยู่ในฉากโดยสมบูรณ์
นี่คือโมเดลจรวดเดียวกันในสภาพแวดล้อมที่มีแสงสว่างต่างกัน ฉากทั้งหมดเหล่านี้แสดงผลโดยใช้ข้อมูลจาก API ทั้ง 3 ส่วน โดยมีการใช้เงาที่มีทิศทาง
โหมดความเข้มแวดล้อม
โหมดความเข้มสภาพแวดล้อมจะระบุความเข้มของพิกเซลโดยเฉลี่ยและสเกลาร์การแก้สีสําหรับรูปภาพหนึ่งๆ การตั้งค่าแบบหยาบๆ ออกแบบมาสำหรับกรณีการใช้งานที่ไม่ค่อยมีความสำคัญในการจัดแสง เช่น วัตถุที่มีแสงจ้า
ความเข้มของพิกเซล
จับภาพความเข้มพิกเซลเฉลี่ยของแสงในฉาก คุณสามารถใช้การจัดแสงนี้กับวัตถุเสมือนทั้งวัตถุได้
สี
ตรวจหาสมดุลแสงขาวสำหรับแต่ละเฟรม จากนั้นคุณจะสามารถแก้สีวัตถุเสมือนจริงเพื่อให้สีนั้นกลมกลืนกับการสร้างสีโดยรวมของฉากนั้นๆ มากขึ้น
การตรวจสอบสภาพแวดล้อม
การตรวจสอบสภาพแวดล้อมจะจัดระเบียบมุมมองกล้อง 360 องศาตามพื้นผิวของสภาพแวดล้อม เช่น แผนที่ลูกบาศก์ จากนั้น พื้นผิวเหล่านี้จะถูกนำมาใช้เพื่อให้แสงวัตถุเสมือนจริงได้อย่างสมจริง เช่น ลูกบอลโลหะเสมือนจริงที่ "สะท้อน" ของห้องที่อยู่