Was macht polywright-generate?
Zwei Engines erzeugen imaginäre Modelle: Code (exakt, editierbar, scharf, bemaßt) und Generatoren (organisch, schnell, approximativ, chaotische Topologie). Wähle nach dem Objekt, nicht nach Gewohnheit. Zurück zum Hub: ../polywright/SKILL.md. Modelltabelle mit Lizenzen und VRAM: references/generators.md. Code-Muster: references/code-modeling.md.
Schritt 1: Code oder Generator?
| Objekt | Engine |
|---|---|
| Hat Maße, passt zu etwas, besteht hauptsächlich aus Ebenen und Zylindern (Halterung, Gehäuse, Regal, Gebäude, Schild, Kiste) | Code: build123d, CadQuery oder OpenSCAD für druckbare und CAD-Teile; bpy für Spiel-Kits und Gebäude |
| Viele Variationen einer Sache (Zäune, Häuser, Steine, ein Wald) | Prozeduraler Code (bpy, Geometry Nodes) aus wenigen Hero-Assets |
| Organisches oder skulpturales Einzelstück (Statue, Kreatur, Charakter, Baumstamm, Essen) | Generator aus einem Referenzbild oder Multi-View-Datensatz |
| Charakter, der animiert werden soll | Generator für die Form, dann Retopologie und ein Rig (polywright-finish) |
| Ein reales Objekt, von dem Sie ein Foto haben | Zuerst polywright-capture versuchen; ein Generator rät die verdeckten Seiten |
Diffusion rundet scharfe Kanten und erfindet Maße; Code kann kein Löwengesicht formen. Viele gute Modelle sind beides: ein codierter Sockel mit einem generierten Löwenkopf-Ausguss, boolesch verbunden.
Schritt 2: Generatoren
- Zuerst Referenzen (polywright-references): ein sauberes Bild auf weiß, flaches Licht, wenig Perspektive, 1024 px; für Charaktere eine A-Pose; für eine bessere Rückseite ein Front/Links/Rückseite/Rechts-Set im gleichen Maßstab.
python ../polywright/scripts/pw.py doctorzeigt ComfyUI-Hosts und deren 3D-Checkpoints.- Einen ausführen:
- Eingebauter Hunyuan3D-2 (nur Form, etwa 100 s auf einer 16 GB Karte bei 30 Schritten, Octree 256):
pw.py gen --image refs/front.png [--left L --back B --right R] --out work/raw.glb [--seed N] - Jeder andere ComfyUI-Workflow, im API-Format oder vom Editor gespeichert (eine Vorlagendatei funktioniert wie sie ist; pw.py
konvertiert sie mit den Knotendefinitionen des Hosts):
pw.py gen --image refs/front.png --workflow <file> --out work/raw.glb. TRELLIS.2 und Pixal3D mit PBR-Texturen: ComfyUIs Vorlage3d_pixal3d_trellis2_image_to_model.json(im ComfyUI-Installationsverzeichniscomfyui_workflow_templates_json/templates); ihr Schalter wählt standardmäßig Pixal3D, also füge--set 316.value=truefür TRELLIS.2 hinzu. Auf einer 16 GB Karte (GPU-Zeit): TRELLIS.2 377 s kalt (73 bis 190 s warm), aufrecht, die besten Details; Pixal3D 329 s, im Kamerarahmen (geneigt:pw.py convert IN OUT --level); beide etwa 700k Dreiecke mit 4096 px PBR-Texturen; Hunyuan3D-2 99 s, nur Form.--set NODE.input=VALUEändert beliebige Eingaben. - Gehostete APIs (Meshy hat die klarste öffentliche Preisliste; Tripo, Rodin, Hunyuan 3.x): über deren eigene API oder MCP, oder ComfyUIs Partner-Knoten. Nenne die Kosten, bevor sie ausgegeben werden.
- Eingebauter Hunyuan3D-2 (nur Form, etwa 100 s auf einer 16 GB Karte bei 30 Schritten, Octree 256):
- Jeder Durchlauf schreibt
<out>.gen.json(Host, Modell, Seed, Schritte). Dokumentiere das Modell und seine Lizenz:pw.py manifest <dir> --add-tool "<model>" --tool-version <v>. - Prüfen:
pw.py inspect work/raw.glbdannpw.py render work/raw.glb --out renders/raw. Vergleiche das Blatt mit der Referenz: Rückseite und Unterseite sind geraten; überzählige Gliedmaßen, geschmolzene dünne Teile und verschmolzene Lücken sind häufig. Vor der manuellen Korrektur mit einem anderen Seed oder besseren Ansichten neu generieren. Gemalte Buchstaben und Zahlen brennen als Schlieren ein und Farben driften:pw.py marklöscht die Markierung und zeichnet sie neu und verschiebt die Farbe zu der des Fotos (L-003; Abbildungen für Video).
Rohausgabe ist nicht skaliert, dicht (Hunderttausende von Dreiecken), oft nicht watertight, ohne UVs, Y-up. Sie ist niemals spielbereit und niemals druckbereit wie besehen: skaliere und veredele sie (polywright-finish, polywright-print).
Schritt 3: Code
Schreibe ein Skript, das das Objekt aus benannten Teilen mit echten Maßen aufbaut, führe es aus, betrachte es, korrigiere es:
- bpy:
pw.py bpy build.py -- --out work/model.blend(Stolperfallen durch Blender-Version: polywright-blender). - build123d oder CadQuery (Python) oder OpenSCAD (
openscad -o out.stl model.scad, Manifold-Backend) für Volumenkörper: per Konstruktion wasserdicht, exportiert STEP für CAD und STL oder 3MF für den Druck.
Füge Prüfungen in das Skript ein (Gesamtgröße, Teileabstände, Wandstärke, Teileanzahl) und lasse sie ausgeben; Agenten beheben Abstürze durch Tracebacks gut, Formfehler jedoch nur anhand von Messungen und Renderings. Zwei Wiederholungen bei einem Traceback, dann überdenken.
Schritt 4: Texturen für ein generiertes oder codiertes Mesh
TRELLIS.2 und Pixal3D backen PBR-Texturen in ihrem Workflow. Für ein untexturiertes Mesh: TRELLIS.2s formbedingte Texturstufe, StableGen (Blender-Add-on mit ComfyUI-Backend, GPLv3), das SDXL, Flux oder Qwen Image 2.1 aus Kameras projiziert (0.4.0 fügt maskierte regionale Neutexturierung und SkinTokens Auto-Rigging hinzu; Qwen Image 2.1 und FIBO 2.0 Edit sind nicht kommerziell, MOSS Image ist Apache-2.0), oder einfache Materialien aus CC0-Bibliotheken (polywright-references). Hunyuan 2.1 Paint benötigt etwa 21 GB.
Lizenzen (pro Durchlauf dokumentieren)
TRELLIS.2, Pixal3D, TripoSG, PartCrafter: MIT. Hunyuan3D Open Weights: Tencent-Community-Lizenz (nicht lizenziert in der EU, Großbritannien oder Südkorea; 1 Mio. MAU Obergrenze; Ausgaben dürfen keine anderen Modelle trainieren). SF3D und SPAR3D: Stability Community-Lizenz (frei unter 1 Mio. USD Umsatz). Gehostet: die Bedingungen des Tarifs. Forschungsgewichtete Gewichte (PartPacker, Lyra, CHORD) bleiben von allem ausgeschlossen, was ausgeliefert wird. Geschäfte erfordern eine KI-Offenlegung (polywright leitet Referenz).
Wartung
Evergreen-Einheit, Stufe fast (Modelle und Lizenzen ändern sich monatlich). Begleitdokumente: RESEARCH.md,
CHANGELOG.md, LEARNINGS.md, TESTS.md mit evals/evals.json,
MAINTENANCE.md, Zustand in evergreen.json. Bei jeder Verwendung evergreen.json lesen; bei Fälligkeit aktualisieren.