mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
An offline Android app for street artists, using AR to project images onto walls using a confidence-based voxel mapping system.
DesignKotlin · C++GitHub @HereLiesAzConnection unstableOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Loading the full README. The saved excerpt is shown below.
GraffitiXR is an android app for street artists. There are plenty of apps that overlay an image on your camera view so you can virtually trace it, but when I'm painting a mural based on a sketch that I have saved on my phone, using a tripod can really ebb the flow. We're all over the damn place. Me, I put my phone in my pocket. Even the apps that use AR to keep the image steady and in one place can't deal with the abysmal darkness of the pocket.Read the full README ↗GraffitiXR is an android app for street artists. There are plenty of apps that overlay an image on your camera view so you can virtually trace it, but when I'm painting a mural based on a sketch that I have saved on my phone, using a tripod can really ebb the flow. We're all over the damn place. Me, I put my phone in my pocket. Even the apps that use AR to keep the image steady and in one place can't deal with the abysmal darkness of the pocket.
So I'm making something better by repurposing (what those in-the-know call) the grid method. I was always thinking, "Why can't these specific doodles be saved, like a persistent anchor, so the overlay is always just plain in the right spot?"
So, now, that's what those doodles do.
I had to invent a custom doodled relocalizer that works on Android without the help of the cloud—because graffiti is, you know, illegal. When you lock onto a wall, it captures an OpenCV feature doodle of your marks—descriptors plus a handful of triangulated 3D points. Even after tracking loss or a screen-off event, the engine matches the live camera against that doodle and solves the pose (PnP) to snap back and realign your mural to the wall in milliseconds—no cloud, and no pre-scan of the whole room.
And I followed it up with what I call a Teleological SLAM—since we know what the result is supposed to look like, I use OpenCV to look for your progress, meaning that the further along you are, the more tightly the overlay sticks to the wall. Without this, you'd cover those marks up with the painting itself, making the app less accurate as you go. That's exactly where other apps like this truly fail.
Both of those (snap-back and the self-extending doodle) are on by default, along with the persistent wall feature map. Each can be switched off from the AR diagnostics panel, and the choice is remembered. I'm still validating them on real hardware, so expect rough edges.
Just for shirts and goggles, I included the non-AR, image overlay functionality for image tracing, just like you get with those other apps, in case you cray like that. Or if you cray-cray, there's Mockup mode. Nab a picture of the wall, then I got some quick tools for a quick mockup. And if you've got nothing to prove, you just want something copied onto paper perfectly, Trace mode allows you to use your phone as a lightbox, keeping your screen on with the brightness turned up, locking your image into place and blocking all touches until you're finished.
And then, there's a decent suite of pertinent design tools for prepping the one image you're placing — tone, colour balance, outline extraction, subject isolation. Compositing several images into one is the companion design app's job, not this one's. I could go on, but I feel like I already have.
docs/en/PRIVACY_POLICY.md.GraffitiXR is source-available, not open source. The app, the core:* modules, and the AR / SLAM / teleological engine are licensed under PolyForm Noncommercial 1.0.0 (/LICENSE); the declared extension API surface and asset importers are MIT (docs/licenses/MIT.txt). The compiled app is free for anyone to use, including paid commissions — the noncommercial term binds re-use of the source, not muralists doing paid work. See docs/LICENSING.md for the authoritative, path-by-path layout and precedence. Bundled third parties (OpenCV, U²-Net, …) keep their own upstream licenses.
Strictly decoupled multi-module Clean Architecture:
:app — Navigation, camera orchestration, and Hilt dependency injection.:feature:ar — ARCore session management, ArRenderer, and SLAM data processing.:feature:editor — Editing and adjusting the one design image.:feature:dashboard — Project library, onboarding, and settings.:core:nativebridge — Native C++ engine (MobileGS), JNI bridge, and relocalization threads. OpenCV itself is a Maven Central dependency (org.opencv:opencv), not a vendored module.:android_collaboration_module — peer-to-peer networking for Link (host ↔ guest; see Key Features above).:core:data / :core:domain / :core:common — Unified data layer and wearable abstraction.:core:design — Shared Compose design system (reusable controls and overlays).