คู่มือนี้จะแสดงภาพรวมของการพัฒนาด้วย Unity สำหรับ Android XR Android XR ทำงานร่วมกับเครื่องมือและฟีเจอร์ที่คุ้นเคยซึ่งคุณคาดหวังจาก Unity และเนื่องจากการรองรับ Android XR ของ Unity สร้างขึ้นจาก OpenXR ฟีเจอร์จํานวนมากที่อธิบายไว้ในภาพรวมของ OpenXR จึงรองรับใน Unity ด้วย
ทำตามคู่มือนี้เพื่อดูข้อมูลต่อไปนี้
- การสนับสนุน Unity สำหรับ Android XR
- ข้อมูลเบื้องต้นเกี่ยวกับ Unity XR
- การพัฒนาและเผยแพร่แอปสำหรับ Android XR
- แพ็กเกจ Unity สำหรับ Android XR
- Unity OpenXR: แพ็กเกจ Android XR
- ส่วนขยาย Android XR สำหรับ Unity
- ข้อควรพิจารณาเกี่ยวกับฟีเจอร์และความเข้ากันได้
- อินพุตและการโต้ตอบ
การสนับสนุน Unity สำหรับ Android XR
เมื่อสร้างแอป Unity สำหรับ Android XR คุณจะใช้เครื่องมือและความสามารถของเทคโนโลยีความจริงผสมใน Unity 6 ได้ ซึ่งรวมถึงเทมเพลตความจริงผสมที่ใช้ XR Interaction Toolkit, AR Foundation และปลั๊กอิน OpenXR เพื่อช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว เมื่อสร้างแอปด้วย Unity สำหรับ Android XR เราขอแนะนำให้ใช้ Universal Render Pipeline (URP) เป็นไปป์ไลน์การแสดงผลและ Vulkan เป็น Graphics API ฟีเจอร์เหล่านี้ช่วยให้คุณใช้ประโยชน์จากฟีเจอร์กราฟิกใหม่ๆ ของ Unity ซึ่งรองรับเฉพาะกับ Vulkan เท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกําหนดค่าเหล่านี้ได้ในคู่มือการตั้งค่าโปรเจ็กต์
พื้นฐานของ Unity XR
หากคุณเพิ่งเริ่มพัฒนาด้วย Unity หรือ XR โปรดดูคู่มือ XR ของ Unity เพื่อทําความเข้าใจแนวคิดและเวิร์กโฟลว์พื้นฐานของ XR คู่มือ XR มีข้อมูลต่อไปนี้
- ปลั๊กอินของผู้ให้บริการ XR ซึ่งรวมถึง Unity OpenXR: Android XR และส่วนขยาย Android XR สำหรับ Unity
- แพ็กเกจการสนับสนุน XR เพื่อเพิ่มฟีเจอร์ระดับแอปพลิเคชัน
- คำแนะนำเกี่ยวกับสถาปัตยกรรม XR ที่อธิบายสแต็กเทคโนโลยี Unity XR และระบบย่อย XR
- การตั้งค่าโปรเจ็กต์ XR
- การสร้างและเรียกใช้แอป XR
- คำแนะนำด้านกราฟิก XR ซึ่งรวมถึง Universal Render Pipeline, การแสดงภาพสเตอริโอ, การแสดงภาพโฟกัส, ภูมิภาคการแสดงภาพหลายมุมมอง และการกำหนดเวลาเฟรม VR
- คำแนะนำเสียงสำหรับ XR รวมถึงการรองรับโปรแกรมจำลองเสียง
การพัฒนาและเผยแพร่แอปสำหรับ Android
Unity มีเอกสารประกอบเชิงลึกสำหรับการพัฒนา การสร้าง และการเผยแพร่สำหรับ Android ซึ่งครอบคลุมหัวข้อต่างๆ เช่น สิทธิ์ของ Android ใน Unity, การตั้งค่าบิลด์ Android, การสร้างแอปสำหรับ Android และการส่งแอปไปยัง Google Play
แพ็กเกจ Unity สำหรับ Android XR
มีแพ็กเกจ 2 รายการที่รองรับการสร้างแอป Unity สำหรับ Android XR แพ็กเกจทั้ง 2 แพ็กเกจนี้เป็นปลั๊กอินของผู้ให้บริการ XR ซึ่งเปิดใช้ได้ผ่านแพ็กเกจการจัดการปลั๊กอิน XR ของ Unity เครื่องมือจัดการปลั๊กอิน XR จะเพิ่มการตั้งค่าโปรเจ็กต์สำหรับจัดการและเสนอความช่วยเหลือเกี่ยวกับการโหลด การเริ่มต้น การกําหนดค่า และการสนับสนุนการสร้างสําหรับปลั๊กอิน XR หากต้องการให้แอปของคุณเรียกใช้ฟีเจอร์ OpenXR ขณะรันไทม์ โปรเจ็กต์ต้องเปิดใช้ฟีเจอร์เหล่านี้ผ่านตัวจัดการปลั๊กอิน
รูปภาพนี้แสดงตัวอย่างตำแหน่งที่คุณเปิดใช้กลุ่มฟีเจอร์เหล่านี้ผ่านเครื่องมือแก้ไขของ Unity ได้
Unity OpenXR สำหรับ Android XR
แพ็กเกจ Unity OpenXR Android XR คือปลั๊กอิน XR เพื่อเพิ่มการรองรับ Android XR ลงใน Unity ปลั๊กอิน XR นี้ให้การรองรับ Android XR ส่วนใหญ่สําหรับ Unity และเปิดใช้การรองรับอุปกรณ์ Android XR สําหรับโปรเจ็กต์ AR Foundation AR Foundation ได้รับการออกแบบมาสำหรับนักพัฒนาแอปที่ต้องการสร้างประสบการณ์ AR หรือ Mixed Reality โดยจะมีอินเทอร์เฟซสำหรับฟีเจอร์ AR แต่ไม่ได้ใช้งานฟีเจอร์ใดๆ เอง แพ็กเกจ Unity OpenXR Android XR มีการใช้งาน หากต้องการเริ่มต้นใช้งานแพ็กเกจนี้ โปรดดูคู่มือแพ็กเกจซึ่งมีคู่มือการเริ่มต้นใช้งาน
ส่วนขยาย Android XR สำหรับ Unity
ส่วนขยาย Android XR สำหรับ Unity เป็นส่วนเสริมของแพ็กเกจ Unity OpenXR Android XR และมีฟีเจอร์เพิ่มเติมที่จะช่วยคุณสร้างประสบการณ์ที่สมจริง โดยจะใช้แพ็กเกจนี้เพียงอย่างเดียวหรือร่วมกับแพ็กเกจ Unity OpenXR Android XR ก็ได้
หากต้องการเริ่มต้นใช้งานแพ็กเกจนี้ ให้ทำตามคู่มือการตั้งค่าโปรเจ็กต์หรือคู่มือเริ่มต้นใช้งานสำหรับการนําเข้าส่วนขยาย Android XR สําหรับ Unity
ข้อควรพิจารณาเกี่ยวกับฟีเจอร์และความเข้ากันได้
ตารางต่อไปนี้อธิบายฟีเจอร์ที่ Unity OpenXR รองรับ ซึ่งได้แก่ แพ็กเกจ Android XR และแพ็กเกจส่วนขยาย Android XR สำหรับ Unity และสามารถใช้เพื่อพิจารณาว่าแพ็กเกจใดมีฟีเจอร์ที่คุณต้องการและข้อควรพิจารณาด้านความเข้ากันได้
ฟีเจอร์ |
Unity OpenXR: สตริงฟีเจอร์ Android XR |
สตริงฟีเจอร์ของส่วนขยาย Android XR สำหรับ Unity |
Use Case และลักษณะการทำงานที่คาดไว้ |
---|---|---|---|
Android XR: เซสชัน AR
|
Android XR (ส่วนขยาย): การจัดการเซสชัน
|
หากต้องการใช้ฟีเจอร์จากแพ็กเกจใดแพ็กเกจหนึ่ง คุณต้องเปิดใช้ฟีเจอร์เซสชัน AR สำหรับแพ็กเกจนั้น คุณเปิดใช้ชุดฟีเจอร์ทั้ง 2 ชุดพร้อมกันได้ โดยแต่ละฟีเจอร์จะจัดการข้อขัดแย้งตามความเหมาะสม |
|
ไม่มี |
ไม่มี |
การติดตามอุปกรณ์ใช้เพื่อติดตามตำแหน่งและการหมุนของอุปกรณ์ในพื้นที่จริง GameObject ต้นทาง XR จะจัดการการติดตามอุปกรณ์และการเปลี่ยนรูปแบบของสิ่งที่ติดตามให้เป็นระบบพิกัดของ Unity โดยอัตโนมัติผ่านคอมโพเนนต์ XROrigin และลําดับชั้น GameObject ที่มีกล้องและ TrackedPoseDriver |
|
Android XR: กล้อง AR |
ไม่มี |
ฟีเจอร์นี้รองรับการประมาณแสงและการส่งผ่านแบบเต็มหน้าจอ |
|
Android XR: เครื่องบิน AR |
Android XR (ส่วนขยาย): เครื่องบิน |
ฟีเจอร์ทั้ง 2 อย่างนี้เหมือนกัน คุณจะใช้อย่างใดอย่างหนึ่งก็ได้ Android XR (ส่วนขยาย): เครื่องบินจะรวมอยู่ด้วยเพื่อให้นักพัฒนาแอปใช้ฟีเจอร์การติดตามวัตถุและจุดยึดถาวรของ Android XR (ส่วนขยาย) ได้โดยไม่ต้องใช้แพ็กเกจ Unity OpenXR Android XR ในอนาคต เราจะนำ Android XR (Extensions): Plane ออกและแทนที่ด้วย Android XR: AR Anchor |
|
ไม่มี |
Android XR (ส่วนขยาย): การติดตามวัตถุ |
ฟีเจอร์นี้รองรับการตรวจจับและติดตามวัตถุในสภาพแวดล้อมจริง ซึ่งใช้ร่วมกับคลังวัตถุอ้างอิง |
|
Android XR: ใบหน้า AR
|
Android XR: การติดตามใบหน้า
|
ฟีเจอร์นี้รองรับดวงตาของรูปโปรไฟล์ผ่านฟีเจอร์ AR Face ของ Android XR เข้าถึงสีหน้าของผู้ใช้ผ่านฟีเจอร์การติดตามใบหน้าของ Android XR คุณใช้ฟีเจอร์ทั้ง 2 อย่างนี้ร่วมกันได้หากต้องการ |
|
Android XR: เรย์แคสต์ AR
|
ไม่มี |
ฟีเจอร์นี้ช่วยให้คุณฉายรังสีและคำนวณจุดตัดระหว่างรังสีนั้นกับสิ่งที่ติดตามได้บนระนาบหรือสิ่งที่ติดตามได้แบบความลึกที่ตรวจพบในสภาพแวดล้อมจริง |
|
Android XR: จุดยึด AR |
Android XR (ส่วนขยาย): หมุด
|
ฟีเจอร์ทั้ง 2 รายการรองรับทั้งจุดยึดเชิงพื้นที่และจุดยึดระนาบ คุณจะใช้ฟีเจอร์ใดฟีเจอร์หนึ่งก็ได้ สำหรับหมุดถาวร ให้ใช้ Android XR (ส่วนขยาย): หมุด ในอนาคต เราจะนำ Android XR (ส่วนขยาย): หมุดยึดออก และฟีเจอร์หมุดยึดทั้งหมดจะอยู่ใน Android XR: หมุดยึด AR |
|
Android XR: การบดบังด้วย AR
|
ไม่มี |
การบดบังช่วยให้เนื้อหาผสมความจริง (MR) ในแอปปรากฏขึ้นโดยซ่อนอยู่หรือบดบังบางส่วนอยู่หลังวัตถุในสภาพแวดล้อมจริง |
|
เมตริกประสิทธิภาพ |
เมตริกประสิทธิภาพของ Android XR |
ไม่มี |
ใช้ฟีเจอร์นี้เพื่อเข้าถึงเมตริกประสิทธิภาพของอุปกรณ์ Android XR |
การรองรับเลเยอร์การคอมโพส (ต้องใช้ปลั๊กอิน OpenXR และเลเยอร์การคอมโพส XR) |
Android XR: ชั้นการคอมโพสผ่าน
|
ใช้การรองรับเลเยอร์การคอมโพสิชันของ Unity เพื่อสร้างเลเยอร์การคอมโพสิชันพื้นฐาน (เช่น รูปสี่เหลี่ยมจัตุรัส ทรงกระบอก โปรเจ็กชัน) Android XR: เลเยอร์การคอมโพสิชันแบบส่งผ่านสามารถใช้เพื่อสร้างเลเยอร์แบบส่งผ่านที่มีเมชที่กำหนดเอง ซึ่งอ่านจาก GameObject ของ Unity |
|
การแสดงผล Foveated (ต้องใช้ปลั๊กอิน OpenXR)
|
Foveation (เดิม) |
การแสดงผล Foveated ช่วยเพิ่มความเร็วในการแสดงผลด้วยการปรับลดความละเอียดของพื้นที่ในขอบเขตการมองเห็นของผู้ใช้ ฟีเจอร์การแสดงผลโฟกัสของ Unity รองรับเฉพาะแอปที่ใช้ URP และ Vulkan เท่านั้น ฟีเจอร์ Foveation (เดิม) ในส่วนขยาย Android XR สำหรับ Unity ยังรองรับไปป์ไลน์การเรนเดอร์ในตัวและ OpenGL ES ด้วย เราขอแนะนำให้ใช้ฟีเจอร์การแสดงผลโฟกัสของ Unity เมื่อเป็นไปได้ และโปรดทราบว่าเราขอแนะนำให้ใช้ทั้ง URP และ Vulkan เมื่อสร้างแอปสำหรับ Android XR |
|
ไม่มี |
Android XR: พื้นที่อ้างอิงแบบไม่จำกัด |
ฟีเจอร์นี้จะตั้งค่าโหมดต้นทางการติดตาม XRInputSubsystem เป็นไม่จำกัด unbounded บ่งชี้ว่า XRInputSubsystem ติดตาม InputDevice ทั้งหมดโดยสัมพันธ์กับจุดยึดในโลก ซึ่งอาจเปลี่ยนแปลงได้ |
|
ไม่มี |
โหมดการผสมสภาพแวดล้อม |
ฟีเจอร์นี้ช่วยให้คุณตั้งค่าโหมดการผสมผสานสภาพแวดล้อม XR ซึ่งควบคุมวิธีที่ภาพเสมือนจริงผสานรวมกับสภาพแวดล้อมในชีวิตจริงเมื่อเปิดใช้โหมดนี้ |
อินพุตและการโต้ตอบ
Android XR รองรับอินพุตแบบหลายรูปแบบ
นอกจากการติดตามมือและตาแล้ว ระบบยังรองรับอุปกรณ์ต่อพ่วง เช่น ตัวควบคุม 6DoF, เมาส์ และแป้นพิมพ์จริง ซึ่งหมายความว่าแอปสำหรับ Android XR ควรรองรับการโต้ตอบด้วยมือ และไม่ควรคาดหวังว่าอุปกรณ์ทุกเครื่องจะมีตัวควบคุม
โปรไฟล์การโต้ตอบ
Unity ใช้โปรไฟล์การโต้ตอบเพื่อจัดการวิธีที่แอปพลิเคชัน XR สื่อสารกับอุปกรณ์และแพลตฟอร์ม XR ต่างๆ โปรไฟล์เหล่านี้จะกำหนดอินพุตและเอาต์พุตที่คาดไว้สำหรับการกำหนดค่าฮาร์ดแวร์ต่างๆ เพื่อให้มั่นใจว่ามีความเข้ากันได้และฟังก์ชันการทำงานที่สอดคล้องกันในแพลตฟอร์มต่างๆ การเปิดใช้โปรไฟล์การโต้ตอบช่วยให้มั่นใจได้ว่าแอปพลิเคชัน XR จะทำงานได้อย่างถูกต้องกับอุปกรณ์ต่างๆ คงการแมปอินพุตที่สอดคล้องกัน และเข้าถึงฟีเจอร์ XR ที่เฉพาะเจาะจง วิธีตั้งค่าโปรไฟล์การโต้ตอบ
- เปิดหน้าต่างการตั้งค่าโปรเจ็กต์ (เมนู: แก้ไข > การตั้งค่าโปรเจ็กต์)
- คลิกการจัดการปลั๊กอิน XR เพื่อขยายส่วนปลั๊กอิน (หากจำเป็น)
- เลือก OpenXR ในรายการปลั๊กอิน XR
- ในส่วนโปรไฟล์การโต้ตอบ ให้เลือกปุ่ม + เพื่อเพิ่มโปรไฟล์
- เลือกโปรไฟล์ที่จะเพิ่มจากรายการ
การโต้ตอบด้วยมือ
การโต้ตอบด้วยมือ (XR_EXT_hand_interaction
) มีให้โดยปลั๊กอิน OpenXR และคุณสามารถแสดง
การโต้ตอบด้วยการจ้องมอง
การโต้ตอบด้วยการมอง (XR_EXT_eye_gaze_interaction
) มาจากปลั๊กอิน OpenXR และคุณใช้เลย์เอาต์นี้เพื่อดึงข้อมูลท่าทางของตา (ตำแหน่งและการหมุน) ที่ส่วนขยายแสดงผลได้ อ่านเพิ่มเติมเกี่ยวกับการโต้ตอบด้วยการมองตาในคู่มืออินพุต OpenXR
การโต้ตอบกับตัวควบคุม
Android XR รองรับโปรไฟล์ตัวควบคุม Oculus Touch สำหรับตัวควบคุม 6DoF โปรไฟล์ทั้ง 2 รายการนี้มาจากปลั๊กอิน OpenXR
การโต้ตอบของเมาส์
โปรไฟล์การโต้ตอบด้วยเมาส์ของ Android XR (XR_ANDROID_mouse_interaction
) มาจากส่วนขยาย Android XR สำหรับ Unity โดยจะแสดงเลย์เอาต์อุปกรณ์ <AndroidXRMouse>
ใน Unity Input
System
การโต้ตอบด้วยท่าทางฝ่ามือ
ปลั๊กอิน OpenXR รองรับการโต้ตอบด้วยท่าทางฝ่ามือ (XR_EXT_palm_pose
) ซึ่งแสดงเลย์เอาต์ <PalmPose>
ภายในระบบอินพุตของ Unity ท่าทางฝ่ามือไม่ได้มีไว้เพื่อแทนที่ส่วนขยายหรือแพ็กเกจที่ทำการติดตามมือสำหรับกรณีการใช้งานที่ซับซ้อนมากขึ้น แต่สามารถใช้เพื่อวางเนื้อหาภาพเฉพาะแอป เช่น รูปภาพสำหรับรูปโปรไฟล์ ท่าฝ่ามือประกอบด้วยทั้งตำแหน่งและการวางแนวของฝ่ามือ
XR Hands
แพ็กเกจมือ XR ช่วยให้คุณเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของมือ (XR_EXT_hand_tracking
และ XR_FB_hand_tracking_aim
) และมีตัวแฝงสำหรับแปลงข้อมูลข้อต่อของมือจากการติดตามการเคลื่อนไหวของมือเป็นท่าทางอินพุต
หากต้องการใช้ฟีเจอร์ที่แพ็กเกจ XR Hands มีให้ ให้เปิดใช้ฟีเจอร์ Hand Tracking Subsystem และ Meta Hand Tracking Aim OpenXR
แพ็กเกจมือ XR จะมีประโยชน์ในกรณีที่คุณต้องการข้อมูลท่าทางมือหรือข้อต่อของมือที่ละเอียดยิ่งขึ้น หรือเมื่อต้องทำงานกับท่าทางสัมผัสที่กำหนดเอง
โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบของ Unity สำหรับการตั้งค่า XR Hands ในโปรเจ็กต์
เลือกวิธีแสดงผลมือ
Android XR รองรับการแสดงผลมือ 2 วิธี ได้แก่ เมชมือและโปรแกรมแสดงภาพสำเร็จรูป
ตาข่ายมือ
แพ็กเกจ Unity สำหรับ Android XR มีฟีเจอร์ Hand Mesh ที่ให้สิทธิ์เข้าถึง XR_ANDROID_hand_mesh extension
ฟีเจอร์ Mesh ของมือจะแสดงเมชสำหรับมือของผู้ใช้ เมชมือประกอบด้วยจุดยอดของสามเหลี่ยมที่แสดงเรขาคณิตของมือ ฟีเจอร์นี้มีไว้เพื่อใช้สร้างเมชที่ปรับตามโปรไฟล์ของผู้ใช้ซึ่งแสดงเรขาคณิตจริงของมือของผู้ใช้เพื่อการแสดงภาพ
Prefab มือ XR
แพ็กเกจมือ XR มีตัวอย่างที่เรียกว่า Hands visualizer ซึ่งมีมือซ้ายและขวาที่ผ่านการจัดเตรียมอย่างเต็มรูปแบบสำหรับการเรนเดอร์การนําเสนอมือของผู้ใช้ที่เหมาะสมกับบริบท
ท่าทางสัมผัสของระบบ
Android XR มีท่าทางสัมผัสของระบบเพื่อเปิดเมนูสำหรับให้ผู้ใช้ย้อนกลับ เปิดตัวเปิดแอป หรือดูภาพรวมของแอปพลิเคชันที่ทำงานอยู่ในปัจจุบัน ผู้ใช้สามารถเปิดใช้งานเมนูระบบนี้โดยใช้การบีบนิ้วด้วยมือข้างถนัด
เมื่อผู้ใช้โต้ตอบกับเมนูการนําทางของระบบ แอปพลิเคชันจะตอบสนองต่อเหตุการณ์การติดตามการเคลื่อนไหวของศีรษะเท่านั้น แพ็กเกจ XR Hands สามารถตรวจจับได้เมื่อผู้ใช้ดำเนินการบางอย่าง เช่น การโต้ตอบกับเมนูการนำทางของระบบนี้ การตรวจสอบ AimFlags SystemGesture และ DominantHand จะช่วยให้คุณทราบเมื่อระบบดำเนินการนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ AimFlags ได้ที่เอกสารประกอบเกี่ยวกับ Enum MetaAimFlags ของ Unity
เครื่องมือการโต้ตอบ XR
แพ็กเกจเครื่องมือการโต้ตอบ XR เป็นระบบการโต้ตอบระดับสูงที่อิงตามคอมโพเนนต์สำหรับสร้างประสบการณ์ VR และ AR โดยเป็นเฟรมเวิร์กที่ทำให้การโต้ตอบแบบ 3 มิติและ UI พร้อมใช้งานจากเหตุการณ์อินพุตของ Unity โดยรองรับงานการโต้ตอบต่างๆ รวมถึงการตอบสนองแบบสัมผัส การตอบสนองด้วยภาพ และการเคลื่อนที่