봉제 패턴 생성기은(는) 무엇을 하나요?
봉제 패턴을 파라메트릭 방식으로 제도하며 (이미지 생성이 아닌 제도 규칙 사용), 봉제 가능 여부를 확인하고, 출력 파일, 재단 배치도, 원단 소요량 및 봉제 설명서를 생성합니다. 모든 생성 파일은 영어로 제공됩니다. 사용자에게는 사용자가 작성한 언어로 응답합니다.
자체 제작 패턴만: 보호되는 상업용 패턴을 재구축하거나 복사하지 마십시오. 사용자가 디자이너 의류를 보여주는 경우, 비슷한 스타일의 독창적인 패턴을 개인용으로 제도하십시오.
초기 설정 (최초 1회)
pip install -r requirements.txt # numpy scipy shapely opencv-contrib-python-headless reportlab matplotlib pillow pypdf
모든 스크립트는 scripts/ 디렉토리에 있으며, 해당 디렉토리에서 직접 호출하거나 경로를 지정하여 호출합니다.
작업 흐름
1. 요청 이해하기
다음 항목을 파악합니다: 의류 종류와 변형, 사이즈 또는 치수, 원단과 신축성, 핏, 출력 형식. 사진이 있으면 → 3단계로 이동합니다.
2. 질문: 정확히 한 번만, 정말 필요한 정보만
누락된 정보를 한 번에 짧은 메시지로 질문하며, 각 질문에 기본값을 제시합니다 ("따로 말씀하지 않으시면 ...을 사용하겠습니다"). 일반적으로 누락되는 항목은 다음과 같습니다:
- 의류 종류와 변형 (포켓, 커프스, 길이, 후드 등)
- 사이즈 (키즈 86–176, 여성 34–56, 남성 44–60) 또는 신체 치수 (키, 가슴둘레, 허리둘레, 엉덩이둘레, 인심, 옆길이, 팔길이, 머리둘레)
- 원단 (직물/저지/엘라스테인 저지/인터록/스웨트/플리스) 및 신축률 (%)
- 핏 (슬림/보통/와이드/오버사이즈; 바지의 경우 하렘 스타일 포함)
- 출력: 롤(폭 mm, 기본 610), A0, A1, A4 또는 US Letter (이어 붙이기용)
- 재봉틀: 사용자가 사용하는 재봉틀 종류: 재봉틀(지그재그? 신축 스티치? 또는 직선 스티치만 가능), 쌍침, 오버록/서저, 커버스티치. 워크숍 파일에 이미 설정이 있으면 (
python scripts/profiles.py machines show) 질문을 건너뜁니다. 사용자가 말하지 않은 경우 기본값: 지그재그가 가능한 가정용 재봉틀. - 시접: 사용자가 중요하게 생각하는 경우에만 질문 (기본값: 1 cm, 밑단 2–2.5 cm; 니트에 오버록 사용 시 자동 7.5 mm, 직선 스티치만 가능한 기계로 직물 봉제 시 1.5 cm, 또는 "없음"으로 설정하여 따라 그리고 직접 추가)
이후에는 다시 질문하지 않습니다. 애매한 사항은 합리적인 기본값으로 결정하고 결과에 명시합니다.
인형 옷 (패브릭 인형, 봉제 인형, 패션 인형; 키 20–100 cm): 대신 인형의 키(머리 끝에서 발끝까지)와 줄자 또는 실로 인형을 측정한 값(가슴둘레, 허리둘레, 엉덩이둘레, 머리둘레, 팔길이(어깨에서 손목까지), 인심, 옆길이(허리에서 발바닥까지))을 질문합니다. 키만 필수이며, 나머지 값이 없으면 일반적인 패브릭 인형 비율을 따릅니다. 그런 다음 generate.py --doll --garment dress --measures '{"height": 45, "chest": 30, …}' (spec "doll": true)를 실행합니다. 지원 모듈: dress, skirt, pants_basic, tshirt_basic. 인형 기본값 (각 값은 재정의 가능): 시접 6 mm (30 cm 미만인 경우 5 mm), 밑단 10 mm, 직물 원단, 와이드 핏, 상의와 드레스는 뒷면이 완전히 열림 (벨크로/스냅 단추, 봉제 인형의 머리가 네크라인을 통과하기 어렵기 때문), 바이어스로 마감된 네크라인, 좁은 고무줄 통이 있는 바지, 포켓/커프스 없음. 얇은 면, 짧은 스티치, 실 풀림 방지제를 권장합니다. 인형 프로필은 profiles.py save rosa --measures '{…}' --kind doll로 저장합니다. 자세한 내용은 scripts/doll.py, references/size_tables.md ("Doll clothes")를 참조하세요.
재봉틀: --machines sewing,overlocker,coverstitch 키로 전달합니다 (키: sewing = 직선 스티치 + 지그재그, straight_only, stretch_stitch, twin_needle, overlocker, coverstitch; 독일어 이름(Overlock, Coverlock, Zwillingsnadel)도 작동합니다; spec 필드 machines). 재봉틀은 재봉하는 사람의 소유이므로, 사용자가 처음 재봉틀을 언급하면 모든 향후 패턴을 위해 한 번 저장합니다: python scripts/profiles.py machines set sewing,overlocker (워크숍 파일 profiles/_machines.json; 측정 프로필에는 자체 --machines가 있을 수 있으며, --machines 명령줄 인수가 워크숍 및 프로필 설정보다 우선합니다). 적용 효과: 오버록으로 처리되는 니트 솔기는 7.5 mm 시접 (칼날이 자르기 때문), 직선 스티치만 가능한 기계의 직물 솔기는 15 mm (프렌치 솔기용) (--seam-allowance로 명시적으로 지정하면 항상 우선하며, 인형 옷은 6 mm 유지); 모든 솔기와 밑단 단계는 사용할 기계와 스티치 종류를 명시; 설명서에는 "사용자 재봉틀" 표(스티치 종류, 폭/길이, 단계 유형별 바늘)와 누락된 것에 대한 팁(예: 커버스티치 대신 쌍침)이 포함됩니다. 오버록이 없어도 누락된 것은 없습니다: 니트 솔기는 좁은 지그재그/신축 스티치를 사용합니다. 직선 스티치만 가능한 기계로 니트를 재봉하는 것은 가능하지만 내구성이 약합니다: 설명서에 설명된 두 줄의 긴 직선 스티치 또는 직물 원단을 제안하세요. 재봉틀이 전혀 없는 경우 (오버록만 있음): --machines overlocker,hand (또는 overlocker_only; hand 키가 없으면 "재봉틀 없음"을 의미). 이 경우 모든 솔기는 오버록 처리되고 (7.5 mm 시접, 직물 원단도 포함) 모든 직선 스티치 단계는 손바느질로 처리됩니다: 겉솔기 → 뒤박음, 밑단/고무줄 통 → 감침질, 시침 → 고정 박음, 바탁은 손으로, 고무줄 끝 → 손바느질 상자 설명; 각 단계에는 오버록 힌트(칼날 앞에서 핀 제거, 곡선은 천천히, 실 사슬)가 추가됩니다. 응답 시, 패턴이 재봉틀에 맞게 어떻게 조정되었는지 한 줄로 언급하세요.
측정 프로필: 사용자가 특정 인물의 신체 치수를 제공하면 해당 치수를 저장할 것을 한 번 제안합니다(python scripts/profiles.py save lena --measures '{…}' --kind child). 이후 "레나 바지"와 같은 요청이 들어오면 측정 질문 없이 generate.py --profile lena …를 사용할 수 있습니다 (어린이 측정값이 6개월 이상 지난 경우 경고; references/size_tables.md 참조).
3. 사진 (선택 사항)
다음 중 어떤 모드인지 먼저 결정합니다 (자세한 내용: references/photo_guide.md):
모드 A: 영감 사진 (입은 사진, 카탈로그, Pinterest). 사진을 보고 feature JSON을 작성합니다 (스키마는 scripts/photo_analyze.py에 있으며, 각 feature는 value와 confidence (0–1) 값을 가집니다). 그런 다음:
python scripts/photo_analyze.py features.json # 확인 텍스트 + 모듈/옵션 + "포함되지 않은 항목"
python scripts/photo_analyze.py --image flatlay.jpg # 자동으로 판별된 바지 실루엣 (비율만)
신뢰도와 함께 feature 목록을 보여주고 사용자에게 확인을 요청합니다 ("~라고 보입니다, 맞습니까?"). 스크립트가 출력하는 포함되지 않은 feature는 공개적으로 언급하고 대안을 제시하십시오; 즉흥적으로 답변하지 마십시오. 신체 치수는 항상 사용자에게서 가져와야 하며, 영감 사진에서 추출하지 마십시오.
모드 B: 기존 의류 복사 (평평하게 펼쳐서 정면에서 촬영, 기준 카드 assets/reference-card.pdf 또는 접이식 자가 함께 있는 경우): 역설계.
cd scripts && python -m reverse.pipeline photo.jpg --type pants --out project/
결과: overlay_measurement.png (감지된 외곽선과 치수; 사용자에게 보여주고 확인), reverse_report.md (조각/솔기 그래프, 목표값/실측값/Δ 편차 보고서, 봉제 가능성 확인) 및 project.json ( "이전과 같지만 2 사이즈 크게"로 재사용 → reverse.pipeline.regrade("project.json", 2)). 줄자로 측정한 값은 사용자 값이 우선합니다: photo_measure.measure(..., tape={"inseam": 48}). 기준 카드가 없는 경우 스킬은 정확히 무엇을 해야 하는지 알려줍니다. 누락된 사진(예: 가랑이 곡선용)은 reverse.decompose.missing_photos에 나열됩니다. 허용 오차: 길이 ± 1 cm, 너비 ± 2 %. 그런 다음 출력 파일을 생성합니다:
python scripts/generate.py --project project/project.json --format roll610,a4 --out out/copy
인형 옷도 복사할 수 있습니다: --doll 추가 (reverse.pipeline.run(..., doll=True)); 결과에는 인형 시접과 뒷면 개구부가 포함되며, generate.py --project는 이를 출력합니다. 인형 상의는 긴 소매로 측정하는 것이 가장 좋습니다 (매우 짧고 넓은 인형 소매: 줄자로 소매 너비 측정). 모드 B는 바지 (--type pants) 및 티셔츠/래글런 상의 (--type top, 모듈 tshirt_basic)에서 작동합니다. 상의의 경우 사진으로 가슴둘레와 밑단 너비, 길이, 겨드랑이 깊이, 앞 네크라인(너비와 깊이), 뒤 네크라인 깊이, 어깨점, 소매 상단선, 위팔 너비, 소매 도달 길이와 개구부를 제공합니다; 세트인 또는 래글런 여부는 네크라인에서 감지됩니다 (래글런 솔기는 네크라인을 날카로운 모서리로 만듦) 사용자 확인을 위해 오버레이에 표시됩니다 (base_options={"sleeve_style": "raglan"}이 이를 재정의합니다). 핏은 후보 패턴을 제도하고, 이를 가상으로 평평하게 배치하여 (flatlay.py: 앞면 ∪ 뒷면, 소매는 상단선을 따라 접음) 최소 제곱법으로 모든 사진 feature와 일치시킵니다. 스케일은 10 cm 기준 카드에서 가져옵니다. 폭 1.5 m (긴 소매를 펼친 경우)의 의류의 경우 약간의 카메라 기울기로 인해 최대 2% 오차가 발생할 수 있습니다: 사용자가 가능하다면 줄자로 가슴 너비를 평평하게 측정하여 tape={"chest_flat": 37.2} (cm)로 전달하도록 하십시오. 그러면 모든 사진 값이 이 값을 기준으로 재조정됩니다.
4. 측정
measurements.complete_measures(given_cm, size)는 사이즈 표나 키에서 누락된 측정값을 채우고 타당성 경고를 보고합니다. 사용자가 제공한 측정값이 표보다 우선합니다. 표 및 출처: references/size_tables.md.
사용자가 패턴 CAD 소프트웨어의 XML 측정 파일(.smis / .vit)을 가지고 있는 경우 --measures-file로 전달합니다. 명시적인 --measures 값이 이를 재정의합니다. --export-measures를 사용하면 사용된 측정값이 body_measurements.smis로 저장되어 다음 번에 사용자의 측정값을 유지하는 좋은 방법이 됩니다.
5. 제도, 검증, 배치, 렌더링: 한 번의 호출
python scripts/generate.py --garment pants_basic --style harem --size 122 \
--fabric sweat --format roll610,a4 --out out/harem122
# 더 많은 예시
python scripts/generate.py --garment tshirt_basic --size 140 --options '{"sleeve_style":"raglan","sleeve_length":"long"}' --format a4
python scripts/generate.py --garment hoodie --size w38 --fabric sweat --format roll914,a0
python scripts/generate.py --garment skirt --size 128 --style circle --format a1
python scripts/generate.py --spec order.json # 모든 것을 JSON으로 (generate.py 헤더 참조)
사이즈: 키즈는 숫자(122), 여성은 w38, 남성은 m52; US/UK: us8 (미국 여성), uk12 (영국 여성), us3t (미국 유아), usk8 (미국 키즈), 자세한 내용은 references/size_tables.md를 참조하세요.
여러 사이즈 동시에 (중첩): --size 98,110,122 (또는 키즈 단계로 범위 98-122)는 모든 사이즈를 제도하고 검증하며 공통 구성점에 중첩하여 표시합니다. 각 사이즈는 고유한 색상/선, PDF 레이어 (Acrobat의 레이어 패널에서 각 사이즈를 켜고 끌 수 있음) 및 SVG 그룹으로 표시됩니다. 여러 명의 형제자매를 위해 또는 사이즈 간 혼합에 사용합니다. 모든 사이즈는 동일한 옵션을 공유합니다.
야드파운드법 사용자: --units imperial (측정값을 인치로 받고, 결과도 인치/야드로 표시).
독일어 출력: --lang de (spec "language": "de")는 모든 출력을 독일어로 작성합니다: 조각 레이블, 봉제 단계, 책자, 재단 배치도, 보고서 및 다이어그램, 독일어 파일 이름 (naehanleitung.pdf, pruefbericht.md, zuschnittplan.png, schnitt.json, …_master_1zu1.svg, …_a4_kleben.pdf), 소수점 쉼표 및 "Gr. 122". 모든 텍스트는 하나의 문자열 테이블(scripts/i18n.py, 독일어 항목은 scripts/i18n_de.py)을 통해 전달됩니다. 새로운 출력 텍스트는 거기에 독일어 항목을 추가해야 합니다. 옵션 이름과 구성 값 키는 영어로 유지됩니다.
모듈 및 주요 옵션:
| 모듈 | 스타일/옵션 |
|---|---|
pants_basic | 스타일: jogger, harem, leggings, trousers · 핏 · 원단 · 신축률 · 길이 (long, 7/8, knee, short) · 허리밴드 (casing, rib, yoga, tunnel) · 커프스 · 포켓 ([side] = 포켓 백이 있는 비스듬한 앞포켓, [back_patch], [cargo]) · 다리 모양 (straight, tapered, bootcut, flare + flare_cm; 긴 바지에 커프스 없음) · turn_up (cm, 반바지/무릎 길이) · fake_fly (true 또는 {offset_mm, length_frac_R, radius_mm, side}) · 뒷주머니 (1, 2) + back_pocket_side (right, left; 입었을 때 기준) · 밑단 마감 (plain, elastic_casing + hem_elastic_mm, hem_elastic_len_cm) · 포켓 백 원단 (cotton, jersey, lining, main) |
tshirt_basic | 핏 · 원단 · 소매 스타일 (set_in, raglan) · 소매 길이 (short, 3/4, long) · 네크라인 (round, v) · 길이 (normal, tunic) · 소매 커프스 · 밑단 밴드 |
hoodie | 티셔츠 기본 + 후드, 후드 안감, 캥거루 포켓 (기본: 스웨트, 와이드, 리브 커프스) · 앞판 (closed, zip: 앞면이 갈라진 지퍼 재킷, 옆 포켓, 지퍼 가드, 노트에 지퍼 길이) · 지퍼 가드 |
skirt | 스타일: gathered, a_line, circle · 길이 (mini, knee, midi, maxi) · 주름량 · flare_deg |
dress | 스타일: waist_seam (티셔츠 몸판 + 스커트: gathered, a_line, circle; gather 1.0–2.5; waist_elastic; 옆 솔기 포켓), shirt_dress (A라인 티셔츠 드레스, flare_cm) · 길이 (mini, knee, midi, maxi) · 모든 티셔츠 소매/네크라인 옵션 |
beanie | 테두리, slouch |
loop | wrap (1 = 싱글, 2 = 두 번 접어 착용), 높이 |
원단: woven, corduroy, velvet, jersey, jersey_elastane, interlock, sweat, fleece, rib. 코듀로이와 벨벳은 파일 방향이 있습니다 (nap 옵션, 다른 원단의 경우에도 nap: true 사용 가능): 모든 주요 원단 조각은 상단이 같은 원단 방향을 향하도록 재단되고, 다림질 주의사항은 안쪽에서 다림질하도록 명시합니다.
모든 모듈: title (예: "Kordhose")은 조각, 설명서 및 파일 이름에서 의류 이름을 대체합니다.
핏: slim, normal, wide, oversized, harem.
시접 (모든 모듈): --seam-allowance 7.5 (mm, 모든 솔기), --hem-allowance 30 (접어 올린 밑단), --seam-allowance none (시접 없는 패턴: 솔기선만 그리고 각 조각에 추가할 시접을 나열). Spec 옵션: seam_allowance_mm, hem_allowance_mm, seam_allowance: "none". 접힌 가장자리는 0으로 유지됩니다. 고무줄 통, 안감 및 좁은 써클 스커트 밑단은 구성상의 시접을 유지합니다.
형식: rollNNN (페이지 너비 = 롤 너비 − 10 mm, 세로 방향; 조각이 롤보다 넓으면 자동으로 접착 표시가 있는 스트립으로 분할), a0, a1 (조각 전체, oversized 조각은 타일로 분할), a4, letter (10 mm 겹침 및 개요 페이지가 있는 타일), dxf / dxf14 (재단기 및 CAD용 DXF, AAMA 레이어, references/print_specs.md 참조), projector / projector_dark (프로젝터 재봉용 1:1 페이지 1장, 10 cm 눈금 그리드, 두꺼운 선).
항상 함께 작성: SVG 마스터 1:1, PNG 미리보기, 재단 배치 PNG, 봉제 설명서 (PDF: 그림이 포함된 책자: 의류 사진(있는 경우)과 요약이 있는 표지 페이지, 부품 목록, 원단 소요량(방향성 및 무방향성 원단 모두에 대해 2가지 레이아웃), 사용자 재봉틀 표, 모든 봉제 단계는 건설 순서와 같고 단계별 기계 및 솔기/밑단 시접이 명시되어 있으며 지퍼/단추 구멍/바탁에 대한 팁 포함).
참조
references/size_tables.md — 사이즈 표 (신체 측정) 및 출처목록, 신생아 및 유아, 아동/청소년, 여성, 남성, US/UK 변환표, 인형 옷.
references/print_specs.md — 페이지 지정에 대한 문서 형식 사양.
references/photo_guide.md — 모드 A 및 B에 대한 자세한 사진 분석 워크플로.
scripts/photo_analyze.py — 모드 A: 사진 분석, feature JSON 검증, 제안.
scripts/doll.py — 인형 옷 제도 규칙 (표준 인형 비율, 기본값).
scripts/profiles.py — 측정 프로필 및 재봉틀 워크숍 파일 관리.
scripts/generate.py — 기본 패턴 생성기 (제도, 검증, 배치, 렌더링).
scripts/reverse/ — 모드 B: 역설계 파이프라인.
scripts/measurements/ — 측정 완료, 사이즈 표.
scripts/i18n.py, scripts/i18n_de.py — 국제화 문자열.
프로필 및 측정값 재사용
# 프로필 저장 (측정 + 선택적으로 기계 및 원단)
python scripts/profiles.py save lena --measures '{"height": 140, "chest": 70, "waist": 60, "hip": 75, "inseam": 65}' --kind child --machines sewing,overlocker
# 프로필 표시
python scripts/profiles.py show lena
# 모든 프로필 목록
python scripts/profiles.py list
# 프로필 업데이트
python scripts/profiles.py update lena --measures '{"height": 142}'
# 프로필 삭제
python scripts/profiles.py delete lena
# 기계 설정
python scripts/profiles.py machines set sewing,overlocker,coverstitch
# 기계 표시
python scripts/profiles.py machines show
축척 참조 카드 (사진 복사용): assets/reference-card.pdf를 인쇄합니다 (10 cm 눈금자, 접는 선). 사용자가 직접 가져와 평평하게 놓인 의류 옆에 놓도록 요청합니다. 카드가 없으면 캘리브레이션이 불가능하며 제 기능을 발휘하지 못합니다.
의존성
requirements.txt (일반):
- numpy, scipy
- shapely
- opencv-contrib-python-headless
- reportlab
- matplotlib
- pillow
- pypdf