mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
Add displacement textures to STL, OBJ, and 3MF models directly in your browser. Preview, mask, bake, and export printable textured meshes locally.
DesignJavaScript · HTMLGitHub @CNCKitchenOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Add a phyiscal texture to your 3D Print.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Live: https://bumpmesh.com
GitHub: https://github.com/CNCKitchen/stlTexturizer
Author: Stefan Hermann
A browser-based tool for applying surface displacement textures to 3D meshes — no installation required.
Load an STL, OBJ, 3MF, or STEP file, pick a texture, tune the parameters, and export a new displaced STL ready for slicing.
See the full changelog for every update since April 2026.
.texture file; uploads are kept under "Your textures" in the gallery (this browser only, and the browser may clear them at any time) where you can star, re-download or delete them.bumpmesh projects; Bake Textures flattens them into the mesh when neededindex.html in a modern browser (Chrome, Edge, Firefox, Safari).Note: All processing runs entirely in the browser — no data is uploaded to any server.
index.html # Main entry point
style.css # Styles (light / dark theme)
logo.png # Favicon & header logo
CNAME # Custom domain (bumpmesh.com)
textures/ # Built-in JPG/PNG displacement map images (101 textures) + thumbs/
js/
main.js # App bootstrap & UI wiring
viewer.js # Three.js scene / camera / controls
stlLoader.js # Binary & ASCII STL parser
presetTextures.js # Built-in texture presets (categories, credits, default favorites) + custom upload
textureGallery.js # Favorites grid + Texture Gallery side panel
customTextures.js # "Your textures": uploaded maps kept in this browser (IndexedDB)
sidebarToggle.js # Collapse / expand tab for the right-hand sidebar (settings or gallery)
previewMaterial.js # Three.js material for live & displacement preview
previewPipeline.js # 3D-preview mesh build (runs in previewWorker.js)
mapping.js # UV projection logic (7 modes)
displacement.js # Vertex displacement baking
subdivision.js # Adaptive mesh subdivision
decimation.js # QEM mesh decimation
meshIndex.js # Shared vertex welding + integer-pair hash maps
exclusion.js # Face exclusion / inclusion painting
exporter.js # Binary STL export
i18n.js # Translations (EN / DE)
All processing runs entirely in the browser — no backend or build step is needed. You just need a local HTTP server because browsers block ES module imports and texture loading from file:// URLs.
# Clone the repository
git clone https://github.com/CNCKitchen/stlTexturizer.git
cd stlTexturizer
Then start any static file server from the project root. Pick whichever you have installed:
Python (3.x)
python -m http.server 8000
Python (2.x)
python -m SimpleHTTPServer 8000
Node.js (npx, no install needed)
npx serve .
PHP
php -S localhost:8000
Open http://localhost:8000 in your browser and you're ready to go.
Tip: Any static server will work — the app has no server-side dependencies. After updating a local copy, hard-reload once (Ctrl+F5 / Cmd+Shift+R): most simple servers don't send cache headers, so the browser may otherwise mix new and old files.
Docker / Podman
docker compose up -d # or: podman-compose -f podman-compose.yaml up -d
Serves the app on http://localhost:8080. To change the port or container name, copy .env.example to .env and edit it.
Loaded via CDN (jsDelivr) — no build step or npm install needed:
| Library | Version | License | Usage |
|---|---|---|---|
| Three.js | 0.170.0 | MIT | 3D rendering, scene management, materials |
| — OrbitControls | 0.170.0 | MIT | Camera orbit / pan / zoom |
| — STLLoader | 0.170.0 | MIT | Binary & ASCII STL import |
| — OBJLoader | 0.170.0 | MIT | OBJ mesh import |
| — LineSegments2 / LineSegmentsGeometry / LineMaterial | 0.170.0 | MIT | Wide-line wireframe overlay |
| fflate | 0.8.2 | MIT | ZIP compression & decompression for 3MF import/export |
All dependencies are MIT-licensed.
GNU AGPL v3.0 — see LICENSE.