mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.