尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 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.