Skip to content
DaniXmirPublic

About

OpenVR driver that let you emulate SteamVR devices with hardware you already own or custom!

Topics

Resources

Stars

67 stars

Watchers

3 watching

Forks

Repository files navigation

GlassVR

glass is a super modular openvr driver that let you emulate or prototype vr devices like a headset, controllers and trackers with hardware that you already own or custom! i originally made this driver to create a super light headset using my XR glasses and a base station tracker but since i added a lot more features!

showcase on youtube: https://www.youtube.com/watch?v=LaRQ5dUw4bU

also join the discord! https://discord.gg/jyvWdKBpPj

Installing

  1. download the .rar in the Releases tab and extract it
  2. run main.exe
  3. in the Driver tab click "install"

youll also need to do lots of configuring because of the modular approach of the project

to uninstall, simply click on "uninstall" in the Driver tab

Some Features:

headset emulation with xr glasses imu(only viture glasses are supported for now) or a controller gyro like strapping a joycon to a hat for 3dof with static offsets for position

pcvr hand tracking with just a normal camera! you can also emulate input with keyboard and mouse or physical controllers that compatible with SDL3(basically everything) lots of people suggested using 2 computer mice for each hand.

use your phones as controllers, trackers or a headset with android's ARcore!

custom controllers! full index controller emulation is supported including capacitive buttons!

using old controllers as trackers by copying their position and rotation! this method does not require reprogramming the controller, useful if your old controller have a dead usb port like my index one

and many more! also position and rotation can be emulated independently for each device allowing for lots of combinations!

Advance Features:

  • 3D visualizer!
  • override tracking of other drivers
  • disable a device model, useful for headsets that are tracked with external trackers like vive etc...
  • change a device role, useful if youre using controllers as trackers and you wanna force specific ones to be left/right
  • override other controllers input and skeletal

Custom Hardware:

and if thats not enough for you, you can also send data yourself with UDP, named pipes, bluetooth and serial!

a common use case for this would be to build a custom controller with an arduino or esp32, lets say you only want to wire flex sensors and a gyro, you can use only the position part of the hand tracking or use a base station tracker and a joycon for the other inputs, or you wired everything and run out gpio ports? you could use 2 or more boards! like one for input and the other for skeletal, index controller capacitive buttons are also supported so for full emulation youll need at least 9 digital and 9 analog ports, add 5 more analog for splay

python examples for UDP and nammed pipes: https://github.com/DaniXmir/GlassVr/tree/master/examples

ideally you would want to build your own driver but i can see some use cases where that would be kinda overkill, like for prototyping or a fun weekend project, or you just scared of c++ ;P

arduino/esp32 firmware: https://github.com/DaniXmir/GlassVr/tree/master/arduino

The Boring Technical Staff...

the driver is composed of 2 parts(3 with the android app), python "server"/ui side and C++ driver side, the python side isnt just a frontend, its used in some modes like hand tracking or controller input emulation with SDL3, its sends its data via named pipes, these pipes can also be hijacked if you want to send custom data see examples: https://github.com/DaniXmir/GlassVr/tree/master/examples

Building:

python ui: to build on windows clone the repo and run build.ps1 with

powershell -ExecutionPolicy Bypass -File .\build.ps1

you may need to install some dependencies...

c++ driver: you can figure this out i believe in you ;P just keep in mind that i used viture sdk so youll need to get the .h files from their site, if you dont care about that feature just press ctrl+f and delete everything with "//viture-"

android app: use android studio

Plugins!

build your own tracking modules, pages or themes!

(for modules i personally recommend to build your own driver but idk)

see examples: https://github.com/DaniXmir/GlassVr/tree/master/examples

Contributing:

any help is welcome!

TODO:

  • android app: add an option for 3dof only and improve video streaming, also add camera streaming
  • improve hand tracking, currently its very jittery and left right gets confused sometimes

Troubleshooting

  1. if you'r controllers not showing up, goto C:\Program Files (x86)\Steam\config\steamvr.vrsettings and add "activateMultipleDrivers" : true

      "steamvr" : {
     	"activateMultipleDrivers" : true
      }
    
  2. weird flickering/objects not rendering in some games? specifically godot XR? set IPD to be greater than 0

QnA

  1. linux?

    in the future... maybe.. (properly)

  2. installed steam or steamvr on disk d?

    dont, you gonna have a bad time! while you could get it working, steam and steamvr REALLY want to be on disk c, you can install the games on disk d no problem but i recommend keeping steam on c

About

OpenVR driver that let you emulate SteamVR devices with hardware you already own or custom!

Topics

Resources

Stars

67 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages