Nəzarətçi kimi həqiqi silahlar: VR-də hər şeyi necə əldə etmək olar

Mən Christopher O'Hagan, @KainosSoftware-də bir proqram mühəndisi və tətbiqi innovasiya şöbəsində çalışıram. Immersiv texnologiyalara diqqət yetirin. Bu blog, yaxınlarda tamamilə işləyən bir tüfəngi necə bir virtual reallıq nəzarətçisinə çevirdik və bununla birlikdə gələn məsələləri necə həll etdiyimizdən bəhs edir.

Bu yaxınlarda bizə arkadaları üçün cazibədarlıq kimi realist bir atıcı yaratmağa kömək axtaran bir Kanadalı müştəri müraciət etdi. Bu, VR kimi immersive texnologiyaların yerdəki əyləncə müəssisələri üçün qaçma otaqları və roller kuponları kimi istifadə olunduğunu gördüyümüz artan tendensiyanın bir hissəsidir. Avadanlıq və quraşdırma bahalı olsa da, bu şirkətlərin təklif etdiyi yüksək trafik və yeni mühitlər səbəbindən sərfəlidir. Yerində əyləncənin yaxşı bir nümunəsi, The Void kimi şirkətlər tərəfindən hazırlanan virtual peyntboldur.

Kömək etdiyimiz dalğıc atıcı üçün ən böyük problemimiz əsl odlu silah yaratmaq və ya istifadə etmək ... ya da heç olmasa birinə bənzəyən və hiss edən bir şey.

Nəzarətçini alın

Əvvəlcə nəzarətçi almağın çətin olduğunu düşünürdük. Yerli bir yumşaq silah tədarükçüsü olan Gear of War-a müraciət etdik. Tələblərimiz bunlar idi:

  • Həqiqi bir tüfəng kimi görünən, hiss olunan və ağırlaşan hava yumşaq bir tüfəng
  • Silah, atəşə tutulduqda, gerçək bir geri çəkilmə yaradır
  • Simulyasiyamızın girişləri üçün istifadə edə bilmək üçün bir tetik və təhlükəsizlik simli oldu

Bunun çox şey soruşacağını düşünürdük, amma bunun onlar üçün normal görünməsinə təəccübləndik. Televiziya və filmlər üçün bir çox rekvizit hazırladıqları üçün qəribə istəkləri var idi. Daha sonra VR-də silahı izləmək üçün quraşdırılmış bir Vive izləyicisini istifadə etdik.

Nəzarətçinin quraşdırılması

Əsas problemimiz olan titrəməni burada yaşadıq: problem silahımızın geriyə çəkilməsindən qaynaqlandı. Çünki Vive Tracker yüksək tezlikdə izləmək üçün IMU-ları (Atalet Hərəkatı Bölmələri) və nisbətən daha aşağı tezliklərdə izləmək və sürüklənmənin düzəldilməsi üçün Vive Lighthouse sistemini istifadə edir. IMU-lar hər oxdakı sürətlənmə ölçülür və sonra bu ölçmədən yerdəyişmə hesablanır. IMU-lar aqressiv şəkildə titrədikdə, məs. B. Gerçək bir şəkildə atəş edən bir silahın üstünə qoyulublarsa, dəqiq izləyə bilməzlər. Bu problem idi.

Titrəmə sahəsində mütəxəssis olmadığımız üçün problemi həll etmək üçün bəzi cəhdlər göstərdik, lakin çox irəliləmədik. Daha sonra r / Vive-a reddit yazı göndərməyə qərar verdik. İcmanın cavabı faydalı oldu. İzləyicinin relsdə çox uzanması kimi nəzərdən qaçardığımız bir neçə sadə şeyi düzəltdik. Təəccübümüzə görə, HTC layihə ilə əlaqə qurdu və nə etməyə çalışdığımıza maraq göstərdi. Bizə verdikləri IMU üçün aşağı keçid filtri yaratmağa kömək edə biləcək Vive Tracker proqram təminatının beta versiyasına sahib idilər.

Aşağı keçid filtrindən istifadə etdikdən sonra normal girişə qarşı girişə dair qrafika

Aşağı keçid filtri USB-HID interfeysi vasitəsilə konfiqurasiya edilə bilər. İstifadə olunan cihaz haqqında əsas məlumatları və MacBook-dan izləyiciyə aşağı keçid konfiqurasiyasını göndərən 0xB3 hesabatlarını göndərə bildik və titrəmələri kifayət qədər azaltmaq üçün düzgün parametrlərə sahib olduq. Növbəti addım funksional hesabatı göndərdi, bu da parametrlərə dəyişiklik göndərməyimizə və Raspberry Pi-dən izləyiciyə HID cihazlarının idarə olunmasına imkan verəcək, çünki silahın kartuşuna sığacaq bir şeyə ehtiyacımız var. istifadəçi naqilləri görə bilmədi.

Aşağı keçid filtri

Bu tip layihələr üçün Raspberry Pi qurmaq üçün addımlar

  • Raspberry-ni Raspberry Pi-də quraşdırın
  • "Node.js" nin Pi versiyasını yeniləyin
  • Xüsusi təlimatlar üçün layihənizdə "node-hid" kitabxanasını quraşdırın
  • Udev-də bu sətirlə "60-HTC-Vive-perms.rules" adlı bir fayl əlavə edin
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Potensial problem, səhv indeks dəyərinin node-hid tərəfindən istifadə edilməsidir. Bu halda indeks interfeysi müəyyənləşdirmək və ya hesabatı göndərmək üçün istifadə olunur. Burada USB istəkləri ilə tanış olmaq üçün bir şey var. "Node-Hid" ilə interfeysi təyin edə bilməzsiniz. Xoşbəxtlikdən, "node-hid" kitabxanası ilə birlikdə gələn və bağlı olan bütün HID cihazlarını göstərən "show-devices.js" faylı hər interfeys üçün fərqli yollara sahib idi.

Node-gizlədilmiş kitabxana ilə birlikdə gələn show-devices.js faylını istifadə edin. Fərqli görünməsi halında kodunuzda istifadə yolunu tapa bilərsiniz

Ssenari ilə bağlı başqa problemləriniz varsa, 'usbmon' Raspbian ilə birlikdə verilir və edilən bütün USB istəklərinə baxmaq imkanı verir. Bu tələbləri deşifr etmək üçün istifadə edə biləcəyiniz faydalı bir keçiddir. (Səhifə 15-də başlayır)

Nəticə

Silahı VR nəzarətçisi kimi istifadə etmək heç də asan deyildi. Silahın atışından gələn titrəmələr, IMU-nun özünü dəqiq izləməsinə mane olmaq üçün kifayət qədər güclüdür. İzləyicinin aşağı keçid filtrindən və quraşdırılmış Raspberry Pi-dən istifadə edərək bu problemi izləməyə və silahın titrəməsi gücünə təsir etmədən həll edə bildik.

@ Cohagan154 oxuduğunuz üçün təşəkkür edirik