Real Guns als Controller: Wéi kritt een alles am VR

Ech sinn de Christopher O'Hagan, e Softwareingenieur bei @KainosSoftware an ech schaffen an der applizéierter Innovatiounsabteilung. Konzentréieren op immersive Technologien. Dëse Blog ass wéi mir viru kuerzem e bal voll funktionnelle Gewier zu engem Virtual Reality Controller verwandelt hunn, a wéi mir d'Problemer ugepaakt hunn déi mat him koumen.

Mir goufe viru kuerzem vun engem kanadesche Client ugefrot, deen no Hëllef gesicht huet fir e realistesche Shooter ze bauen als Attraktioun fir hir Arkade. Dëst ass Deel vun engem wuessenden Trend dee mir gesinn hunn als immersive Technologien wéi VR gi benotzt fir Entertainment-Geschäfter op der Plaz wéi Fluchtzëmmeren a Achterbunnen. Ausrüstung an Opbau, wärend deier, sinn awer rentabel wéinst dem héijen Traffic a Roman Ëmfeld déi dës Firmen ubidden. E gutt Beispill vun Ënnerhalung op der Plaz ass virtuelle Paintball, gemaach vu Firmen wéi The Void.

Eis gréissten Erausfuerderung fir den immersive Shooter mat deem mir gehollef hunn, war e richtegt Schosswaff ze bauen an ze benotzen ... oder op d'mannst eppes wat ausgesinn huet a wéi een et fillt.

Kritt de Controller

Mir hu ursprénglech geduecht datt e Controller ze kréien ass schwéier. Mir hunn e lokale Softwaffenlieferant erreecht, Gear of War. Eis Ufuerderunge waren:

  • En loftmëllt Gewier dat ausgesinn, gefillt an ofgewien huet wéi e richtegt Gewier
  • Eng Waff déi, wa se entlooss gëtt, realistesch Réckfall produzéiert
  • En Ausléiser a Sécherheetsschnouer sou datt mir se fir d'Inputen fir eis Simulatioun kéinte benotzen

Mir hu geduecht datt dëst vill géif froen awer waren iwwerrascht datt dëst fir si normal schéngt. Si hunn vill Requisiten fir Fernseh a Filmer gemaach, sou datt se friem Ufroen haten. Mir hunn dunn e montéierte Vive Tracker benotzt fir d'Waff am VR ze verfollegen.

Opstelle vum Controller

Dëst ass wou mir eisen Haaptprobleem erlieft hunn, Vibration: de Problem gouf duerch de realistesche Réckfall vun eiser Waff verursaacht. Well de Vive Tracker IMUs (Inertial Movement Units) benotzt fir mat héijer Frequenz ze verfollegen an de Vive Liichttuerm System fir Tracking mat enger relativ niddereger Frequenz a fir Driftkorrektur. IMUs funktionnéieren andeems d'Beschleunegung an all Achs gemooss gëtt an duerno d'Verschiebung vun där Messung berechent. Wann IMUen aggressiv vibréieren, z. B. Wann se op eng realistesch Schéisswaff montéiert sinn, kënnen se net no verfollegen. Dat war e Problem.

Well mir keng Vibrationsexperte sinn, hu mir e puer Versich gemaach fir de Problem ze léisen awer net vill Fortschrëtter gemaach. Mir hunn dunn decidéiert e Reddit Post op r / Vive ze schécken. D'Gemeinschaftsreaktioun war hëllefräich. Mir hunn e puer einfach Saache fixéiert, déi mir iwwersinn hunn, sou wéi den Tracker ze wäit op der Schinn ass. Zu eiser Iwwerraschung ass HTC a Kontakt mam Projet komm an huet Interesse gewisen iwwer dat wat mir versichen ze maachen. Si haten eng Beta Versioun vun der Vive Tracker Firmware déi hëllefe kéint e Low Pass Filter fir den IMU ze kreéieren deen se eis ginn hunn.

Graf vum normalen Input versus Input no engem Low Pass Filter benotzt

Den Nidderpassfilter kann iwwer d'USB-HID Interface konfiguréiert ginn. Mir konnten 0xB3 Berichter schécken déi Basisinformatioun iwwer den Apparat am Gebrauch schécken, wéi och déi niddereg Pass Konfiguratioun vun engem MacBook an den Tracker, an déi richteg Astellunge hunn fir d'Vibratiounen genuch ze verdämpen. De nächste Schrëtt war de Funktionelle Bericht ze schécken, deen et erméiglecht Ännerungen un d'Astellungen ze schécken an och d'Kontroll vun HID-Geräter vun engem Raspberry Pi an den Tracker, well mir eppes gebraucht hunn, wat an der Patroun vun der Waff domat kéint passen de Benotzer konnt d'Verbindung net gesinn.

Niddereg Duerchgangsfilter

Dëst sinn d'Schrëtt fir de Raspberry Pi fir dës Art vu Projet opzesetzen

  • Installéiert Raspberry op der Raspberry Pi
  • Update vun der Pi Versioun vum "Node.js"
  • Installéiert d '"Node-hid" Bibliothéik an Ärem Projet fir spezifesch Instruktiounen
  • An udev füügt eng Datei mam Numm "60-HTC-Vive-perms.rules" mat dëser Linn derbäi
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

E potenziell Problem ass datt de falschen Indexwäert vum Node-hid benotzt gëtt. An dësem Fall gëtt den Index benotzt fir den Interface z'identifizéieren oder de Bericht ze schécken. Hei ass eppes fir Iech mat USB Ufroen ze vertraut. Dir kënnt d'Interface mat "Node-Hid" net spezifizéieren. Glécklecherweis war déi "Show-devices.js" Datei déi mat der "node-hid" Bibliothéik koum, déi all verbonne HID Geräter affichéiert, verschidde Weeër fir all Interface.

Benotzt d'Show-devices.js Datei déi mat der Node-hid Bibliothéik kënnt. Dir fannt de Wee fir an Ärem Code ze benotzen am Fall wou et anescht ausgesäit

Wann Dir aner Probleemer mam Skript hutt, kënnt 'usbmon' mat Raspbian an erlaabt Iech all USB Ufroen ze gesinn déi gemaach ginn. Hei ass en nëtzlechen Link deen Dir benotze kënnt fir dës Ufuerderungen z'entschlësselen. (Fänkt un op der Säit 15)

Fazit

Mat enger Waff als VR Controller war op kee Fall einfach. D'Vibrationen vum Schéiss vun der Waff si staark genuch fir d'Fäegkeet vun der IMU ze stéieren genau ze verfollegen. Mat Hëllef vum Nidderegpassfilter vum Tracker an engem agebaute Raspberry Pi, konnte mir dëst Problem léisen ouni d'Tracking oder d'Kraaft mat där d'Waff vibréiert ze beaflossen.

Merci fir d'Liesen @ cohagan154