尚未偵測到更新。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.