Hướng dẫn này cung cấp thông tin tổng quan về việc phát triển bằng Unity cho Android XR. Android XR hoạt động với các công cụ và tính năng quen thuộc mà bạn mong đợi ở Unity. Vì tính năng hỗ trợ Android XR của Unity được xây dựng dựa trên OpenXR, nên nhiều tính năng được mô tả trong bài viết Tổng quan về OpenXR cũng được hỗ trợ trong Unity.
Hãy làm theo hướng dẫn này để tìm hiểu về:
- Unity hỗ trợ Android XR
- Kiến thức cơ bản về Unity XR
- Phát triển và xuất bản ứng dụng cho Android XR
- Các gói Unity cho Android XR
- Unity OpenXR: Gói Android XR
- Tiện ích Android XR cho Unity
- Những điểm cần cân nhắc về tính năng và khả năng tương thích
- Đầu vào và tương tác
Hỗ trợ Unity cho Android XR
Khi tạo ứng dụng Unity cho Android XR, bạn có thể tận dụng các công cụ và chức năng thực tế hỗn hợp trong các phiên bản Unity 6 mới nhất. Trong đó có các mẫu thực tế hỗn hợp sử dụng XR Interaction Toolkit, AR Foundation và OpenXR Plugin để giúp bạn nhanh chóng bắt đầu. Khi tạo ứng dụng bằng Unity cho Android XR, bạn nên dùng Universal Render Pipeline (URP) làm quy trình kết xuất và Vulkan làm API Đồ hoạ. Những tính năng này cho phép bạn tận dụng một số tính năng đồ hoạ của Unity. Các tính năng này chỉ được hỗ trợ bằng Vulkan. Hãy xem hướng dẫn thiết lập dự án để biết thêm thông tin về cách định cấu hình các chế độ cài đặt này.
Unity XR Basics
Nếu mới làm quen với Unity hoặc phát triển XR, bạn có thể tham khảo Hướng dẫn về XR của Unity để hiểu các khái niệm và quy trình cơ bản về XR. XR Manual (Hướng dẫn về XR) chứa thông tin về:
- Trình bổ trợ nhà cung cấp XR, bao gồm Unity OpenXR: Android XR và Tiện ích Android XR cho Unity
- Gói hỗ trợ XR để thêm các tính năng bổ sung ở cấp ứng dụng
- Hướng dẫn về cấu trúc XR mô tả ngăn xếp công nghệ Unity XR và các hệ thống con XR
- Thiết lập dự án XR
- Tạo và chạy ứng dụng XR
- Hướng dẫn về đồ hoạ XR, bao gồm Quy trình kết xuất phổ quát, kết xuất lập thể, kết xuất tập trung, các vùng kết xuất nhiều khung hình và thời gian khung hình thực tế ảo
- Hướng dẫn về âm thanh XR, bao gồm cả việc hỗ trợ bộ tạo hiệu ứng âm thanh không gian
Phát triển và xuất bản ứng dụng cho Android
Unity cung cấp tài liệu chuyên sâu về việc phát triển, xây dựng và xuất bản cho Android, bao gồm các chủ đề như Quyền Android trong Unity, Chế độ cài đặt bản dựng Android, Tạo ứng dụng cho Android và Phân phối cho Google Play.
Các gói Unity cho Android XR
Có 2 gói hỗ trợ việc tạo ứng dụng Unity cho Android XR. Cả hai gói này đều là trình bổ trợ nhà cung cấp XR, có thể được bật thông qua gói Quản lý trình bổ trợ XR của Unity. Trình quản lý trình bổ trợ XR sẽ thêm phần Cài đặt dự án để quản lý và hỗ trợ việc tải, khởi tạo, cài đặt và hỗ trợ bản dựng cho các trình bổ trợ XR. Để cho phép ứng dụng của bạn thực thi các tính năng OpenXR trong thời gian chạy, dự án phải bật các tính năng này thông qua trình quản lý trình bổ trợ.
Hình ảnh này cho thấy ví dụ về vị trí bạn có thể bật các nhóm tính năng này thông qua trình chỉnh sửa của Unity.
Unity OpenXR Android XR
Gói Unity OpenXR Android XR là một trình bổ trợ XR để thêm tính năng hỗ trợ Android XR vào Unity. Trình bổ trợ XR này cung cấp phần lớn khả năng hỗ trợ Android XR cho Unity, đồng thời cho phép hỗ trợ thiết bị Android XR cho các dự án AR Foundation. AR Foundation được thiết kế cho những nhà phát triển muốn tạo ra trải nghiệm thực tế tăng cường hoặc thực tế hỗn hợp. Thư viện này cung cấp giao diện cho các tính năng thực tế tăng cường, nhưng không tự triển khai bất kỳ tính năng nào. Gói Unity OpenXR Android XR cung cấp phương thức triển khai. Để bắt đầu sử dụng gói này, hãy xem hướng dẫn sử dụng gói. Hướng dẫn này có phần Hướng dẫn bắt đầu.
Tiện ích Android XR cho Unity
Tiện ích Android XR cho Unity bổ sung cho gói Unity OpenXR Android XR và bao gồm các tính năng bổ sung giúp bạn tạo ra trải nghiệm sống động. Bạn có thể sử dụng gói này một mình hoặc cùng với gói Unity OpenXR Android XR.
Để bắt đầu sử dụng gói này, hãy làm theo hướng dẫn thiết lập dự án hoặc hướng dẫn bắt đầu nhanh để nhập Tiện ích Android XR cho Unity.
Những điểm cần cân nhắc về tính năng và khả năng tương thích
Bảng sau đây mô tả các tính năng mà gói Unity OpenXR: Android XR và gói Android XR Extensions for Unity hỗ trợ. Bạn có thể dùng bảng này để xác định gói chứa các tính năng bạn cần và mọi điểm cần cân nhắc về khả năng tương thích.
Tính năng |
Unity OpenXR: Chuỗi tính năng Android XR |
Chuỗi tính năng Android XR Extensions for Unity |
Trường hợp sử dụng và hành vi dự kiến |
---|---|---|---|
Android XR: Phiên thực tế tăng cường
|
Android XR (Tiện ích): Quản lý phiên
|
Để sử dụng các tính năng của một trong hai gói này, bạn phải bật tính năng Phiên thực tế tăng cường cho gói đó. Bạn có thể bật cả hai nhóm tính năng cùng lúc; các tính năng riêng lẻ sẽ xử lý xung đột cho phù hợp. |
|
Không áp dụng |
Không áp dụng |
Tính năng theo dõi thiết bị được dùng để theo dõi vị trí và hướng xoay của thiết bị trong không gian thực. GameObject XR Origin tự động xử lý việc theo dõi thiết bị và chuyển đổi các đối tượng có thể theo dõi thành hệ toạ độ của Unity bằng cách sử dụng thành phần XROrigin và hệ thống phân cấp GameObject với Camera và TrackedPoseDriver. |
|
Android XR: Camera thực tế tăng cường |
Không áp dụng |
Tính năng này hỗ trợ ước tính ánh sáng và truyền hình ảnh toàn màn hình. |
|
Android XR: AR Plane |
Android XR (Tiện ích): Mặt phẳng |
Hai tính năng này giống hệt nhau; hãy sử dụng một trong hai. Android XR (Tiện ích): Plane được đưa vào để nhà phát triển có thể sử dụng các tính năng Android XR (Tiện ích): Theo dõi đối tượng và neo cố định mà không cần phải có phần phụ thuộc vào gói Unity OpenXR Android XR. Trong tương lai, Android XR (Tiện ích): Plane sẽ bị xoá để chuyển sang Android XR: AR Anchor. |
|
Không áp dụng |
Android XR (Tiện ích): Theo dõi đối tượng |
Tính năng này hỗ trợ phát hiện và theo dõi các đối tượng trong môi trường thực tế, được dùng kết hợp với một thư viện đối tượng tham chiếu. |
|
Android XR: Khuôn mặt thực tế tăng cường
|
Android XR: Theo dõi khuôn mặt
|
Tính năng hỗ trợ mắt của hình đại diện được cung cấp thông qua tính năng Khuôn mặt thực tế tăng cường của Android XR. Truy cập vào biểu cảm khuôn mặt của người dùng thông qua tính năng Theo dõi khuôn mặt của Android XR. Bạn có thể sử dụng cả hai tính năng này cùng lúc. |
|
Android XR: AR Raycast
|
Không áp dụng |
Tính năng này cho phép bạn truyền một tia và tính toán giao điểm giữa tia đó và các đối tượng có thể theo dõi trên mặt phẳng hoặc đối tượng có thể theo dõi độ sâu được phát hiện trong môi trường thực. |
|
Android XR: AR Anchor |
Android XR (Tiện ích): Anchor
|
Cả hai tính năng đều hỗ trợ mỏ neo không gian và mỏ neo mặt phẳng; hãy sử dụng một trong hai tính năng này. Đối với các điểm neo cố định, hãy sử dụng Android XR (Tiện ích): Anchor. Trong tương lai, Android XR (Tiện ích): Anchor sẽ bị xoá và tất cả các tính năng Anchor sẽ nằm trong Android XR: AR Anchor. |
|
Android XR: Tính năng che khuất thực tế tăng cường
|
Không áp dụng |
Tính năng che khuất cho phép nội dung thực tế hỗn hợp trong ứng dụng của bạn xuất hiện ở trạng thái bị ẩn hoặc bị che khuất một phần phía sau các đối tượng trong môi trường thực. |
|
Chỉ số hiệu suất |
Chỉ số hiệu suất của Android XR |
Không áp dụng |
Sử dụng tính năng này để truy cập vào các chỉ số hiệu suất cho thiết bị Android XR. |
Hỗ trợ lớp thành phần (bạn phải có Trình bổ trợ OpenXR và Lớp thành phần XR) |
Android XR: Lớp kết hợp truyền qua
|
Sử dụng Composition Layer Support (Hỗ trợ lớp thành phần) của Unity để tạo các lớp thành phần cơ bản (ví dụ: tứ giác, hình trụ, hình chiếu). Android XR: Bạn có thể dùng Passthrough Composition Layer để tạo một lớp truyền qua bằng lưới tuỳ chỉnh, đọc từ GameObject của Unity. |
|
Kết xuất tập trung (bắt buộc phải có trình bổ trợ OpenXR)
|
Lấy nét một phần (Cũ) |
Tính năng kết xuất tập trung cho phép tăng tốc độ kết xuất bằng cách giảm độ phân giải của các vùng trong tầm nhìn ngoại vi của người dùng. Tính năng kết xuất tập trung của Unity chỉ được hỗ trợ cho các ứng dụng dùng URP và Vulkan. Tính năng Foveation (Cũ) trong Android XR Extensions for Unity cũng hỗ trợ Built-in Render Pipeline và OpenGL ES. Bạn nên sử dụng tính năng kết xuất tập trung của Unity khi có thể, đồng thời lưu ý rằng cả URP và Vulkan đều được khuyến nghị khi tạo cho Android XR. |
|
Không áp dụng |
Android XR: Không gian tham chiếu không giới hạn |
Tính năng này đặt chế độ nguồn gốc theo dõi XRInputSubsystem thành Unbounded. Unbounded (Không giới hạn) cho biết XRInputSubsystem theo dõi tất cả InputDevice liên quan đến một neo thế giới có thể thay đổi. |
|
Không áp dụng |
Chế độ hoà trộn môi trường |
Tính năng này cho phép bạn đặt Chế độ hoà trộn môi trường XR, chế độ này kiểm soát cách hình ảnh ảo hoà trộn với môi trường thực khi chế độ nhìn xuyên qua được bật. |
Đầu vào và tương tác
Android XR hỗ trợ phương thức nhập tự nhiên đa phương thức.
Ngoài tính năng theo dõi tay và mắt, các thiết bị ngoại vi như bộ điều khiển 6DoF, chuột và bàn phím thực cũng được hỗ trợ. Điều này có nghĩa là các ứng dụng cho Android XR dự kiến sẽ hỗ trợ tương tác bằng tay và không thể giả định rằng tất cả các thiết bị sẽ đi kèm với bộ điều khiển.
Hồ sơ tương tác
Unity sử dụng hồ sơ tương tác để quản lý cách ứng dụng XR của bạn giao tiếp với nhiều thiết bị và nền tảng XR. Các hồ sơ này thiết lập đầu vào và đầu ra dự kiến cho nhiều cấu hình phần cứng, giúp tăng cường khả năng tương thích và chức năng nhất quán trên nhiều nền tảng. Bằng cách bật hồ sơ tương tác, bạn có thể đảm bảo rằng ứng dụng XR của mình hoạt động đúng cách với nhiều thiết bị, duy trì việc ánh xạ đầu vào nhất quán và có quyền truy cập vào các tính năng XR cụ thể. Cách thiết lập hồ sơ tương tác:
- Mở cửa sổ Project Settings (Cài đặt dự án) (trình đơn: Edit > Project Settings (Chỉnh sửa > Cài đặt dự án)).
- Nhấp vào XR Plug-in Management (Quản lý trình bổ trợ XR) để mở rộng phần trình bổ trợ (nếu cần).
- Chọn OpenXR trong danh sách các trình bổ trợ XR.
- Trong phần Interaction Profiles (Hồ sơ tương tác), hãy chọn nút + để thêm một hồ sơ.
- Chọn hồ sơ bạn muốn thêm trong danh sách.
Tương tác bằng tay
Tương tác bằng tay (XR_EXT_hand_interaction
) được cung cấp bởi Trình bổ trợ OpenXR và bạn có thể hiển thị bố cục thiết bị <HandInteraction>
trong Hệ thống đầu vào Unity bằng cách bật Hồ sơ tương tác bằng tay. Sử dụng hồ sơ tương tác này cho chế độ nhập bằng tay được hỗ trợ bởi 4 tư thế hành động do OpenXR xác định: "pinch" (chụm), "poke" (chạm), "aim" (nhắm) và "grip" (cầm). Nếu bạn cần thêm chức năng tương tác bằng tay hoặc theo dõi bàn tay, hãy tham khảo XR Hands trên trang này.
Tương tác bằng ánh mắt
Tương tác bằng ánh mắt (XR_EXT_eye_gaze_interaction
) do OpenXR Plugin cung cấp và bạn có thể sử dụng bố cục này để truy xuất dữ liệu tư thế mắt (vị trí và hướng xoay) mà tiện ích trả về. Đọc thêm về tương tác bằng ánh mắt trong hướng dẫn về thiết bị đầu vào OpenXR.
Tương tác với bộ điều khiển
Android XR hỗ trợ Hồ sơ bộ điều khiển Oculus Touch cho bộ điều khiển 6DoF. Cả hai cấu hình này đều do OpenXR Plugin cung cấp.
Tương tác bằng chuột
Hồ sơ tương tác chuột Android XR (XR_ANDROID_mouse_interaction
) do Tiện ích Android XR cho Unity cung cấp. Thư viện này cho phép bố cục thiết bị <AndroidXRMouse>
trong Unity Input System.
Tương tác bằng tư thế lòng bàn tay
Trình bổ trợ OpenXR hỗ trợ Tương tác bằng tư thế lòng bàn tay (XR_EXT_palm_pose
), giúp hiển thị bố cục <PalmPose>
trong Hệ thống đầu vào của Unity.
Tư thế lòng bàn tay không phải là một giải pháp thay thế cho các tiện ích hoặc gói thực hiện tính năng theo dõi bàn tay cho các trường hợp sử dụng phức tạp hơn; thay vào đó, bạn có thể dùng tư thế này để đặt nội dung trực quan dành riêng cho ứng dụng, chẳng hạn như hình ảnh đại diện. Tư thế lòng bàn tay bao gồm cả vị trí và hướng của lòng bàn tay.
Bàn tay XR
Gói XR Hands cho phép bạn truy cập vào dữ liệu theo dõi cử động của tay (bằng cách sử dụng XR_EXT_hand_tracking
và XR_FB_hand_tracking_aim
) và cung cấp một trình bao bọc để chuyển đổi dữ liệu khớp bàn tay từ tính năng theo dõi cử động của tay thành tư thế đầu vào. Để sử dụng các tính năng do gói XR Hands cung cấp, hãy bật các tính năng Hand Tracking Subsystem (Hệ thống con theo dõi cử chỉ tay) và Meta Hand Tracking Aim OpenXR (Tính năng theo dõi cử chỉ tay của Meta nhắm đến OpenXR).
Gói bàn tay XR có thể hữu ích nếu bạn cần tư thế bàn tay hoặc dữ liệu khớp bàn tay chi tiết hơn hoặc khi bạn cần làm việc với các cử chỉ tuỳ chỉnh.
Để biết thêm thông tin chi tiết, hãy xem tài liệu của Unity về cách thiết lập XR Hands trong dự án của bạn
Chọn một cách để kết xuất bàn tay
Android XR hỗ trợ 2 cách kết xuất bàn tay: một lưới bàn tay và một trình trực quan hoá prefab.
Lưới bàn tay
Gói Android XR Unity có chứa tính năng Lưới bàn tay, giúp bạn truy cập vào XR_ANDROID_hand_mesh extension
. Tính năng Lưới bàn tay cung cấp các lưới cho bàn tay của người dùng. Lưới bàn tay chứa các đỉnh của tam giác biểu thị hình học của một bàn tay. Tính năng này được thiết kế để cung cấp một lưới được cá nhân hoá, thể hiện hình học thực tế của bàn tay người dùng để trực quan hoá.
Prefab XR Hands
Gói XR Hands chứa một mẫu có tên là Hands visualizer (Trình trực quan hoá bàn tay). Mẫu này chứa bàn tay trái và phải được trang bị đầy đủ để hiển thị hình ảnh phù hợp với ngữ cảnh về bàn tay của người dùng.
Cử chỉ hệ thống
Android XR có một cử chỉ hệ thống để mở trình đơn cho người dùng quay lại, mở trình chạy hoặc xem tổng quan về các ứng dụng đang chạy. Người dùng có thể kích hoạt trình đơn hệ thống này bằng cách dùng ngón tay cái và ngón tay trỏ của bàn tay thuận để chụm lại.
Khi người dùng tương tác với trình đơn điều hướng hệ thống, ứng dụng sẽ chỉ phản hồi các sự kiện theo dõi đầu. Gói XR Hands có thể phát hiện khi người dùng thực hiện các hành động cụ thể, chẳng hạn như tương tác với trình đơn điều hướng hệ thống này. Việc kiểm tra AimFlags
, SystemGesture
và DominantHand
cho phép bạn biết thời điểm hệ thống thực hiện thao tác này. Để biết thêm thông tin về AimFlags
, hãy tham khảo tài liệu Enum MetaAimFlags của Unity.
XR Interaction Toolkit
Gói XR Interaction Toolkit là một hệ thống tương tác cấp cao, dựa trên thành phần để tạo trải nghiệm thực tế ảo và thực tế tăng cường. Thư viện này cung cấp một khung cho phép các hoạt động tương tác 3D và giao diện người dùng có sẵn từ các sự kiện đầu vào của Unity. Thư viện này hỗ trợ các tác vụ tương tác, bao gồm phản hồi xúc giác, phản hồi trực quan và chuyển động.
OpenXR™ và biểu trưng OpenXR là các nhãn hiệu thuộc sở hữu của The Khronos Group Inc. và được đăng ký làm nhãn hiệu ở Trung Quốc, Liên minh Châu Âu, Nhật Bản và Vương quốc Anh.