I'm a Rust developer, passionate about building realtime systems. I do a lot of open source VR development, especially for full-body motion tracking in games like VRChat.
I also like to dance and go bouldering.
If you would like to support my open source projects, you can fund me at ko-fi.
Click to expand
SlimeVR is an open source organization for full-body motion capture in VR. It uses IMUs and a forward kinematics model to allow social VR users to have legs in games like VRChat. I am a core contributor in the org, and the primary author of several components of the ecosystem.
The four main things I work on under this umbrella, are located in the SlimeVR-Rust monorepo or in SolarXR.
I develop bare metal embedded rust on the ESP32C3 and NRF52840 microcontrollers, which
takes IMU sensor data, does sensor fusion, and sends that data over WiFi or BLE. I use
async/await and embassy
for concurrency without the need for an RTOS1.
This firmware has been really fun to work on and is what I spend most of my time on right now.
If that sounds exciting to you, open a PR or support my work so I can buy more hardware :)
I also am the primary author of an OpenVR overlay for SlimeVR, which renders a simple 3D view in VR of the pose of the user. This has been critical in debugging SlimeVR, and allows power users to tweak their settings in real time.
I also created ovr_overlay
, which allows rust code to access the C++ based OpenVR
API. Prior to this work, only fairly out of date and unmaintained bindings to the C API
existed. I used autocxx
to easily write FFI for the C++ code.
I created an experimental skeletal model that can solve the user's pose. The goal is to be more general purpose than the current (trigger warning) Java based model that the official server uses, with several new features like arbitrary positional constraints, adjusting mounting calibration without a full reset, and supporting languages other than Java, via FFI.
Unfortuantely, a lot of the skeletal model is still feature incomplete. If you are interested in helping me build this, reach out to me on the SlimeVR discord.
I maintain and co-authored the SolarXR protocol, which is a Websocket and Flatbuffer based networking protocol that allows applications (like the GUI and overlay) to work with the SlimeVR server.
After we adopted the protocol, it allowed the team to break the gui code into
its own app and adopt technologies like tauri
, typescript
, and react
, with
clearer separation of concerns, less code, and prettier UI/UX.
Rust | Neovim | Bazel | Buck2 | ||||
WebAssembly | Bevy | WebGPU |
Footnotes
-
Real time operating system ↩