Súng thật như bộ điều khiển: Cách mang bất cứ thứ gì vào VR

I Khănm Christopher O hèHagan, một kỹ sư phần mềm tại @KainosSoftware và tôi đang làm việc trong bộ phận Đổi mới ứng dụng. Tập trung vào các công nghệ nhập vai. Blog này là về cách gần đây chúng tôi đã biến một khẩu súng trường gần như hoàn toàn hoạt động thành bộ điều khiển Thực tế ảo và cách chúng tôi khắc phục các vấn đề đi kèm với nó.

Gần đây chúng tôi đã được tiếp cận bởi một khách hàng Canada đang tìm kiếm sự giúp đỡ để xây dựng một game bắn súng thực tế như một điểm thu hút cho arcade của họ. Đây là một phần của xu hướng đang phát triển mà chúng tôi đã quan sát thấy nơi công nghệ nhập vai như VR đang được sử dụng cho các doanh nghiệp giải trí tại địa điểm như phòng thoát hiểm và tàu lượn siêu tốc. Mặc dù các thiết bị và thiết lập có thể đắt tiền nhưng nó khả thi do lượng chân cao và môi trường mới lạ được cung cấp bởi các doanh nghiệp này. Một ví dụ tuyệt vời về giải trí tại chỗ là paintball ảo mà các công ty, như V The Void đã thành công trong việc này.

Thử thách chính của chúng tôi đối với game bắn súng nhập vai mà chúng tôi đã giúp đỡ là chế tạo và sử dụng một khẩu súng hỏa lực thực tế hoặc ít nhất là thứ gì đó trông giống như một.

Bắt bộ điều khiển

Ban đầu chúng tôi tin rằng việc tìm nguồn cung ứng một bộ điều khiển sẽ khó khăn. Chúng tôi đã liên hệ với một nhà cung cấp súng không khí mềm địa phương, Gear of War. Yêu cầu của chúng tôi là:

  • Một khẩu súng trường mềm không khí trông giống, cảm thấy và có trọng lượng như một khẩu súng trường thực sự
  • Một khẩu súng khi bắn sẽ tạo ra độ giật thực tế
  • Một kích hoạt và an toàn đã được nối dây để chúng tôi có thể sử dụng chúng cho các đầu vào mô phỏng của chúng tôi

Chúng tôi nghĩ rằng điều này sẽ được hỏi rất nhiều nhưng thật ngạc nhiên bởi thực tế là điều này có vẻ bình thường với họ. Họ đã thực hiện rất nhiều đạo cụ cho TV và Phim nên đã nhận được yêu cầu kỳ lạ. Sau đó, chúng tôi đã sử dụng trình theo dõi Vive được gắn để theo dõi khẩu súng trong VR.

Thiết lập Bộ điều khiển

Đây là nơi chúng tôi trải nghiệm vấn đề chính của chúng tôi, rung động: Vấn đề được gây ra bởi độ giật thực tế của khẩu súng của chúng tôi. Do Vive Tracker sử dụng IMU (đơn vị chuyển động quán tính) để theo dõi ở tần số cao và hệ thống ngọn hải đăng Vive để theo dõi ở tần số tương đối thấp hơn và điều chỉnh độ lệch. IMU hoạt động bằng cách đo gia tốc ở mỗi trục sau đó tính toán độ dịch chuyển từ phép đo đó. Khi IMU bị rung mạnh, chẳng hạn như khi được gắn vào vũ khí bắn thực tế, chúng không thể theo dõi chính xác. Đây là một vấn đề.

Vì chúng tôi không phải là chuyên gia về rung động, chúng tôi đã thực hiện một số nỗ lực để giải quyết vấn đề nhưng đã không có nhiều tiến bộ. Sau đó chúng tôi quyết định thực hiện một bài đăng reddit để r / Vive. Phản hồi của cộng đồng rất hữu ích, sửa một số nội dung đơn giản mà chúng tôi đã bỏ lỡ, chẳng hạn như trình theo dõi quá xa đường ray. Thật ngạc nhiên, HTC đã liên lạc với chúng tôi về dự án thể hiện sự quan tâm đến những gì chúng tôi đang cố gắng thực hiện. Họ đã có phiên bản beta của phần mềm Vive Tracker có thể trợ giúp, bộ lọc thông thấp cho IMU mà họ đã cung cấp cho chúng tôi.

Biểu đồ đầu vào bình thường so với đầu vào sau khi sử dụng bộ lọc thông thấp

Bộ lọc thông thấp có thể được cấu hình thông qua giao diện USB HID. Chúng tôi đã có thể gửi báo cáo ‘0xB3, gửi thông tin cơ bản về thiết bị đang được sử dụng cũng như cấu hình thông thấp, từ MacBook đến Trình theo dõi với các cài đặt phù hợp để làm giảm độ rung. Bước tiếp theo là gửi báo cáo tính năng, cho phép chúng tôi truyền đạt các thay đổi trong cài đặt cũng như điều khiển các thiết bị HID, đến Trình theo dõi từ một quả mâm xôi vì chúng tôi cần thứ gì đó có thể nằm trong hộp đạn của súng để người dùng không thể xem hệ thống dây điện.

Bộ lọc thông thấp

Đây là các bước để thiết lập Raspberry Pi cho loại dự án này

  • Cài đặt raspbian trên pi mâm xôi
  • Cập nhật phiên bản pi của ‘Node.js,
  • Cài đặt thư viện ‘node-hid vào dự án của bạn, để có hướng dẫn cụ thể để thực hiện điều đó trên pi, xem tại đây
  • Thêm một tệp trong udev có tên là `60-HTC-Vive-perms.rules` với dòng này trong đó
Kerner

Một vấn đề mà bạn có thể có là giá trị w Index sai đang được sử dụng bởi nút-hid, trong trường hợp này, w Index được sử dụng để chỉ định giao diện hoặc nơi báo cáo được gửi. Ở đây, một cái gì đó để giúp bạn hiểu về các yêu cầu USB. Node-hid, hiện không cho phép bạn chỉ định giao diện. May mắn thay khi tôi nhìn lại ‘show-device.js, đi kèm với thư viện‘ nút-hidid và xuất ra tất cả các thiết bị HID được kết nối, nó có các đường dẫn khác nhau cho mỗi giao diện.

Sử dụng show-device.js, đi kèm với thư viện nút ẩn. Bạn có thể tìm thấy đường dẫn nào sẽ sử dụng trong mã trong trường hợp nó xuất hiện khác

Nếu bạn có bất kỳ vấn đề nào khác với tập lệnh, ‘usbmon, đi kèm với Raspbian và cho phép bạn xem tất cả các yêu cầu usb đang được thực hiện. Tại đây, một liên kết hữu ích để giúp bạn giải mã các yêu cầu đó. (Bắt đầu từ trang 15)

Phần kết luận

Sử dụng súng làm bộ điều khiển VR không có nghĩa là dễ dàng. Các rung động của tiếng súng đủ mạnh để phá vỡ khả năng IMU để tự theo dõi chính xác. Sử dụng tính năng bộ lọc thông thấp Tracker Tracker và một quả mâm xôi trên tàu, chúng tôi có thể khắc phục vấn đề này mà không ảnh hưởng đến việc theo dõi hoặc lực mà súng rung.

Cảm ơn vì đã đọc
@ cohagan 154