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

คู่มือนี้จะแสดงภาพรวมของการพัฒนาด้วย Unity สำหรับ Android XR Android XR ทำงานร่วมกับเครื่องมือและฟีเจอร์ที่คุ้นเคยซึ่งคุณคาดหวังจาก Unity และเนื่องจากการรองรับ Android XR ของ Unity สร้างขึ้นบน OpenXR ฟีเจอร์หลายอย่างที่อธิบายไว้ในภาพรวมของ OpenXR จึงรองรับใน Unity ด้วย

ทำตามคำแนะนำนี้เพื่อดูข้อมูลเกี่ยวกับสิ่งต่อไปนี้

  • การรองรับ Android XR ใน Unity
    • ข้อมูลพื้นฐานเกี่ยวกับ 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 Plugin เพื่อช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว เมื่อสร้างแอปด้วย Unity สำหรับ Android XR เราขอแนะนำให้ใช้ Universal Render Pipeline (URP) เป็น Render Pipeline และ Vulkan เป็น Graphics API ฟีเจอร์เหล่านี้ช่วยให้คุณ ใช้ประโยชน์จากฟีเจอร์กราฟิกบางอย่างของ Unity ซึ่ง รองรับเฉพาะ Vulkan ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดค่าการตั้งค่าเหล่านี้ได้ในคู่มือการตั้งค่าโปรเจ็กต์

พื้นฐาน XR ของ Unity

หากเพิ่งเริ่มใช้ Unity หรือพัฒนา XR โปรดดูคู่มือ XR ของ Unity เพื่อทำความเข้าใจแนวคิดและเวิร์กโฟลว์ XR ขั้นพื้นฐาน XR Manual มีข้อมูลเกี่ยวกับสิ่งต่อไปนี้

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

การติดตามอุปกรณ์

ไม่มี

ไม่มี

การติดตามอุปกรณ์ใช้เพื่อติดตามตำแหน่งและการหมุนของอุปกรณ์ในพื้นที่จริง GameObject ของ XR Origin จะจัดการการติดตามอุปกรณ์และแปลงวัตถุที่ติดตามได้เป็นระบบพิกัดของ Unity โดยอัตโนมัติโดยใช้คอมโพเนนต์ XROrigin และลำดับชั้น GameObject ที่มีกล้องและ TrackedPoseDriver

กล้อง

Android XR: กล้อง AR

ไม่มี

ฟีเจอร์นี้รองรับการประมาณแสงและการส่งผ่านแบบเต็มหน้าจอ

การตรวจจับเครื่องบิน

Android XR: ระนาบ AR

Android XR (ส่วนขยาย): ระนาบ

ฟีเจอร์ทั้ง 2 นี้เหมือนกันทุกประการ คุณจะใช้ฟีเจอร์ใดฟีเจอร์หนึ่งก็ได้ Android XR (ส่วนขยาย): มี Plane เพื่อให้นักพัฒนาซอฟต์แวร์ใช้ฟีเจอร์การติดตามออบเจ็กต์และ Anchor แบบถาวรของ Android XR (ส่วนขยาย) ได้โดยไม่ต้องขึ้นอยู่กับแพ็กเกจ Unity OpenXR Android XR ในอนาคต เราจะนำ Android XR (ส่วนขยาย): ระนาบออกเพื่อเปลี่ยนไปใช้ Android XR: Anchor AR

การติดตามออบเจ็กต์

ไม่มี

Android XR (ส่วนขยาย): การติดตามออบเจ็กต์

ฟีเจอร์นี้รองรับการตรวจจับและติดตามออบเจ็กต์ในสภาพแวดล้อมจริง ซึ่งใช้ร่วมกับคลังออบเจ็กต์อ้างอิง

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

Android XR: ใบหน้า AR

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

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

  • XR_ANDROID_face_tracking

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

การแคสต์รังสี

Android XR: AR Raycast

  • สมอเครื่องบิน
  • Depth Anchor

ไม่มี

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

แองเคอร์

Android XR: Anchor AR

Android XR (ส่วนขยาย): Anchor

  • การตั้งค่าฟีเจอร์รวมถึงความคงทน

ฟีเจอร์ทั้ง 2 รายการรองรับทั้ง Spatial Anchor และ Plane Anchor โดยคุณจะใช้ฟีเจอร์ใดฟีเจอร์หนึ่งก็ได้ สำหรับ Anchor แบบถาวร ให้ใช้ Android XR (ส่วนขยาย): Anchor ในอนาคต เราจะนำ Android XR (ส่วนขยาย): Anchor ออก และฟีเจอร์ Anchor ทั้งหมดจะอยู่ใน Android XR: AR Anchor

การบดบัง

Android XR: การบดบัง AR

  • ความลึกของสภาพแวดล้อม

ไม่มี

การบดบังช่วยให้เนื้อหาความเป็นจริงผสมในแอปของคุณปรากฏเป็นแบบซ่อนหรือถูกบดบังบางส่วนอยู่ด้านหลังวัตถุในสภาพแวดล้อมจริง

เมตริกประสิทธิภาพ

เมตริกประสิทธิภาพของ Android XR

ไม่มี

ใช้ฟีเจอร์นี้เพื่อเข้าถึงเมตริกประสิทธิภาพสำหรับอุปกรณ์ Android XR

เลเยอร์การคอมโพสิต

รองรับเลเยอร์การเรียบเรียง (ต้องใช้ปลั๊กอิน OpenXR และเลเยอร์การเรียบเรียง XR)

Android XR: เลเยอร์การจัดองค์ประกอบแบบส่งผ่าน

  • XR_ANDROID_composition_layer_passthrough_mesh

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

การแสดงผลแบบโฟเวต

การแสดงผลแบบโฟเวต (ต้องใช้ปลั๊กอิน OpenXR)

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

โฟเวชัน (เดิม)

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

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

ไม่มี

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

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

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

ไม่มี

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

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

การป้อนข้อมูลและการโต้ตอบ

Android XR รองรับการป้อนข้อมูลแบบธรรมชาติหลายรูปแบบ

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

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

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

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

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

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

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

การโต้ตอบด้วยการมอง (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 ท่าฝ่ามือไม่ได้มีไว้เพื่อเป็นทางเลือกแทนส่วนขยายหรือแพ็กเกจที่ ติดตามมือสำหรับ Use Case ที่ซับซ้อนกว่า แต่สามารถใช้เพื่อ วางเนื้อหาภาพเฉพาะแอป เช่น ภาพอวตาร ท่าฝ่ามือประกอบด้วย ทั้งตำแหน่งและทิศทางของฝ่ามือ

มือ XR

แพ็กเกจ XR Hands ช่วยให้คุณเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของมือได้โดยใช้ XR_EXT_hand_tracking และ XR_FB_hand_tracking_aim รวมถึงมี Wrapper เพื่อแปลง ข้อมูลข้อต่อของมือจากการติดตามการเคลื่อนไหวของมือเป็นท่าทางอินพุต หากต้องการใช้ฟีเจอร์ที่แพ็กเกจ XR Hands มีให้ ให้เปิดใช้ฟีเจอร์ระบบย่อยการติดตามมือและการติดตามมือของ Meta OpenXR สำหรับการเล็ง

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

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

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

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

Android XR รองรับการแสดงผลมือ 2 วิธี ได้แก่ ตาข่ายมือและ เครื่องมือแสดงภาพที่กำหนดไว้ล่วงหน้า

โครงข่ายมือ

แพ็กเกจ Android XR Unity มีฟีเจอร์ Hand Mesh ที่ให้ สิทธิ์เข้าถึง XR_ANDROID_hand_mesh extension ฟีเจอร์ Hand Mesh จะแสดง Mesh สำหรับมือของผู้ใช้ Hand Mesh มีจุดยอดของ สามเหลี่ยมที่แสดงถึงรูปทรงของมือ ฟีเจอร์นี้มีไว้เพื่อใช้ในการสร้างตาข่ายที่ปรับเปลี่ยนในแบบของคุณซึ่งแสดงถึงรูปทรงเรขาคณิตจริงของมือผู้ใช้เพื่อการแสดงภาพ

Prefab ของมือ XR

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

ท่าทางสัมผัสของระบบ

Android XR มีท่าทางสัมผัสของระบบเพื่อเปิดเมนูให้ผู้ใช้กลับไป เปิด Launcher หรือดูภาพรวมของแอปที่กำลังทำงานอยู่ ผู้ใช้สามารถเปิดใช้งานเมนูระบบนี้ได้โดยใช้การบีบนิ้วด้วยมือข้างที่ถนัด

เมื่อผู้ใช้โต้ตอบกับเมนูการนำทางของระบบ แอปพลิเคชัน จะตอบสนองต่อเหตุการณ์การติดตามศีรษะเท่านั้น แพ็กเกจ XR Hands สามารถตรวจจับได้เมื่อผู้ใช้ดำเนินการบางอย่าง เช่น โต้ตอบกับเมนูการนำทางของระบบนี้ การตรวจสอบ AimFlags, SystemGesture และ DominantHand จะช่วยให้คุณทราบ เมื่อระบบดำเนินการนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ AimFlags ได้ที่เอกสารประกอบ Enum MetaAimFlags ของ Unity

ชุดเครื่องมือการโต้ตอบ XR

แพ็กเกจ XR Interaction Toolkit เป็นระบบการโต้ตอบระดับสูงที่อิงตามคอมโพเนนต์สำหรับการสร้างประสบการณ์ VR และ AR โดยจะ มีเฟรมเวิร์กที่ทำให้การโต้ตอบ 3 มิติและ UI พร้อมใช้งานจากเหตุการณ์อินพุตของ Unity โดยรองรับงานการโต้ตอบต่างๆ รวมถึงการตอบสนองแบบสัมผัส ภาพ และการเคลื่อนที่


OpenXR™ และโลโก้ OpenXR เป็นเครื่องหมายการค้าของ The Khronos Group Inc. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร