DigitalBacon-UI: A UI Library + Interaction System for three.js

Hi everyone, sharing my open source UI + Interaction System library to hopefully make adding 2D UI and pointer, grip, and touch interactions with meshes a little easier. Adding a little video to showcase some things you can do with it, but I highly encourage you to check out the examples yourself! Unfortunately Spotify is slacking on reviewing my quota extension so that demo won’t work

Link to Repo: GitHub - kalegd/DigitalBacon-UI: JavaScript 3D UI library for three.js that supports touch screen, mouse, and XR hardware inputs

A little background if you’re interested. I was using three-mesh-ui for the longest time on Digital Bacon (my passion project), but three-mesh-ui hasn’t been maintained for a good while so I decided to build my own UI library and throw my existing interaction system in there too (I needed that to make the UI elements interactable so there was no avoiding it anyways). Many more months than I’d care to admit later, I finished it I got it to a usable point. Wanted to share it a few months ago, but had a lot of family things pop up and also wanted the Spotify demo to work for everyone… Oh well…

The library has TroikaThreeText and ThreeMeshBVH prebuilt into it. If people want those as external dependencies, you are more than welcome to make a pull request for that. In any case, much thanks goes out to @lojjic and @gkjohnson for those libraries as I couldn’t have built this without them

Constructive feedback is more than welcome. As are kind words, I like those a lot :slight_smile:

3 Likes

Great. Thanks. At some point I might seriously consider trying it, as I’d prefer a consistent UI across non-XR and XR experiences.

The last sentence in the docs:

Reminds me of this:

3 Likes

If and when you do please let me know what you think and if you have any suggestions!

Yea I’ve pretty much always been of the opinion a unified UI across hardware platforms is the best way to go. Mostly in terms in maintainability, but I also think it’s to have consistency from a user standpoint too

Hehe you caught me. Documentation is my dish washing

1 Like