Skip to content

TheButlah/TheButlah

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 

Repository files navigation

Hi, I'm Ryan 👋

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.

Current Projects

Click to expand

SlimeVR

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.

Tech I think is cool

Rust Neovim Bazel Buck2
WebAssembly Bevy WebGPU

Footnotes

  1. Real time operating system

Releases

No releases published

Packages

No packages published