CommunityBildgithub.com

Blueprint Maker (Blaupausen-Generator)

Verwandelt ein 3D-Modell (GLB/glTF/OBJ/STL/PLY/OFF) oder ein beliebiges 2D-Bild (Foto, Render, Zeichnung, Logo) in ein technisches Blaupausen-Blatt oder einen Desktop-Hintergrund im Blueprint-, Graphit- oder Papier-Stil – mit verdeckten Linienansichten, Maßlinien, nummerierten Beschriftungen, Schriftfeld, Beschreibung, Spezifikationstabelle und Designbemerkungen.

Was ist Blueprint Maker (Blaupausen-Generator)?

Blueprint Maker ist ein KI-Agenten-Skill, der aus 3D-Modellen oder 2D-Bildern professionelle technische Zeichnungen im Blaupausen-Stil erstellt. Er unterstützt zwei Hauptpipelines: eine 3D-Pipeline, die automatisch orthografische Ansichten (3/4-Ansicht, Seiten-, Drauf- und Vorderansicht) mit Maßlinien aus GLB/glTF/OBJ/STL/PLY/OFF-Dateien generiert, und eine 2D-Pipeline, die aus Fotos, Renders oder Zeichnungen Linienkunst mit Silhouettenumriss, Abmessungen und Beschriftungen extrahiert. Beide Pipelines verwenden eine gemeinsame Layout-Engine für Schriftfeld, Spezifikationstabelle und Designbemerkungen. Der Skill bietet drei Stile (Blueprint blau, Graphit dunkel mit orangefarbenen Linien, Papier hell) und erzeugt standardmäßig PNG-Dateien in 1920x1080. Er ist besonders nützlich für Ingenieure, Designer, Bastler und Fans, die technische Zeichnungen von Objekten, Fahrzeugen, Kreaturen oder Gebäuden erstellen möchten, selbst wenn nur ein 2D-Bild vorhanden ist. Der Skill läuft auf jeder Linux-Umgebung mit Python und den entsprechenden Bibliotheken und ist für Claude Code, Cursor und Codex optimiert.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shrugg0/blueprint-maker/tree/HEAD

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Blaupausen-Generator (Blueprint Maker)

Erzeugt ein fertiges Blaupausen-Blatt (PNG, Standard 1920x1080) aus entweder:

  • einem 3D-Modell → echte orthografische Ansichten mit verdeckten Linien: eine große 3/4-Ansicht sowie Seiten-, Drauf- und Vorderansicht mit gemessenen Maßlinien (3D-Pipeline), oder
  • einem 2D-Bild → Linienextraktion mit Silhouettenumriss, Begrenzungsrahmen-Maßen und Beschriftungen (2D-Pipeline).

Beide Pipelines teilen sich eine gemeinsame Layout-Engine (Rahmen, Panels, Schriftfeld, Textanpassung), sodass das Ergebnis gleich aussieht.

Was es kann und nicht kann (sagen Sie dies dem Benutzer, wenn relevant)

  • Keine Datei, keine Blaupause. Ein Objekt, das nur in Worten beschrieben wird, kann nicht in eine genaue Zeichnung umgewandelt werden. Fragen Sie nach einem 3D-Modell oder einem Bild. Erfinden Sie keine Geometrie.
  • 3D liefert echte orthografische Ansichten; 2D nicht. Ein einzelnes Foto hat einen Blickwinkel, daher produziert die 2D-Pipeline eine Linienkunst-Ansicht, nicht Vorder-/Seiten-/Draufsicht.
  • Die Linienqualität hängt vom Netz/Bild ab. Aus Spielen extrahierte Netze mit Hunderttausenden von Dreiecken ergeben dichte Linien; es ist eine gute automatische Basis, keine handgezeichnete Illustration.
  • Der Maßstab ist unbekannt, es sei denn, der Benutzer gibt ihn an. Maße sind in Modelleinheiten (u) oder Pixeln (px), sofern nicht ein scale_ref (eine echte Messung) angegeben wird. Präsentieren Sie niemals eine geschätzte reale Größe als Tatsache.
  • Schriftarten: Die gebündelte Textdarstellung verwendet DejaVu (Lateinisch, Griechisch, Kyrillisch). CJK/Arabisch/Hebräischer Text wird nicht korrekt dargestellt.
  • Layout ist für 16:9 ausgelegt (getestet mit 1920x1080, 2560x1440 und 1920x1200). Andere Seitenverhältnisse strecken das Panel-Layout; überprüfen Sie die Ausgabe.
  • Gerippte Spiel-/Film-Assets sind das geistige Eigentum von jemandem. In Ordnung für einen persönlichen Hintergrund; erwähnen Sie, dass sie nicht weiterverteilt werden sollen.

Schritt 0 – Eingaben sammeln (einmal fragen, nur was fehlt)

  1. Die Datei (Modell oder Bild).
  2. Name des Objekts und eine Beschreibung – oder bieten Sie an, einen Entwurf zu erstellen. Die Beschreibung muss mit dem übereinstimmen, was tatsächlich im Render zu sehen ist (sehen Sie es sich zuerst an). Eine Beschreibung eines Radfahrzeugs auf einem vierbeinigen Lebewesen zerstört die Glaubwürdigkeit des Blattes; wenn der Text des Benutzers nicht mit der Geometrie übereinstimmt, sagen Sie das und schreiben Sie ihn um.
  3. Ausgabeauflösung und die obere Sicherheitszone, wenn es sich um einen Desktop-Hintergrund handelt (eine Desktop-Leiste bedeckt den oberen Bereich). Standard top_safe = 76 (Rahmen beginnt 76 px tiefer bei 1080p, Platz für eine Leiste von ~1 cm auf einem Laptop). Wenn der Benutzer Zentimeter angibt, umrechnen: px_pro_cm = Bildschirmbreite_px / Bildschirmbreite_cm (etwa 36 px/cm auf einem 24" 1080p-Monitor, etwa 56 px/cm auf einem 15,6" Laptop). Verwenden Sie Leistenhöhe in px + ~12.
  4. Stil: blueprint (Standard, blau), graphite (dunkel mit orangefarbenen Linien), paper (hell, druckbar).
  5. Sprache des Textes (Standard Englisch; schreiben Sie den Spezifikationstext in dieser Sprache).

Verhören Sie den Benutzer nicht: Wenn er bereits genug angegeben hat, fahren Sie mit den Standardeinstellungen fort und geben Sie Ihre Annahmen an.

Schritt 1 – Einrichtung

pip install trimesh numpy scipy networkx pillow opencv-python-headless matplotlib --break-system-packages -q
# optional, nur für Netze > 700k Flächen: pip install fast-simplification --break-system-packages

Alle Skripte befinden sich in scripts/ neben dieser Datei. Ersetzen Sie SKILL_DIR mit dem Skill-Ordner.

Schritt 2A – 3D-Modell

Inspizieren (immer zuerst durchführen – ein Bild, ein Befehl)

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

Öffnen Sie inspect.png mit view (es ist ein einzelnes Kontaktblatt) und lesen Sie den gedruckten Text:

  • Obere Reihe = rohe Achsenprojektionen: Finden Sie heraus, welche rohe Achse oben ist und in welche Richtung das Objekt blickt.
  • Unten = die 3/4-Ansicht mit nummerierten Ankerkandidaten (gelb). Die Konsole listet jeden cand N mit seiner Pixel- und kanonischen Position. Das schwache Raster ist in 1500x860 Referenzpixeln (als pick verwendbar).

Orientierungsflags (kanonischer Rahmen: +y oben, Objektfront in Richtung -x): --up +Y (Standard für GLB/glTF; +Z für andere Formate) und --front -X|+X|+Z|-Z|.... Der gedruckte Hinweis benennt die längste horizontale Achse; die Front muss LINKS in der Seitenansicht sein, also kehren Sie das Vorzeichen um, wenn sich der Kopf/die Front auf der anderen Seite befindet. Wenn die Orientierung falsch war, führen Sie inspect einmal mit anderen Werten erneut aus. Tragen Sie die endgültigen Werte in die Spezifikation als "up" und "front" ein.

inspect akzeptiert auch --az, --el (Standard 58 / 20) und --k (Anzahl der Kandidaten, Standard 16). Verwenden Sie dieselben view az/el in der Spezifikation, sonst stimmen die Kandidatennummern nicht.

Spezifikation schreiben

Erstellen Sie spec.json (Schema unten, funktionierendes Beispiel in assets/example_spec_3d.json). Geben Sie für jede Beschriftung einen Titel, eine kurze Beschreibung und einen Anker an:

  • "cand": N – ein nummerierter Kandidat aus inspect.png (am günstigsten: kein Pixelraten). Kandidaten sind über die sichtbare Oberfläche verteilt, also überprüfen Sie, ob der Punkt wirklich auf dem Teil landet, den Sie benennen; wenn kein Kandidat nah genug ist, verwenden Sie pick.
  • "pick": [px, py] – Pixel in der 1500x860 Referenzansicht (das Raster in inspect.png)
  • "extreme": "+x" | "-x" | "+y" | "-y" | "+z" | "-z" – Extrempunkt im kanonischen Rahmen (Front ist -x; kann hinter Geometrie verborgen sein)
  • "point": [x, y, z] – exakte kanonische Koordinaten

Setzen Sie "label" nur, wenn nötig: Beschriftungspositionen werden dann automatisch gewählt (Text bleibt von der Modellsilhouette und anderen Beschriftungen entfernt, saubere Spalten an den Panel-Seiten, kurze, sich nicht kreuzende Linien). "label": [x, y] (1920x1080 Referenzkoordinaten, Hauptpanel x 40-1290, y 96-826) erzwingt eine manuelle Position und wird von der folgenden Prüfung überprüft.

Erstellen

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

Die gemalten Ansichten werden auf der Festplatte zwischengespeichert (~/.cache/blueprint-maker oder $BP_CACHE), indiziert nach Modell + Ansicht + Stil. Das Ändern von Text, Beschriftungen, Beschriftungen oder palettenunabhängigem Inhalt erstellt in etwa 2 s neu, anstatt neu zu malen; --no-cache oder "cache": false deaktiviert es.

Layouts: "layout": "multi" (Standard: große 3/4-Ansicht + Seiten-/Drauf-/Vorderansicht + Maße) oder "single" (nur die 3/4-Ansicht, breiter).

Spec-Lock (Bindung zwischen Spezifikation und Modell)

Anker, die als cand, pick oder extreme geschrieben wurden, sind nur für das Modell, die Orientierung und die Ansicht, für die sie ausgewählt wurden, von Bedeutung. Der erste Build schreibt <spezifikation>.lock.json neben die Spezifikation: den 3D-Punkt, in den jeder Anker aufgelöst wurde, einen geometrischen Fingerabdruck des Modells und die Einstellungen, die Anker beeinflussen (up, front, Ansicht az/el, candidates, max_faces). Jeder spätere Build löst die Anker erneut auf und vergleicht:

  • Anker verschoben (anderes Modell, andere Orientierung oder Ansicht) -> Build schlägt fehl mit error: spec is not bound to this model ..., wobei jede Beschriftung und die Änderung benannt werden. Führen Sie inspect mit den Einstellungen der Spezifikation erneut aus, wählen Sie die Anker neu aus und erstellen Sie dann mit --relock (oder stellen Sie das ursprüngliche Modell/die ursprünglichen Einstellungen wieder her);
  • Modell unterscheidet sich, aber jeder Anker landet immer noch an derselben Stelle (z. B. ein verlustfreier Re-Export) -> WARNING: binding: ...; überprüfen, dann --relock;
  • Sie haben einen Anker absichtlich bearbeitet (gleiches Modell/gleiche Einstellungen) -> der Lock-Eintrag wird stillschweigend aktualisiert.

--no-lock überspringt die Prüfung (nicht empfohlen). Bewahren Sie die Lock-Datei mit der Spezifikation auf (commiten Sie sie). Beheben Sie einen Bindungsfehler niemals, indem Sie ihn ignorieren: Die Beschriftungen würden auf die falschen Teile zeigen.

Schritt 2B – 2D-Bild

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

Lesen Sie die gedruckte Maskenabdeckung (Hintergrundentfernung funktioniert für einfarbige Hintergründe oder transparente PNGs; andernfalls wird "none" gemeldet), dann view inspect.png: links = die Quelle mit einem Raster, das in Quellpixeln beschriftet ist (für point_px), rechts = was der Linienextraktor sieht. Beschriftungen werden auch hier automatisch platziert (lassen Sie "label" weg).

Schreiben Sie spec.json (siehe assets/example_spec_2d.json) und erstellen Sie:

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

Feinabstimmung: "detail" 0.3 (sauber, fett) bis 0.8 (überladen); "mode": "edges" (Canny, Fotos/Render) oder "sketch" (XDoG, weiche/niedrigkontrastreiche Kunst); "bg": "none" um den gesamten Rahmen zu behalten, oder "mask": "pfad.png" für eine handgemachte Silhouette; "crop": [x0,y0,x1,y1] um das Motiv zu isolieren; "fill" 0-1 für den durchscheinenden Körperfarbton.

Schritt 3 – Ergebnis überprüfen (nicht überspringen, aber günstig halten)

Der Builder druckt WARNING:-Zeilen. Lesen Sie sie zuerst – sie sind eine automatische Prüfung, daher müssen Sie das PNG normalerweise nur einmal am Ende mit view ansehen:

  • error: spec is not bound to this model – siehe „Spec-Lock" oben; dies ist ein harter Fehler, keine Warnung.
  • layout: ... – Beschriftungstext überlappt das Modell, zwei Beschriftungen überlappen sich, eine Linie kreuzt den Text einer anderen Beschriftung / eine andere Linie / ihren eigenen Text, Text außerhalb des Panels, Text auf der Achsentriade. Beheben Sie dies, indem Sie das manuelle "label" entfernen (lassen Sie den Platzierer entscheiden), den Anker ändern oder den Text kürzen.
  • description / specs / notes: auf Npx verkleinert oder passt NICHT – kürzen Sie den Text oder entfernen Sie Zeilen, anstatt unlesbaren Text zu akzeptieren.

Dann sehen Sie sich das endgültige PNG einmal mit view an und überprüfen Sie, was die Prüfung nicht wissen kann:

  1. Modell aufrecht und in der beabsichtigten Weise in allen Ansichten ausgerichtet; Maße plausibel.
  2. Jeder Beschriftungspunkt landet wirklich auf dem Teil, dessen Name im Text steht.
  3. Die obere Sicherheitszone ist leer (Desktop-Hintergrund-Verwendung).

Wenn etwas nicht stimmt, bearbeiten Sie die Spezifikation (Anker, view.az/view.el, Textlänge, feature_deg) und erstellen Sie neu; mit dem Cache dauert dies Sekunden. Üblich insgesamt: 1 Inspizieren + 1-2 Erstellen, 2-3 Bildansichten.

Schritt 4 – Liefern

Speichern Sie unter /mnt/user-data/outputs/, rufen Sie present_files auf, antworten Sie dann kurz. Geben Sie in der Antwort immer an:

  • welche Texte Sie erfunden haben (Beschreibungen, Spezifikationen, Bemerkungen, Beschriftungsfunktionen) im Vergleich zu dem, was aus der Datei gemessen wurde – der Benutzer sollte erfundene technische Behauptungen, die ihm wichtig sind, ersetzen;
  • die Einheiten-/Maßstabsannahme;
  • alle WARNING oder sichtbaren Einschränkungen (dichte Linien, versteckter Anker, Seitenverhältnis).

Geringer Token-Verbrauch

  • Ein inspect-Bild, eine endgültige view; verlassen Sie sich auf die gedruckte Prüfung, anstatt nach jeder Anpassung erneut zu sehen.
  • Verwenden Sie cand-Anker und lassen Sie label weg; passen Sie Pixelkoordinaten nicht von Hand an.
  • Schreiben Sie die Spezifikation einmal vollständig (Anker, Texte) und erstellen Sie dann; bearbeiten Sie nur die Felder, die von der Prüfung oder der endgültigen Ansicht markiert wurden.

Schreiben des Anmerkungstextes

  • Beschreiben Sie nur, was in den Renders sichtbar ist; halten Sie funktionale Behauptungen plausibel und allgemein. Wenn das Objekt aus einem Franchise stammt, geben Sie keine Lore-Details an, bei denen Sie sich nicht sicher sind.
  • Beschriftungstitel: 2-4 Wörter. Beschriftungstext: ein kurzer Satz (etwa 70 Zeichen). Anmerkungen: 3-5 kurze Punkte. Beschreibung: etwa 600-700 Zeichen. Spezifikationszeilen: Wert unter ~45 Zeichen.
  • Halten Sie den Wortlaut technisch und konsistent: Bezeichnung, Spezifikationsnummer, Revision, Einheiten.

Spec-Referenz

Gemeinsame Schlüssel (beide Pipelines):

SchlüsselBedeutungStandard
titleGroßer Titel im Schriftfeld"UNTITLED"
subtitleZeile unter dem Titel""
designationFette Zeile oben im Beschreibungsfeld""
descriptionAbsatz für das Beschreibungsfeld(Feld weggelassen)
specs[["Label","Wert"], ...] für die Spezifikationstabelle(weggelassen)
notesListe von Zeichenfolgen für das Bemerkungsfeld (A, B, C...)(weggelassen)
notes_titleÜberschrift dieses Feldes"KONSTRUKTIONSHINWEISE" / "HINWEISE"
calloutsListe von Beschriftungsobjekten (unten)keine
spec_no, class, rev, sheet, scaleSchriftfeld-Felder (leere werden übersprungen)Blatt "01 / 01", Maßstab "WIE DARGESTELLT"
fieldsVollständige Überschreibung der Schriftfeld-Felder: [["SCHLÜSSEL","wert"], ...]auto
width, heightAusgabegröße in px1920, 1080
top_safey (bei 1080p), wo der Rahmen beginnt; Desktop-Leiste freihalten76
paletteblueprint, graphite, paperblueprint
scale_ref`{"axis": "lengthheight

Nur 3D: up, front, layout (multi/single), view {"az": 58, "el": 20, "margin": 0.045}, candidates (k verwendet für cand, Standard 16; muss gleich inspect --k sein), feature_deg (Kantenwinkelschwellwert, Standard 38; auf 50-60 erhöhen für weniger Linien), feature_deg_small (Standard 44, Seiten-/Drauf-/Vorderansicht), max_faces (Standard 700000), cache (Standard true).

Nur 2D: mode, detail, bg, mask, crop, fill, fit_subject (auf Motiv zuschneiden, Standard true), view_title, view_sub.

Beschriftungsobjekt: {"title": "...", "desc": "..."} plus der Anker – 3D: cand / pick / extreme / point; 2D: point_px: [x, y] in Quellbild-Pixeln – und optional "label": [x, y] um eine manuelle Position zu erzwingen.

Fehlerbehebung

  • Modell seitwärts / auf dem Kopf / weggerichtet: Führen Sie inspect mit --up / --front erneut aus; überprüfen Sie die obere Reihe von inspect.png.
  • Nur ein grauer Linienklumpen: Erhöhen Sie feature_deg (50-65); setzen Sie bei einem sehr dichten Netz auch max_faces niedriger (benötigt fast-simplification).
  • Fehlende Teile oder durchsichtige Löcher: Das Netz ist nicht wasserdicht oder hat invertierte Flächen; der Painter-Algorithmus-Renderer toleriert dies, aber interne Teile von Spiel-Assets können durchscheinen. Verringern Sie view.margin oder versuchen Sie einen anderen az.
  • Sehr langsam: Netze über ~700k Flächen werden automatisch dezimiert, wenn fast-simplification installiert ist; andernfalls kann ein Build Minuten dauern.
  • 2D-Maske falsch oder fragmentiert: Motivfarbe ist dem Hintergrund zu ähnlich. Verwenden Sie "bg": "none", ein crop oder stellen Sie eine mask PNG bereit (weiß = Motiv).
  • Textwarnungen: Kürzen Sie den Text; senken Sie Schriftgrößen nicht von Hand.
  • Kandidatennummern stimmen nicht mit dem Bild überein / spec is not bound to this model: Die Modelldatei, up/front, die Spezifikations view az/el oder candidates unterscheiden sich von denen, für die die Spezifikation geschrieben wurde. Führen Sie inspect mit den Einstellungen der Spezifikation erneut aus, wählen Sie die Anker neu aus und erstellen Sie mit --relock.
  • Auto-Label-Platzierung schlägt weiterhin fehl ("no collision-free position"): Zu viele oder zu lange Beschriftungen für das Panel; kürzen Sie die Beschreibungen, entfernen Sie Beschriftungen oder verwenden Sie "layout": "single" für ein breiteres Panel.
  • Veraltet aussehende Ausgabe nach Bearbeitung der Skripte: Der Cache-Schlüssel enthält den Renderer-Code, aber führen Sie im Zweifelsfall einmal mit --no-cache aus.

Dateien

  • scripts/binding.py – Spezifikations-Lock-Datei (Lock-Prüfung und Relogik).
  • scripts/blueprint3d.py – 3D-Pipeline (Inspizieren, Erstellen).
  • scripts/blueprint2d.py – 2D-Pipeline (Inspizieren, Erstellen).
  • scripts/render.py – Gemeinsame Layout- und Malroutine.
  • scripts/fonts/ – Gebündelte Schriftart (DejaVu).
  • assets/example_spec_3d.json – Vollständige 3D-Beispielspezifikation zum Kopieren.
  • assets/example_spec_2d.json – Vollständige 2D-Beispielspezifikation zum Kopieren.

Verwandte Skills