I’ve been building a web app where you decorate a 3D paper toy character with stickers and print it as a foldable physical toy. Wanted to share the Three.js side of it.
The model is a two-piece faceted mesh (head box + body box) with a tile-atlas UV layout, shared coordinates across faces so stickers can wrap seamlessly across edges. Cross-face wrapping runs through a custom FaceAdjacencyMap using BFS to track adjacency, with logic to prevent wedge artifacts at the 3-face corner intersections.
Stickers are stored as UV coordinates per face fragment rather than pixel positions, so placement, rotation, and scale stay consistent regardless of texture resolution. Everything you place in the browser gets composited server-side into a print-ready PDF with bleed marks, cut lines, and fold lines.
Stack: React + TypeScript, Three.js, Tailwind, Supabase backend.