Giter VIP home page Giter VIP logo

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 ↩

Ryan Butler's Projects

aoede icon aoede

🎧 a self-hosted Spotify β†’ Discord music bot

atomic_enum icon atomic_enum

An attribute to create an atomic wrapper around a C-style enum

awesome-esp-rust icon awesome-esp-rust

Curated list of resources for ESP32 development in the Rust programming language

batlcaml icon batlcaml

BatlCaml - An OCaml AI Programming Game

battlecode-2018 icon battlecode-2018

Team Meme'); DROP TABLE teams; -- code for the 2018 Battlecode competition

bevy icon bevy

A refreshingly simple data-driven game engine built in Rust

bevy_egui icon bevy_egui

πŸ‡ΊπŸ‡¦ Please support the Ukrainian army: https://www.comebackalive.in.ua/donate

bleps icon bleps

A toy-level BLE peripheral stack

bmi160-rs icon bmi160-rs

Platform-agnostic Rust driver for the BMI160 inertial measurement unit (IMU)

bno080 icon bno080

Hillcrest Laboratories / Bosch Sensortec BNO080 driver for rust embedded-hal

branded icon branded

Ghost-Cell style branded types for Rust.

bugs icon bugs

Hosts minimal reproducible examples of bugs

cc-rs icon cc-rs

Rust library for build scripts to compile C/C++ code into a Rust library

chatbotapi icon chatbotapi

Flask Backend API aimed to provide chatbot support for various projects

clustering icon clustering

Clustering code for the Skynet 2.0 project at the Cornell University Autonomous Systems Lab

constellation icon constellation

Spatio-temporal data model and logic system for 3D applications with real-time networked synchronization across devices.

crkbd icon crkbd

Corne keyboard, a split keyboard with 3x6 column staggered keys and 3 thumb keys.

defmt icon defmt

Efficient, deferred formatting for logging on embedded systems

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.