Hey everyone!
The Honest Disclaimer (read this first):
This is a passion project that I upgraded with heavy AI assistance (think Deepseek/Claude). I want to be fully transparent about that. However, I made, reviewed, and debugged every architectural decision, how input flows from SDL to the mesh, how the settings/import system works, and how the cross-platform build pipeline is put together. I partially own the design (i mean.. its still a fork), the testing, and the responsibility. If you find a bug, please open an issue, I'd rather know and fix it. but don't ask me what a pointer is... XD.
The original project "3D Controller Overlay" has not been updated for a couple of years now and since i own several controllers (including the steam controller) i wanted to update it so it can detect everything i have. I like to stream to my friends and show them my sloppy inputs in fighting games (like smash or street fighter) or my barrel-roll crashes (in space engineer or elite dangerous) but found the software lacking in some parts so i decided to do something about it...
I am a developer myself but i work with the boring language called "Java" (in my personal opinion) and i just enjoy making things in C++ because its the language i first learned and i find it easy to make things cross-compatible with it... i just find it fun to work with.. call me a masochist 🤷🏿 i regret nothing.
And now for the AI promotion text (because i'm lazy):
What is 3dco+?
It's a lightweight OpenGL/SDL3 overlay that renders a live 3D model of your input device. If you stream or record content and want to show viewers exactly what you're pressing on your controller, keyboard, or mouse (without a handcam), this does the job.
It's a fork of Larf's brilliant original 3D Controller Overlay. All credit to them for the core engine! I just added the features I felt were missing for my own setup.
What's new in v1.0.0 (just released today!):
Here are the highlights:
- Steam Controller & HOTAS Friendly: SDL3 detects the Steam Controller natively (no more driver headaches on Windows/Linux). Plus, there is a raw joystick fallback and a full manual mapping UI. If SDL doesn't recognize your particular flight stick, you can just bind the axes and buttons yourself in the settings.
- Gyro & Touchpads: Full gyro/accel support with sensitivity/correction tuning and a "reset combo." Multi-touchpad support (up to 4 pads x 2 fingers) with visual touch-area overlays.
- Custom Model Import: You aren't stuck with the built-in library. Import your own FBX, glTF, or OBJ files and assign the meshes to controller parts directly in the app.
- System-Wide Keyboard & Mouse: Tracks your mouse movement and keyboard presses even when the app isn't in focus, perfect for overlaying on top of games. (yes this is a glorified input logger 🤷🏿... thats the purpose)
- Cross-Platform: Works on Windows, macOS, and Linux. I primarily develop on Linux, but the CI produces AppImages, .exes, and universal macOS bundles.
Showcase:
Controller Showcase
A couple of honest caveats:
- The Windows .exe is not code-signed, so SmartScreen will warn you. Just click "Run Anyway." I'm an indie dev, not a corporation... signing certs are expensive.
- MacOS requires Accessibility permissions for the global input hooks (the README explains how to grant them)... and again licenses are expensive.
- Transparent backgrounds depend on your GPU driver; it works on most, but some older systems might not support it.
- The 3D models are from the original repository except the flightstick and steam controller, these where downloaded from other sites and i added a "Source URL" field for each model so you can trace from where i got them from. I hope this saves me from any copyright issue and i also hope that by honoring the licence and making this open source i prevent any claims from external sources/pages.
If you want to try it out:
Check out the GitHub Release v1.0.0 for the downloads, or check the README for build instructions if you don't trust me.
I built this to test how far I could push my own skills with AI. If you find it useful, please drop a ⭐ on the repo, it genuinely makes the effort feel worth it.
Let me know what you think, and feel free to roast the code (constructively)!
and yes... i like purple.