Chào các bạn, mình là Thuận hiện đang làm việc trong team XR (VR/AR/MR) tại công ty OneTech Asia. Trong chủ đề lần này, mình sẽ chia sẻ cho các bạn về : “Hướng dẫn tạo chuyển động cho nhân vật đại diện (Avatar VR) trong Unity”. Cụ thể mình sẽ hướng dẫn cách tạo avatar 3D, import vào Unity, tạo Animation Rigging và export test trên ứng dụng XR (trong bài sẽ là Oculus).
Giới thiệu Avatar VR
Trải nghiệm thực tế ảo (VR) đang ngày càng trở nên phổ biến. Cùng với sự phát triển của công nghệ, việc tích hợp chuyển động cho nhân vật đại diện (avatar) trên Oculus hay các thiết bị XR bằng Unity trở thành phổ biến và rất quan trọng trong việc tạo ra những trải nghiệm chân thực và cuốn hút. Đặc biệt, chúng ta sẽ tích hợp avatar được tạo từ “Ready Player Me” (một nền tảng tạo Avatar nổi tiếng nhất hiện nay) vào dự án Unity XR để mở ra một thế giới mới của khả năng tương tác và chuyển động của nhân vật trong không gian ảo.
“Ready Player Me” là một trong những nền tảng tiên phong và lớn nhất hiện nay trong việc xây dựng các avatar 3D cho không gian ảo XR. Với những thao tác đơn giản là bạn có thể tạo cho mình những avatar theo ý. Bên cạnh đó, nền tảng này cho phép tích hợp dễ dàng vào các dự án trong Unity, nên đây sẽ là sự lựa chọn tuyệt vời.
Các bước thực hiện
Để xây dựng avatar và tương tác với không gian ảo thì chúng ta sẽ thực hiện lần lượt các bước như sau:
Tạo avatar
- Bước 1: Truy cập vào trang web Ready Player Me : https://readyplayer.me/ . Nếu bạn chưa có tài khoản hãy tạo tài khoản và chờ xác nhận, còn nếu đã có thì tiếp tục bước tiếp theo.
Giao diện Ready Player Me
- Bước 2: Ở mục My Avatar ấn vào Create New Avatar. Sau khi thiết kế avatar (kiểu tóc, trang phục, màu da,…) xong ấn Next
Giao diện thiết kế avatar trên Ready Player Me
- Bước 3: Sau khi hoàn thành trở về trang My Avatars và click vào Copy .glb URL
Copy link avatar
Import avatar vào Unity
Sau khi bạn đã có được một avatar như ý thì sẽ đưa vào Unity. Để có thể load avatar vừa tạo vào Unity thì cần download package hỗ trợ import : https://github.com/readyplayerme/rpm-unity-sdk-core
Sau đó trên Unity ấn vào Window->Package Manager->Add package from git URL->Add
Import package
Cuối cùng bạn sẽ nhập đường link URL của avatar (ở bước 3) vào và ấn Load Avatar
Load Avatar vào Unity
Thiết lập Oculus Link để chạy trên Unity Play Mode
Đầu tiên chúng ta cần chuẩn bị:
+ Dowload Oculus app (Quest) trên PC: https://www.meta.com/quest/setup/
+ Sau khi download xong mở app Quest lên
+ Kết nối USB (3.0 port)
+ Trên Oculus ấn vào Enable Oculus link : Mở Menu Setting trên Oculus -> Chọn Oculus Link
Sau đó trên Unity download package Oculus XR Plugin
Dowload package Oculus XR Plugin
Tiếp theo ấn vào Enable Preview Package trong Edit -> Project Setting ->Package Manager
Enbale Preview Package
Cuối cùng để đảm bảo dự án Unity được thiết lập để sử dụng Oculus cho môi trường thì cần vào Edit->Project Setting->XR Plug-in Management chọn enable Oculus.
Thiết lập môi trường Oculus cho Unity
Tạo chuyển động cho avatar
Để có thể làm diễn hoạt cho avatar và tương tác với avatar thông qua controller của Oculus thì chúng ta cần phải download 2 packages sau : Animation Rigging (diễn hoạt phần xương) và XR Interaction Toolkit( tương tác trên controller Oculus)
Hai gói packages hỗ trợ
Tiếp theo chúng ta sẽ đến với phần Setting avatar để tạo diễn hoạt
+ Ngay tại gameObject avatar (avatar được load) ấn vào Add Component và add 2 thành phần Rig Builder và BoneRenderer vào
Add Component
+ Thành phần Bone Renderer cho phép người dung xác định hệ thống phân cấp biến đổi sẽ được vẽ dưới dạng xương để trực quan hóa. Để thêm toàn bộ xương vào Transform của Bone Renderer, ấn giữ đối tượng Hips và giữ phím Shift ấn đồng thời vào đối tượng RightandThumb4. Sau đó kéo vào Transform của Bone Renderer
Thêm toàn bộ xương vào Transform Bone Renderer
Các vị trí xương sau khi thêm vào transform
+ Tại component Rig Builder, chúng ta sẽ thêm một lớp Rig mới (ở đây Rig được đổi thành VRRig cho dễ kiểm soát tên). Mục đích chính của thành phẩn Rig là thu thập tất cả các thành phần ràng buộc được xác định theo hệ thống phân cấp cục bộ
Thêm Rig mới
+ Tạo các Empty Object với cấu trúc như sau. Cấu trúc này sẽ ràng buộc xương, điều này đồng nghĩa khi bạn dùng Controller của Oculus để di chuyển thì hai tay avatar sẽ di chuyển , còn khi di chuyển kính Oculus thì phần đầu avatar sẽ di chuyển
Xây dựng cấu trúc phần thân trên
+ Đặt đối tượng Target của IKRightArm sẽ điều khiển đối tượng RightHand : click đồng thời vào Target và RightHand ấn Align Transform (làm tương tự cho Target IKLeftArm).
Đặt đối tượng Target điều khiển đối tượng RightHand
+ Đặt đối tượng Hint của IKRightArm sẽ điều khiển đối tượng RightForeArm: click đồng thời vào Hint và RightForeArm ấn Align Transform (làm tương tự cho Hint IKLeftArm)
Đặt đối tượng Hint điều khiển đối tượng RightForeArm
+ Thiết lập thành phần ràng buộc IKRightArm : Add Component Two Bone IK Constaint và điền các thành phần như hình bên dưới
Thiết lập thành phần ràng buộc IKRightArm
+ Thiết lập thành phần ràng buộc IKLeftArm : làm tương tự như IKRightArm
Thiết lập thành phần ràng buộc IKLeftArm
+ Thiết lập thành phần ràng buộc IKHead : Add Component Multi-Parent Constaint và điền giống hình bên dưới
Thiết lập thành phần ràng buộc IKHead
Cuối cùng, chúng ta sẽ viết scrip để mỗi tương tác trên Oculus thì avatar sẽ phản hồi chuyển động tương ứng
+ Tại đối tượng Avatar thêm script mới Avatar Controller với nội dung như sau. Đoạn script sẽ dựa trên ánh xạ dữ liệu theo dõi chuyển động trên Oculus và cập nhật vị trí avatar
Đoạn script điều khiển avatar
+ Thêm các vị trí sẽ được theo dõi như hình bên dưới
Danh sách vị trí được theo dõi
Lưu ý
Để avatar sẽ chuyển động mượt và khớp với từng cử chỉ khi điều khiển Oculus thì bạn có thể điều chỉnh vị trí (Tracking Position Offset) và hướng xoay (Tracking Rotation Offset) của avatar thông qua script Avatar Controller sao cho phù hợp nhất.
Điều chỉnh vị trí và hướng xoay của avatar
Hãy đảm bảo bạn thêm đủ các packages và làm theo đúng từng hướng dẫn để có thể kiểm soát lỗi
Kết luận
Như vậy chúng ta đã hoàn thành các bước để tạo ra một Avatar có thể chuyển động đồng bộ cho nhân vật VR của mình. Bên dưới sẽ là video demo kết quả của mình:
Hy vọng bài blog sẽ cung cấp thêm kiến thức thú vị nữa về cách thức hoạt động của thiết bị VR . Nếu có bất kỳ câu hỏi hay thắc mắc nào, đừng ngại chia sẻ. Chúc các bạn thành công trong việc tạo ra những animation tuyệt vời. Hẹn gặp lại ở chủ đề tiếp theo