Hướng dẫn tạo chuyển động cho nhân vật ảo (Avatar VR) trong Unity

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).

Tạo chuyển động cho Avatar VR trong Unity
Kết quả nhân vật Avatar VR có thể điểu khiển

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

Tư vấn - Báo giá
Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
Mọi thông tin tư vấn và báo giá đều miễn phí.

    「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
    Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
    Tư vấn - Báo giá
    Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
    Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
    Mọi thông tin tư vấn và báo giá đều miễn phí.

      「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
      Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
      liên hệ