Hey all, thought I'd show off something I've been working on for a while. Since discovering that there are usable Rust bindings to OpenUSD (https://github.com/anderslanglands/bbl-usd-rs) I've been itching to use them for something, and I've come up with this.
The idea is that each node maintains their own copy of a USD stage and renders it via the built-in OpenGL storm renderer. They use the layering system to place objects on top of the base scene such as avatars etc, and serialize these layers and send them over a network to other nodes. I'm using the iroh-net crate for this, which provides hole-punched QUIC connections. No central servers are required, and there's a heavy emphasis on permissions and privacy. A node's local layers can override the remote layers, and each node has a private, non transmitted layer that they can write changes into (this is already required to make the avatar invisible for the local user but not remotes).
Things are still in a very early stage but I'm excited about the potential. Next thing I want to add is basic manipulation of objects in the scene, e.g. enough to play chess