jankVR

My project to create a Python-based customizable pipeline for frankensteining together cheap VR setups from random components (game controllers, webcam-based trackers, etc).

Born from many, many previous attempts at doing the same thing and getting frustrated that the software side just isn't quite there yet. (I did a short presentation about these attempts: slides, in Polish.)

Currently still in the “design phase”. An implementation was attempted, but was extremely incomplete.

Original infodump#

anyways i mentioned this during the meet but i think my mic was borked so nobody heard: i wonder if osc fbt works in desktop mode

 

 

the idea is that we could theoretically set up some face tracking model based on webcam input, route that through osc, and get webcam tracking for free, no vrc+ required, and with linux support

half-relatedly i was entertaining the idea of making a magic box for these kinds of janky vr setups

 

the idea is: you have a single app that gathers inputs from various peripherals (controllers, webcam-based trackers, etc.) and sends them to outputs (slimevr, vrchat osc, steamvr custom driver?)

 

the whole thing is based on a plugin architecture so you don't have to set up a completely separate app for each peripheral (like you do with the various non-slimevr-tracker-as-slimevr-tracker solutions, iirc)

 

...and by "entertaning the idea" i mean i started writing it

 

my initial idea was to have a system of peripherals where each peripheral maps to a joint on a skeleton, and the joint data is then parsed by the output plugins

 

this works fine for things like single controllers, but it gets more complicated once you get one "peripheral" or source that exposes data for multiple joints (for example, a webcam-based tracker will expose data for hand and head position, and both are returned from one process that does the tracking)

 

i think the best solution would be to have a node-based system

 

where a single node can have as many inputs and outputs as necessary

 

then we can have one node for the webcam tracker, one node for each individual controller, and one node for the output (say, passthrough to slimevr or vrc)

 

bonus points since it would let you combine single pieces of data from peripherals, or map them to aggregators (say, a filter that averages imu data from multiple sensors)

 

but could probaby be dumbed down ui-side for easy setup