พัฒนาด้วย Unity สำหรับ Android XR

คู่มือนี้จะกล่าวถึงภาพรวมของการพัฒนาด้วย 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 มีข้อมูลต่อไปนี้

การพัฒนาและเผยแพร่แอปสำหรับ 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 XR

Unity OpenXR สำหรับ Android XR

แพ็กเกจ Unity OpenXR Android XR คือปลั๊กอิน XR เพื่อเพิ่มการรองรับ Android XR ลงใน Unity ปลั๊กอิน XR นี้ให้การรองรับ Android XR ส่วนใหญ่สําหรับ Unity และเปิดใช้การรองรับอุปกรณ์ Android XR สําหรับโปรเจ็กต์ AR Foundation AR Foundation ได้รับการออกแบบมาสำหรับนักพัฒนาแอปที่ต้องการสร้างประสบการณ์ AR หรือความจริงแบบผสม โดยจะมีอินเทอร์เฟซสำหรับฟีเจอร์ 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

กรณีการใช้งานและลักษณะการทำงานที่คาดไว้

เซสชัน AR

Android XR: เซสชัน AR

  • การตั้งค่าฟีเจอร์ ได้แก่ เพิ่มประสิทธิภาพการทิ้งบัฟเฟอร์ (Vulkan)

Android XR (ส่วนขยาย): การจัดการเซสชัน

  • การตั้งค่าฟีเจอร์ ได้แก่ การสุ่มตัวอย่างย่อย (Vulkan) และ URP SpaceWarp (Vulkan)

หากต้องการใช้ฟีเจอร์จากแพ็กเกจใดแพ็กเกจหนึ่ง คุณต้องเปิดใช้ฟีเจอร์เซสชัน 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

  • XR_ANDROID_avatar_eyes เท่านั้น
  • ไม่มีการติดตามใบหน้า

Android XR: การติดตามใบหน้า

  • XR_ANDROID_face_tracking

ฟีเจอร์นี้รองรับดวงตาของรูปโปรไฟล์ผ่านฟีเจอร์ AR Face ของ Android XR เข้าถึงสีหน้าของผู้ใช้ผ่านฟีเจอร์การติดตามใบหน้าของ Android XR คุณใช้ฟีเจอร์ทั้ง 2 อย่างนี้ร่วมกันได้หากต้องการ

การแคสต์เรย์

Android XR: เรย์แคสต์ AR

  • โฆษณา Anchor ของเครื่องบิน
  • หมุดความลึก

ไม่มี

ฟีเจอร์นี้ช่วยให้คุณฉายรังสีและคำนวณจุดตัดระหว่างรังสีนั้นกับสิ่งที่ติดตามได้บนระนาบหรือสิ่งที่ติดตามได้แบบความลึกที่ตรวจพบในสภาพแวดล้อมจริง

แองเคอร์

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: ชั้นการคอมโพสผ่าน

  • XR_ANDROID_composition_layer_passthrough_mesh

ใช้การรองรับเลเยอร์การคอมโพสิชันของ Unity เพื่อสร้างเลเยอร์การคอมโพสิชันพื้นฐาน (เช่น รูปสี่เหลี่ยมจัตุรัส ทรงกระบอก โปรเจ็กชัน) Android XR: เลเยอร์การคอมโพสิชันแบบส่งผ่านข้อมูลสามารถใช้เพื่อสร้างเลเยอร์แบบส่งผ่านข้อมูลด้วยเมชที่กำหนดเอง ซึ่งอ่านจาก GameObject ของ Unity

การแสดงผลแบบโฟกัส

การแสดงผล Foveated (ต้องใช้ปลั๊กอิน OpenXR)

  • รองรับการแสดงผล Foveated ที่มีการติดตามการเคลื่อนไหวของดวงตา: พื้นที่ที่มีความละเอียดสูงกว่าจะอยู่ที่กึ่งกลางของจุดที่ผู้ใช้กําลังมองอยู่ในปัจจุบัน ซึ่งทำให้ผู้ใช้เห็นภาพได้น้อยลง

Foveation (เดิม)

การแสดงผล Foveated ช่วยเพิ่มความเร็วในการแสดงผลโดยการลดความละเอียดของพื้นที่ในขอบเขตการมองเห็นของผู้ใช้ ฟีเจอร์การแสดงผลโฟกัสของ Unity รองรับเฉพาะแอปที่ใช้ URP และ Vulkan เท่านั้น ฟีเจอร์ Foveation (เดิม) ในส่วนขยาย Android XR สำหรับ Unity ยังรองรับ BiRP และ GLES ด้วย เราขอแนะนำให้ใช้ฟีเจอร์การแสดงผลโฟกัสของ Unity เมื่อเป็นไปได้ และโปรดทราบว่าเราขอแนะนำให้ใช้ทั้ง URP และ Vulkan เมื่อสร้างแอปสำหรับ Android XR

พื้นที่อ้างอิงที่ไม่มีขอบเขต

ไม่มี

Android XR: พื้นที่อ้างอิงแบบไม่จำกัด

ฟีเจอร์นี้จะตั้งค่าโหมดต้นทางการติดตาม XRInputSubsystem เป็นไม่จำกัด unbounded บ่งชี้ว่า XRInputSubsystem ติดตาม InputDevice ทั้งหมดโดยสัมพันธ์กับจุดยึดในโลก ซึ่งอาจเปลี่ยนแปลงได้

โหมดการผสมสภาพแวดล้อม

ไม่มี

โหมดการผสมสภาพแวดล้อม

ฟีเจอร์นี้ช่วยให้คุณตั้งค่าโหมดการผสมผสานสภาพแวดล้อม XR ซึ่งควบคุมวิธีที่ภาพเสมือนจริงผสมผสานกับสภาพแวดล้อมในชีวิตจริงเมื่อเปิดใช้การส่งผ่าน

อินพุตและการโต้ตอบ

Android XR รองรับอินพุตแบบหลายรูปแบบ

นอกจากการติดตามมือและตาแล้ว ระบบยังรองรับอุปกรณ์ต่อพ่วง เช่น ตัวควบคุม 6DoF, เมาส์ และแป้นพิมพ์จริง ซึ่งหมายความว่าแอปสำหรับ Android XR ควรรองรับการโต้ตอบด้วยมือ และเราไม่สามารถคาดเดาได้ว่าอุปกรณ์ทุกเครื่องจะมีตัวควบคุม

โปรไฟล์การโต้ตอบ

Unity ใช้โปรไฟล์การโต้ตอบเพื่อจัดการวิธีที่แอปพลิเคชัน XR สื่อสารกับอุปกรณ์และแพลตฟอร์ม XR ต่างๆ โปรไฟล์เหล่านี้จะกำหนดอินพุตและเอาต์พุตที่คาดไว้สำหรับการกำหนดค่าฮาร์ดแวร์ต่างๆ เพื่อให้มั่นใจว่ามีความเข้ากันได้และฟังก์ชันการทำงานที่สอดคล้องกันในแพลตฟอร์มต่างๆ การเปิดใช้โปรไฟล์การโต้ตอบช่วยให้มั่นใจได้ว่าแอปพลิเคชัน XR จะทำงานได้อย่างถูกต้องกับอุปกรณ์ต่างๆ คงการแมปอินพุตที่สอดคล้องกัน และเข้าถึงฟีเจอร์ XR ที่เฉพาะเจาะจง วิธีตั้งค่าโปรไฟล์การโต้ตอบ

  1. เปิดหน้าต่างการตั้งค่าโปรเจ็กต์ (เมนู: แก้ไข > การตั้งค่าโปรเจ็กต์)
  2. คลิกการจัดการปลั๊กอิน XR เพื่อขยายส่วนปลั๊กอิน (หากจำเป็น)
  3. เลือก OpenXR ในรายการปลั๊กอิน XR
  4. ในส่วนโปรไฟล์การโต้ตอบ ให้เลือกปุ่ม + เพื่อเพิ่มโปรไฟล์
  5. เลือกโปรไฟล์ที่จะเพิ่มจากรายการ

การโต้ตอบด้วยมือ

การโต้ตอบด้วยมือ (XR_EXT_hand_interaction) มีให้ในปลั๊กอิน OpenXR และคุณสามารถแสดง เลย์เอาต์อุปกรณ์ในระบบอินพุตของ Unity ได้โดยเปิดใช้โปรไฟล์การโต้ตอบด้วยมือ ใช้โปรไฟล์การโต้ตอบนี้สำหรับการป้อนข้อมูลด้วยมือที่รองรับท่าทางการทำงาน 4 ท่าที่ OpenXR กำหนดไว้ ได้แก่ "บีบ" "จิ้ม" "เล็ง" และ "จับ" หากต้องการฟังก์ชันการทำงานเพิ่มเติมสำหรับการโต้ตอบด้วยมือหรือการติดตามมือ โปรดดูXR Hands ในหน้านี้

การโต้ตอบด้วยการจ้องมอง

การโต้ตอบด้วยการมอง (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 Hands ช่วยให้คุณเข้าถึงข้อมูลการติดตามมือ (XR_EXT_hand_tracking และ XR_FB_hand_tracking_aim) และมี Wrapper สำหรับแปลงข้อมูลข้อต่อของมือจากการติดตามมือเป็นท่าทางป้อนข้อมูล หากต้องการใช้ฟีเจอร์ที่แพ็กเกจ XR Hands มีให้ ให้เปิดใช้ฟีเจอร์ Hand Tracking Subsystem และ Meta Hand Tracking Aim OpenXR

ตัวอย่างแสดงวิธีเปิดใช้การติดตามมือ

แพ็กเกจมือ XR จะมีประโยชน์ในกรณีที่คุณต้องการข้อมูลท่าทางมือหรือข้อมือที่ละเอียดยิ่งขึ้น หรือเมื่อต้องทำงานกับท่าทางสัมผัสที่กำหนดเอง

โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบของ Unity สำหรับการตั้งค่า XR Hands ในโปรเจ็กต์

เลือกวิธีแสดงผลมือ

Android XR รองรับการแสดงผลมือ 2 วิธี ได้แก่ เมชมือและโปรแกรมแสดงผลสำเร็จรูป

ตาข่ายมือ

แพ็กเกจ Android XR Unity มีฟีเจอร์ 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 โดยรองรับงานการโต้ตอบต่างๆ รวมถึงการตอบสนองแบบสัมผัส การตอบสนองด้วยภาพ และการเคลื่อนที่