Community이미지github.com

Blueprint Maker

3D 모델(GLB/glTF/OBJ/STL/PLY/OFF) 또는 2D 이미지(사진, 렌더링, 그림, 로고)를 기술 청사진 시트나 데스크탑 배경화면으로 변환합니다. 숨은선 뷰, 치수선, 번호가 매겨진 지시선(callout), 제목 블록, 설명, 사양 표 및 설계 비고를 포함하며, 청색/흑연/용지 스타일을 지원합니다.

Blueprint Maker란 무엇인가요?

Blueprint Maker는 사용자가 '청사진', '기술 도면', 'tavola tecnica', 'progetto tecnico', 개략도, 엔지니어링 스타일 시트 또는 '기술 도면처럼 보이게' 요청할 때마다 사용되는 AI 에이전트 스킬입니다. 이 스킬은 업로드된 GLB/glTF/OBJ/STL 등의 3D 모델 또는 이미지로부터 실제 기술 도면 스타일의 PNG 이미지를 생성합니다. 3D 모델의 경우 실제 숨은선 직교 투영 뷰(큰 3/4 뷰와 측면, 평면, 정면 뷰)와 치수선, 번호가 매겨진 지시선을 포함한 다중 뷰 레이아웃을 제공합니다. 2D 이미지의 경우 라인 추출과 실루엣 외곽선, 경계 상자 치수, 지시선을 생성합니다. 두 파이프라인 모두 동일한 레이아웃 엔진(프레임, 패널, 제목 블록, 텍스트 맞춤)을 공유하여 일관된 결과를 보장합니다. 사용자는 파일, 객체 이름, 설명, 출력 해상도, 상단 안전 영역(배경화면용), 스타일, 언어 등 최소한의 입력만 제공하면 되며, AI가 inspect 스크립트를 실행하여 방향과 지시선 앵커 후보를 자동으로 검사한 후 spec.json 파일을 작성하고 빌드합니다. 주의사항으로는 입력 파일 없이는 청사진을 생성할 수 없으며, 2D 이미지에서는 실제 직교 뷰를 얻을 수 없고, 폰트는 일부 언어(CJK/아랍어/히브리어)를 완벽히 지원하지 않으며, 16:9 비율에 최적화되어 있다는 점이 있습니다. 이 스킬은 AI 에이전트(예: Claude Code, Cursor, Codex)의 스킬 디렉토리에서 사용되도록 설계되었습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shrugg0/blueprint-maker/tree/HEAD

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Blueprint Maker은(는) 무엇을 하나요?

BluePrint Maker는 다음 소스 중 하나로부터 완성된 청사진 스타일 시트(PNG, 기본 1920x1080)를 생성합니다:

  • 3D 모델 -> 실제 숨은선 직교 투영 뷰: 큰 3/4 뷰와 측면, 평면, 정면 뷰 및 측정된 치수선(3D 파이프라인), 또는
  • 2D 이미지 -> 실루엣 외곽선, 경계 상자 치수 및 지시선이 포함된 라인 추출(2D 파이프라인).

두 파이프라인 모두 하나의 레이아웃 엔진(프레임, 패널, 제목 블록, 텍스트 맞춤)을 공유하므로 결과물이 동일하게 보입니다.

할 수 있는 것과 없는 것 (관련 시 사용자에게 이 내용을 알리세요)

  • 파일이 없으면 청사진도 없습니다. 말로만 설명된 객체는 정확한 도면으로 변환될 수 없습니다. 3D 모델이나 이미지를 요청하세요. 기하학을 임의로 만들지 마십시오.
  • 3D는 실제 직교 뷰를 제공하지만, 2D는 불가능합니다. 단일 사진은 하나의 시점만 있으므로, 2D 파이프라인은 하나의 라인 아트 뷰만 생성하며 정면/측면/평면 뷰를 생성하지 않습니다.
  • 라인 품질은 메시/이미지에 따라 달라집니다. 수십만 개의 삼각형으로 이루어진 게임 추출 메시는 빽빽한 라인을 생성합니다. 이는 좋은 자동 베이스일 뿐, 손으로 만든 삽화 품질은 아닙니다.
  • 사용자가 제공하지 않으면 축척(scale)을 알 수 없습니다. scale_ref (실제 측정값)가 제공되지 않는 한, 치수는 모델 단위(u) 또는 픽셀(px)로 표시됩니다. 추측한 실제 세계 크기를 사실로 제시하지 마십시오.
  • 폰트: 번들 텍스트 렌더링은 DejaVu(라틴, 그리스, 키릴 문자)를 사용합니다. CJK/아랍어/히브리어 텍스트는 올바르게 렌더링되지 않습니다.
  • 레이아웃은 16:9 비율로 설계되었습니다(1920x1080, 2560x1440, 1920x1200에서 테스트됨). 다른 종횡비는 패널 레이아웃을 늘리므로 출력물을 확인하십시오.
  • 게임/영화에서 추출한 에셋은 타인의 IP입니다. 개인 배경화면으로는 괜찮지만, 재배포하지 말라고 언급하세요.

0단계 - 입력 수집 (누락된 것만 한 번에 질문)

  1. 파일(모델 또는 이미지).
  2. 객체의 이름과 설명 - 또는 초안 작성을 제안합니다. 설명은 렌더링에 실제로 보이는 것과 일치해야 합니다 (먼저 확인하세요). 바퀴 달린 차량에 대한 설명을 네 발 달린 생물에 사용하면 시트의 신뢰성을 떨어뜨립니다. 사용자의 텍스트가 기하학과 일치하지 않으면 그렇게 말하고 다시 작성하십시오.
  3. 출력 해상도와 배경화면인 경우 상단 안전 영역(데스크탑 바가 상단을 덮음). 기본 top_safe = 76(1080p에서 프레임이 76px 아래에서 시작, 랩탑에서 약 1cm 바 여유). 사용자가 센티미터로 제공하면 변환: px_per_cm = 화면_너비_px / 화면_너비_cm (24인치 1080p 모니터에서 약 36px/cm, 15.6인치 랩탑에서 약 56px/cm). 바 높이(px) + 약 12를 사용하십시오.
  4. 스타일: blueprint (기본, 파란색), graphite (어두운 배경에 주황색 선), paper (밝은, 인쇄 가능).
  5. 텍스트 언어 (기본 영어; 사양 텍스트를 해당 언어로 작성).

사용자를 심문하지 마십시오: 이미 충분히 제공했다면 기본값으로 진행하고 가정을 명시하십시오.

1단계 - 설정

pip install trimesh numpy scipy networkx pillow opencv-python-headless matplotlib --break-system-packages -q
# 선택 사항, 700k 면 이상 메시 전용: pip install fast-simplification --break-system-packages

모든 스크립트는 이 파일 옆의 scripts/ 디렉토리에 있습니다. SKILL_DIR을 스킬 폴더로 바꾸십시오.

2A단계 - 3D 모델

검사 (항상 먼저 수행 - 이미지 하나, 명령어 하나)

python3 SKILL_DIR/scripts/blueprint3d.py inspect MODEL.glb --out /home/claude/insp

view로 inspect.png를 열고(연락처 시트 하나입니다) 출력된 텍스트를 읽으십시오:

  • 상단 행 = 원시 축 투영: 어느 원시 축이 위쪽이고 객체가 어느 방향을 향하는지 파악하십시오.
  • 하단 = 번호가 매겨진 앵커 후보(노란색)가 있는 3/4 뷰. 콘솔에는 각 cand N이 픽셀 및 표준 위치와 함께 나열됩니다. 희미한 그리드는 1500x860 참조 픽셀입니다(pick으로 사용 가능).

방향 플래그(표준 프레임: +y 위, 객체 정면이 -x 방향): --up +Y (GLB/glTF의 기본값; 다른 형식은 +Z) 및 --front -X|+X|+Z|-Z|.... 출력된 힌트는 가장 긴 수평 축을 지정합니다. 정면은 측면 뷰의 왼쪽에 있어야 하므로, 머리/정면이 반대쪽에 있으면 부호를 바꾸십시오. 방향이 잘못된 경우 다른 값으로 inspect를 한 번 다시 실행하십시오. 최종 값을 사양에 "up" 및 "front"로 기록하십시오.

inspect는 또한 --az, --el(기본 58 / 20) 및 --k(후보 수, 기본 16)를 사용합니다. 사양에 view az/el을 동일하게 사용하십시오, 그렇지 않으면 후보 번호가 일치하지 않습니다.

사양 작성

spec.json을 생성하십시오(아래 스키마, assets/example_spec_3d.json에 작업 예제). 각 지시선에 대해 제목, 짧은 설명 및 하나의 앵커를 제공하십시오:

  • "cand": N - inspect.png에서 번호가 매겨진 후보 (가장 저렴함: 픽셀 추측 없음). 후보는 보이는 표면에 분포되어 있으므로 점이 실제로 지명하는 부품에 있는지 확인하십시오. 가까운 후보가 없으면 pick을 사용하십시오.
  • "pick": [px, py] - 1500x860 참조 뷰( inspect.png의 그리드)의 픽셀
  • "extreme": "+x" | "-x" | "+y" | "-y" | "+z" | "-z" - 표준 프레임의 극점(정면은 -x, 기하학 뒤에 숨겨져 있을 수 있음)
  • "point": [x, y, z] - 정확한 표준 좌표

"label"을 설정하지 마십시오 (꼭 필요한 경우 제외): 레이블 위치는 자동으로 선택됩니다(텍스트는 모델 실루엣과 다른 레이블에서 떨어지도록, 패널 측면의 깔끔한 열, 짧고 교차하지 않는 리더선). "label": [x, y] (1920x1080 참조 좌표, 메인 패널 x 40-1290, y 96-826)는 수동 위치를 강제하며 아래 감사에서 확인됩니다.

빌드

python3 SKILL_DIR/scripts/blueprint3d.py build MODEL.glb spec.json --out /mnt/user-data/outputs/blueprint.png

페인팅된 뷰는 디스크(~/.cache/blueprint-maker 또는 $BP_CACHE)에 캐시되며, 모델 + 뷰 + 스타일별로 키가 지정됩니다. 텍스트, 레이블, 지시선 또는 팔레트와 무관한 콘텐츠를 변경하면 다시 페인팅하는 대신 약 2초 안에 재구성됩니다. --no-cache 또는 "cache": false는 이를 비활성화합니다.

레이아웃: "layout": "multi" (기본: 큰 3/4 뷰 + 측면/평면/정면 + 치수) 또는 "single" (3/4 뷰만, 더 넓게).

사양 잠금 (사양과 모델 간 바인딩)

cand, pick 또는 extreme으로 작성된 앵커는 해당 앵커가 선택된 모델, 방향 및 뷰에 대해서만 의미가 있습니다. 첫 번째 빌드 시 사양 옆에 <spec>.lock.json이 생성됩니다: 각 앵커가 확인된 3D 점, 모델의 기하학적 지문, 앵커에 영향을 미치는 설정(up, front, view az/el, candidates, max_faces). 이후의 모든 빌드는 앵커를 다시 확인하고 비교합니다:

  • 앵커가 이동함 (다른 모델, 방향 또는 뷰) -> 빌드 실패 error: spec is not bound to this model ... 메시지와 함께 각 지시선과 변경 사항을 명시합니다. 사양 설정으로 inspect를 다시 실행하고 앵커를 다시 선택한 다음 --relock으로 빌드하십시오(또는 원래 모델/설정을 복원).
  • 모델이 다르지만 모든 앵커가 여전히 같은 위치에 있는 경우(예: 무손실 재내보내기) -> WARNING: binding: ...; 확인 후 --relock.
  • 의도적으로 앵커를 편집한 경우(동일한 모델/설정) -> 잠금 항목이 자동으로 업데이트됩니다.

--no-lock은 검사를 건너뜁니다(권장하지 않음). 잠금 파일을 사양과 함께 보관하십시오(커밋). 무시하여 바인딩 오류를 "수정"하지 마십시오. 그러면 레이블이 잘못된 부분을 가리키게 됩니다.

2B단계 - 2D 이미지

python3 SKILL_DIR/scripts/blueprint2d.py inspect IMAGE.png --out /home/claude/insp

출력된 마스크 범위(배경 제거는 평평한 배경 또는 투명 PNG에서 작동함; 그렇지 않으면 "none" 보고)를 읽은 다음 view로 inspect.png를 확인하십시오: 왼쪽 = 소스 픽셀(point_px용)로 레이블이 지정된 그리드가 있는 소스, 오른쪽 = 라인 추출기가 보는 것. 지시선 레이블도 여기서 자동으로 배치됩니다("label"은 생략).

spec.json을 작성하고(assets/example_spec_2d.json 참조) 빌드하십시오:

python3 SKILL_DIR/scripts/blueprint2d.py build IMAGE.png spec.json --out /mnt/user-data/outputs/blueprint.png

튜닝: "detail" 0.3(깔끔하고 굵게) ~ 0.8(복잡하게); "mode": "edges" (Canny, 사진/렌더링) 또는 "sketch" (XDoG, 부드러운/저대비 아트); "bg": "none"으로 전체 프레임 유지, 또는 "mask": "path.png"로 수동 실루엣; "crop": [x0,y0,x1,y1]로 대상을 분리; "fill" 0-1로 반투명 몸체 색조.

3단계 - 결과 확인 (건너뛰지 말고, 시간을 적게 들이세요)

빌더가 WARNING: 줄을 출력합니다. 먼저 읽으십시오 - 이는 자동 감사이므로 일반적으로 PNG를 view로 확인하는 것은 마지막에 한 번만 하면 됩니다:

  • error: spec is not bound to this model - 위의 "사양 잠금" 참조; 경고가 아닌 하드 오류입니다.
  • layout: ... - 지시선 텍스트가 모델과 겹침, 두 레이블이 겹침, 리더선이 다른 레이블의 텍스트 / 다른 리더선 / 자체 텍스트와 교차, 텍스트가 패널 외부, 축 삼중창에 텍스트가 있음. 수동 "label"을 제거하거나(배치 프로그램이 결정하도록), 앵커를 변경하거나, 텍스트를 줄여서 수정하십시오.
  • description / specs / notes: shrunk to Npx 또는 does NOT fit - 읽을 수 없는 텍스트를 수락하지 말고 텍스트를 줄이거나 행을 삭제하십시오.

그런 다음 최종 PNG를 view로 한 번 확인하고 감사가 알 수 없는 것을 검증하십시오:

  1. 모델이 모든 뷰에서 의도된 방향으로 똑바로 서 있고 치수가 타당한지 확인합니다.
  2. 각 지시선 점이 실제로 텍스트가 지명하는 부품에 있는지 확인합니다.
  3. 상단 안전 영역이 비어 있는지 확인합니다(배경화면 사용).

문제가 있으면 사양(앵커, view.az/view.el, 텍스트 길이, feature_deg)을 편집하고 재구성하십시오. 캐시 덕분에 몇 초면 완료됩니다. 일반적인 총 과정: 1회 검사 + 1-2회 빌드, 2-3회 이미지 확인.

4단계 - 제공

/mnt/user-data/outputs/에 저장하고 present_files를 호출한 다음 간략히 응답하십시오. 응답에는 항상 다음을 명시하십시오:

  • 당신이 작성한 텍스트(설명, 사양, 비고, 지시선 기능)와 파일에서 측정된 것을 구분하여 - 사용자는 자신이 중요하게 여기는 작성된 기술적 주장을 대체해야 합니다.
  • 단위/축척 가정.
  • 모든 WARNING 또는 눈에 보이는 제한 사항(빽빽한 선, 숨겨진 앵커, 종횡비).

토큰 사용량 낮게 유지하기

  • 하나의 inspect 이미지, 하나의 최종 view; 각 조정 후 다시 확인하는 대신 출력된 감사에 의존하십시오.
  • cand 앵커를 사용하고 label은 생략하십시오. 픽셀 좌표를 수동으로 조정하지 마십시오.
  • 사양을 한 번에 완전히(앵커, 텍스트) 작성한 다음 빌드하십시오. 감사나 최종 확인에서 지적된 필드만 편집하십시오.

주석 텍스트 작성

  • 렌더링에서 보이는 것만 설명하십시오. 기능적 주장은 그럴듯하고 일반적으로 유지하십시오. 객체가 프랜차이즈에서 온 것이라면 확실하지 않은 설정 정보를 언급하지 마십시오.
  • 지시선 제목: 2-4단어. 지시선 텍스트: 짧은 문장 하나(약 70자). 비고: 3-5개의 짧은 항목. 설명: 약 600-700자. 사양 행: 값은 ~45자 미만.
  • 표현을 기술적이고 일관되게 유지하십시오: 명칭, 사양 번호, 개정, 단위.

사양 참고

공통 키 (두 파이프라인 모두):

키의미기본값
title제목 블록의 큰 제목"UNTITLED"
subtitle제목 아래 줄""
designation설명 상자 상단의 굵은 줄""
description설명 상자용 문단(상자 생략)
specs사양 테이블용 [["Label","Value"], ...](생략)
notes비고 상자용 문자열 리스트 (A, B, C...)(생략)
notes_title해당 상자의 제목"DESIGN REMARKS" / "NOTES"
callouts지시선 객체 리스트 (아래 참조)없음
spec_no, class, rev, sheet, scale제목 블록 필드 (비어 있는 것은 건너뜀)시트 "01 / 01", 축척 "AS SHOWN"
fields제목 블록 필드의 전체 재정의: [["KEY","value"], ...]자동
width, height출력 크기(px)1920, 1080
top_safe프레임이 시작되는 y(1080p 기준); 데스크탑 바 영역 확보76
paletteblueprint, graphite, paperblueprint
scale_ref실제 세계 치수를 얻기 위한 {"axis": "length|height|width" (3D) or "width|height" (2D), "value": 3.2, "unit": "m"}모델 단위 / px

3D 전용: up, front, layout (multi/single), view {"az": 58, "el": 20, "margin": 0.045}, candidates (cand에 사용된 k, 기본 16; inspect --k와 일치해야 함), feature_deg (에지 각도 임계값, 기본 38; 선을 줄이려면 50-60으로 높임), feature_deg_small (기본 44, 측면/평면/정면 뷰), max_faces (기본 700000), cache (기본 true).

2D 전용: mode, detail, bg, mask, crop, fill, fit_subject (대상에 맞게 자르기, 기본 true), view_title, view_sub.

지시선 객체: {"title": "...", "desc": "..."} 및 앵커 - 3D: cand / pick / extreme / point; 2D: point_px: [x, y] (소스 이미지 픽셀) - 선택적으로 "label": [x, y]로 수동 위치 강제.

문제 해결

  • 모델이 옆으로 / 거꾸로 / 반대 방향: --up / --front로 inspect를 다시 실행하십시오. inspect.png의 상단 행을 확인하십시오.
  • 선이 회색 덩어리로만 보임: feature_deg를 높이십시오(50-65). 매우 조밀한 메시의 경우 max_faces를 더 낮게 설정하십시오(fast-simplification 필요).
  • 부품 누락 또는 구멍이 뚫려 보임: 메시가 수밀(watertight)이 아니거나 면이 뒤집혀 있습니다. 페인터 알고리즘 렌더러는 이를 어느 정도 허용하지만, 게임 에셋의 내부 부품이 비쳐 보일 수 있습니다. view.margin을 낮추거나 다른 az를 시도하십시오.
  • 매우 느림: 약 700k 면 이상의 메시는 fast-simplification이 설치된 경우 자동으로 간소화됩니다. 그렇지 않으면 빌드에 몇 분이 걸릴 수 있습니다.
  • 2D 마스크가 잘못되었거나 조각남: 대상 색상이 배경과 너무 가깝습니다. "bg": "none", crop을 사용하거나 mask PNG(흰색 = 대상)를 제공하십시오.
  • 텍스트 경고: 텍스트를 줄이십시오. 글꼴 크기를 수동으로 낮추지 마십시오.
  • 후보 번호가 그림과 일치하지 않음 / spec is not bound to this model: 모델 파일, up/front, 사양 view az/el 또는 candidates가 사양이 작성된 것과 다릅니다. 사양 설정으로 inspect를 다시 실행하고 앵커를 다시 선택한 다음 --relock으로 빌드하십시오.
  • 자동 레이블 배치가 계속 실패함 ("충돌 없는 위치 없음"): 패널에 비해 지시선이 너무 많거나 깁니다. 설명을 줄이거나, 지시선을 삭제하거나, 더 넓은 패널을 위해 "layout": "single"을 사용하십시오.
  • 스크립트 편집 후 출력이 예전 것처럼 보임: 캐시 키는 렌더러 코드를 포함하지만, 확실하지 않으면 --no-cache로 한 번 실행하십시오.

파일

  • scripts/binding.py - 사양 잠금 파일(lockfile) 처리 (spec.lock.json).
  • assets/example_spec_3d.json, assets/example_spec_2d.json - 각 파이프라인에 대한 완전한 사양 예제.
  • scripts/blueprint3d.py, scripts/blueprint2d.py - 메인 진입점.

이 파일의 나머지 부분(3D 렌더링 스크립트 세부 정보 등)은 이 SKILL.md 내의 추가 지침에 포함되어 있습니다.

관련 스킬