Inspiration

A simple drawing can take only a few seconds, but it already has a personality. Two dots become eyes. A crooked line becomes a grin. I did not want that personality to stop as a flat image or disappear behind a polished stock character.

I wanted the uneven outline, unexpected colors, and handmade details to survive. The first line on the canvas should be the beginning of an adventure, not the end of one.

That became the promise behind PLIXUNO: your drawing becomes the player.

What it does

The journey starts on a simple canvas. A player draws a creature, and PLIXUNO turns those strokes into a filled 3D character. The app can suggest where its joints might be, but the player can move every joint before saving. Then the same character can walk, run, hop, and dance. Players can paint directly on its 3D surface and draw clothes that move with it.

The character then becomes a traveler. Players can explore and repaint miniature versions of Paris, Kyoto, San Francisco, London, and Rome; change the sky and weather; enter buildings; complete 15 short discovery stories; and collect passport stamps. A finished world becomes a before-and-after postcard that can be shared from the device.

PLIXUNO also contains 17 imagination rooms, three small arcade activities, shared rooms with chat and safety controls, and a native AR canvas for drawing colorful strokes in real space.

Drawing is not a menu that players leave behind before the game begins. It remains recognizable across character customization, activities, shared rooms, miniature cities, and postcards.

How I built it

PLIXUNO is written in TypeScript with React Native and Expo. React Native handles navigation, drawing tools, accounts, saves, purchases, and game rules. The 3D experiences use a bundled Three.js renderer inside a local WKWebView, so the playable worlds do not depend on a hosted game page or CDN.

The character pipeline begins with the player's vector strokes. It fills eligible outlines, builds a rounded colored mesh, estimates a rig, blends skin weights, and binds a ten-bone Three.js skeleton. Paint is raycast back to the character's rest geometry so brush marks stay attached while the body moves. Hand-drawn clothes reuse the same skeleton and animations.

Smart Pose uses an existing pretrained Meta Animated Drawings pose model converted to Core ML. It runs locally on the device. I did not train a custom model, and the suggestion never takes control away from the player: manual joint editing is always available.

The cities, interiors, and props were built as Blender/GLB assets. Native Swift modules provide Core ML, ARKit/RealityKit spatial drawing, and Quick Look tabletop previews. Shared rooms use a TypeScript WebSocket service on Render, with Supabase authentication and PostgreSQL persistence. StoreKit purchases and the Plus entitlement are managed through RevenueCat.

Challenges I ran into

The hardest part was not making one impressive 3D screenshot. It was preserving the same creative identity from one screen to the next.

A freehand drawing is ambiguous. Limbs overlap, outlines remain open, and a face can be two dots or twenty strokes. Fully automatic conversion could be confidently wrong, so I built a layered approach: deterministic geometry first, a pose suggestion second, and visible manual correction last. Imperfect input becomes something the player can fix instead of a dead end.

The next challenge was keeping color, paint, and clothing stable while the mesh moved. Early versions exposed cracks, stretched shoulders, repeated face colors on the back, and let the camera pass through rooms. Fixing those problems required shared skin weights, surface-aware painting, camera ray tests, and many front, side, and back reviews.

AR created a different coordinate problem. I changed the early surface-dependent approach so a touch begins at a chosen depth and moving the phone while holding a finger extends the stroke through real 3D space. Smoothing, tracking-loss protection, round tube geometry, and corrected face winding made it feel like drawing in space instead of placing disconnected marks.

Turning the prototype into a reviewable app also meant doing less visible work: account verification and deletion, purchase identity boundaries, restore behavior, rotation, privacy pages, report and block flows, moderation, and useful failure messages.

Accomplishments I am proud of

I am proud that PLIXUNO keeps its central promise. The animated character is built from the player's marks; it is not a stock model wearing a drawing as a texture. The same artwork can move, wear hand-drawn clothing, enter a city, repaint a world, and appear in the final postcard.

I am also proud that the experience now forms one connected loop: create a character, bring it to life, explore, learn something about a place, make the place personal, and leave with a postcard that is unmistakably yours.

What I learned

I learned that automation is most useful when it stays editable. A pose suggestion feels helpful. A pose decision the player cannot fix feels like losing ownership of the drawing.

I also learned that creative tools need careful state management. Saving, undoing, changing accounts, leaving AR, or switching worlds must never silently replace someone's work. Revision IDs, serialized writes, cancellation rules, and explicit confirmation became product features, not just engineering details.

Most of all, I learned that local-first and safe have to be deliberate. The pose model and core rendering run on the device, AR camera frames are not uploaded, and social features need blocking, reporting, moderation, and account deletion from the start.

What's next

The immediate goal is to learn from real players completing the full creation loop without coaching. I want to see where people hesitate, which worlds they revisit, and whether they choose to make a second character before expanding the catalog.

Next I plan to reduce the download size, optimize the bundled model for more devices, improve Smart Pose for a wider range of drawing styles, broaden physical-device AR testing, and strengthen moderation as shared creation grows. New places and tools will follow the same rule as the first version: they must give the player's own drawing something meaningful to do.

Built With

Share this project:

Updates

Submission history