mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
Design custom dinnerware and generate slip‑casting molds online
Translation pending
AI summary · website content
DesignJavaScript · HTMLGitHub @eeismannOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A web-based parametric design platform for creating custom ceramic objects suitable for FDM 3D printing. Design dinnerware sets, custom vessels, mug handles, and slip casting molds with intuitive controls and real-time 3D preview.
Playground Ceramics is a multi-application design studio with four specialized tools:
| Application | Description |
|---|---|
| Dinnerware Designer | Create complete dinnerware sets with consistent parametric styling |
| Vessel Generator | Design custom vases with section-by-section control |
| Vessel Designer V2 | Draw a vessel profile with pen points and bezier handles |
| Handle Generator | Create mug handles that integrate with Dinnerware projects |
| Cast Form Generator | Generate 4-part slip casting molds from vessel geometry |
# Clone the repository
git clone https://github.com/eeismann/dinnerware-generator.git
cd dinnerware-generator
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
The development server will start at http://localhost:3000 (configured Vite port).
Use Node.js 20 or later. npm test runs the geometry, scene, storage, import,
worker, registration and profile regression gates without writing generated models.
npm test
npx playwright install chromium # once per development machine
npm run test:browser # isolated Chromium + temporary Vite port
npm run verify:performance # separate cold/edit/cache-hit timings and budgets
npm run benchmark:cleanup # slower Pattern_mug fidelity, time and memory comparison
npm run build
CI runs the deterministic suite, browser workflows and production build. Timing budgets stay in the separate performance command to avoid machine-dependent CI failures. The browser tests use their own storage and never open personal saved projects.
Dinnerware drafts have per-project identities and URLs. New unsaved drafts appear on the dashboard; reopening a saved design restores its newer draft. Imported and duplicated projects receive fresh identities for every generator.
Handle imports use the actual compiled V2/V3 profile (curves and rounding included). For folded profiles, contact uses the outermost surface at each height. Active motifs and spouts require an angular attachment policy; the picker explains why these sources cannot yet be imported. Existing Handle projects retain their stored source profile until reimported.
ProjectName_item_type.stlDinnerware STL exports regenerate each item with at least 512 sides around its circumference. Patterned items may use more to preserve repeating detail. The interactive preview keeps its lighter mesh for responsive editing.
dinnerware-generator/
├── dashboard.html # Platform dashboard
├── index.html # Dinnerware Designer
├── vessel-generator/
│ └── index.html # Vessel Generator
├── vessel-v2-generator/
│ └── index.html # Pen Profile Vessel Designer
├── handle-generator/
│ └── index.html # Handle Generator
├── cast-form-generator/
│ └── index.html # Cast Form Generator (slip casting molds)
├── mold-generator/
│ └── index.html # Mold Generator (alternative implementation)
├── scripts/
│ ├── main.js # Dinnerware entry point
│ ├── dashboard/
│ │ ├── dashboard.js # Dashboard logic
│ │ └── projectStorage.js # Project management
│ ├── vessel/
│ │ ├── vesselMain.js # Vessel entry point
│ │ ├── geometry/ # Vessel mesh generation
│ │ ├── state/ # Vessel state management
│ │ └── ui/ # Vessel UI components
│ ├── vesselV2/
│ │ ├── vesselV2Main.js # Pen profile vessel entry point
│ │ ├── geometry/ # Drawn profile sampling and mesh adapter
│ │ ├── state/ # Vessel V2 state management
│ │ └── ui/ # Profile editor
│ ├── handle/
│ │ ├── handleMain.js # Handle entry point
│ │ ├── geometry/ # Handle mesh generation
│ │ ├── state/ # Handle state management
│ │ └── ui/ # Handle UI components
│ ├── castForm/
│ │ ├── castFormMain.js # Cast Form entry point
│ │ ├── geometry/ # Mold decomposition & generation
│ │ │ ├── moldGenerator.js # 4-part mold system
│ │ │ ├── inputProcessor.js # STL/OBJ import
│ │ │ └── castFormSTLExporter.js
│ │ ├── state/ # Cast Form state management
│ │ │ ├── castFormState.js
│ │ │ └── castFormDefaults.js
│ │ └── ui/ # Cast Form UI components
│ │ ├── castFormViewport.js
│ │ └── parameterPanel.js
│ ├── geometry/
│ │ ├── meshGenerator.js # Dinnerware mesh generation
│ │ └── stlExporter.js # STL export utilities
│ ├── state/
│ │ └── projectState.js # Dinnerware state
│ ├── ui/
│ │ ├── viewport.js # Three.js viewport
│ │ └── themeManager.js # Global theme system
│ └── utils/
│ └── validation.js # Warning system
├── styles/
│ ├── main.css # Dinnerware styles
│ ├── dashboard.css # Dashboard styles
│ ├── vessel-generator.css # Vessel styles
│ ├── handle-generator.css # Handle styles
│ ├── cast-form-generator.css # Cast Form styles
│ ├── shared.css # Shared components
│ └── themes.css # Theme definitions
├── saved-projects/ # Example projects
├── package.json
├── vite.config.js
└── README.md
Dinnerware & Vessel: Generated using parametric profile revolution:
Handle: Generated using cross-section sweep:
Cast Form: Generated using mold decomposition:
Dinnerware:
| Item | Diameter | Height |
|---|---|---|
| Plate | 280mm | 25mm |
| Soup Bowl | 180mm | 60mm |
| Pasta Bowl | 240mm | 50mm |
| Mug | 90mm | 100mm |
| Tumbler | 80mm | 110mm |
| Saucer | 150mm | 20mm |
| Serving Bowl | 280mm | 100mm |
Vessel (defaults):
| Section | Height | Diameter |
|---|---|---|
| Lip | 8mm | 80mm |
| Neck | 50mm | 80-100mm |
| Shoulder | 40mm | 100-140mm |
| Body | 100mm | 100-140mm |
| Foot | 15mm | 60-100mm |
Cast Form (defaults):
| Parameter | Default | Range |
|---|---|---|
| Shrinkage Compensation | 12% | 8-15% |
| Plaster Wall Thickness | 30mm | 20-50mm |
| Spare Height | 45mm | 30-80mm |
| Registration Key Size | 8mm | 5-15mm |
| Draft Angle | 5° | 0-10° |
Dinnerware & Vessel:
Handle:
Cast Form:
This project uses the following key libraries:
| Library | Version | Purpose |
|---|---|---|
| Three.js | r160 | 3D rendering and viewport |
| Vite | 5.0+ | Build tool and dev server |
All dependencies are managed via npm and defined in package.json.
Requires WebGL support.
For detailed specifications, see:
playground-ceramics-platform-spec.mddinnerware-generator-product-spec.mdvessel-generator/vessel-generator-product-spec.mdhandle-generator/handle-generator-product-spec.mdcast-form-generator/cast-form-generator-product-spec.mdcast-form-generator/cast-form-generator-technical-spec.mdmold-generator/mold-generator-product-spec.mdmold-generator/mold-generator-technical-spec.mdContributions are welcome! Here's how you can help:
git checkout -b feature/your-feature-namegit commit -m "Add feature: description"git push origin feature/your-feature-nameWhen reporting bugs, please include:
Problem: "App won't load / blank screen"
Problem: "STL export fails or produces invalid geometry"
Problem: "Mold parts don't align properly after printing"
Problem: "3D printed vessel is not watertight"
Problem: "Development server won't start"
node_modules and package-lock.json, run npm install againnpm run dev -- --port 3000 to use different portProblem: "Handle doesn't attach properly to mug"
MIT License - Feel free to use and modify for your projects.