Bild 2 Low Poly
Ein Foto rein, ein editierbares Low-Poly-Netz pro Dreiecksbudget raus, jedes anhand des Fotos durch die selbe fixierte Kamera bewertet und auf vier unabhängige Weisen gezählt. Die Low-Poly-Geometrie selbst übernimmt die Annäherung: keine Textur, kein Billboard, kein projiziertes Foto und keine nicht gezählte Geometrie vertritt die Form.
Eingaben: das Referenzbild (niemals geändert), das Motiv, die Budgets. Ausgearbeitetes Beispiel:
examples/cat/ im Repository (eine orange getigerte Katze, Budgets 100 / 200 / 500 / 1000).
Vor dem Start
| Situation | Vorgehen |
|---|---|
| Ein Foto, gesamtes Motiv sichtbar, einfarbiger Hintergrund | der Hauptpfad |
| Ein vierbeiniges Tier | Die mitgelieferte Proxy-Vorlage (fit_camera_proxy.py, build_proxy.py) ist eine vierbeinige Katze; passe deren Priors an |
| Jedes andere Motiv | Schreibe zuerst eine Proxy-Vorlage dafür (generalisierte Zylinder pro Teil, catlib/skeleton.py-Format); der Rest der Werkzeuge ist motivunabhängig |
| Mehrere Fotos, ein Video, ein Scan | Außerhalb des Rahmens: eine Ansicht, eine Kamera |
| Der Benutzer wünscht Farbe oder Textur | Nur flache Einzelflächenfarben; sag das vor dem Start |
| Kein Blender | Nicht unterstützt: Zählen, Zusammenbau und jede offizielle Zahl benötigen Blender 5.2+ |
Sag vor dem Start, dass alles, was das Foto nicht zeigt, abgeleitet und nicht verifiziert ist.
Arbeitsablauf
S unten bedeutet skills/image-to-lowpoly/scripts. Jedes Skript akzeptiert --case CASE (oder
LOWPOLY_CASE). Poste ein beschriftetes Bild bei jedem Kontrollpunkt (Überlagerungen, Ton, Drahtgitter,
acht Ansichten): zuerst Bilder, dann Zahlen.
- Fall und Referenz. Erstelle
CASE/reference/reference.png(byteidentische Kopie des Benutzerbildes) und eine Herkunftsdatei mit dessen SHA-256. Niemals neu generieren, skalieren oder bearbeiten. - Fixierte Ziele. Markiere Landmarken und Bildfenster, indem du auf gezoomte Ausschnitte schaust
(12 scharfe Punkte: Ohrspitzen, Augen, Nase, vier Pfotenkontakte, Schwanzansatz/-mitte/-spitze für eine
Katze; passe die Liste an das Motiv an), dann
python3 $S/preflight_reference.py --case CASE. Sieh dirmask_overlay.pngundlandmarks_overlay.pngan. Die Maske schließt Bodenschatten und Schnurrhaare aus. - Kamera und Proxy.
fit_camera_proxy.py --case CASE(CPU, Dutzende Minuten), dannbuild_proxy.py,build_proxy.py --lockundbuild_proxy.py --report. Sieh dir den Proxy aus allen acht Ansichten an: er ist die Antwort für alles Verborgene. Dann einfrieren: Schreibe die Hashes von Referenz, Maske, Landmarken, Regionen, Kamera, Szene, Proxy und des Bewertungscodes incontract/FROZEN.json, bevor ein Budget bewertet wird (references/contract.md). - Kontrollen.
make_decimation_baseline.py --case CASE --budget Nfür jedes Budget: Decimation des Proxy auf genau N, und dasselbe nach dem gemeinsamen Verfeinerer. Dies sind die zu schlagenden Zahlen. - Zuteilen und bauen, pro Budget. Gib jedem Budget einen eigenen Worker und ein Verzeichnis
variants/<N>/(references/budget-worker.md). Schreibe die Zuteilungstabelle (Region, Dreiecke, Ringe x Seiten, Grund), baue mindestens zwei materiell unterschiedliche Zuteilungen, gib jeder die gleiche kurze Verfeinerung, vergleiche, wähle.variants/<N>/build.pyschreibt eincatmesh-1mesh.jsonmit genau N Dreiecken (bestätige es), Regionen, Materialien und Landmarken-Befestigungen. Eine geschlossene Oberfläche: Füge Gliedmaßen, Schwanz und Ohren in den Körper ein. - Erster Kontrollpunkt.
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --views. Dies ist die „Initial“-Zeile. - Verfeinern, messen, sehen, bearbeiten, wiederholen.
refine_vertices.py(--flips,--freeze-vertsfür Flächen und jedes eingefrorene Kit),evaluate.py, dann sieh dirref_overlay.png,ref_clay.png,ref_wire.pngund die acht Ansichten an. Führe gezielte Topologie-Änderungen durch, wo die Überlagerung zeigt, dass das Budget falsch zugeteilt wurde. Behalte den besten validierten Kontrollpunkt; der neueste muss nicht gewinnen. - Blinde Überprüfung.
make_critic_packet.py --case CASE --round Kpackt das Foto und neutral benannte Ton-, Drahtgitter- und Umriss-Renderings. Starte einen frischen Unteragenten, der nur diesen Ordner sieht; wandle seine Erkenntnisse in budgetneutrale geometrische Änderungen um. Lehne jeden Vorschlag ab, der eine Textur, eine Karte oder nicht gezählte Geometrie ist. - Abschließen und zusammenführen.
finalize_variant.py --case CASE --budget N --checkpoint TAG --reason "..."kopiert den Kontrollpunkt und bewertet ihn neu;aggregate_metrics.pyerstellt die budgetübergreifende Tabelle und lehnt nicht übereinstimmende Hashes oder Zählungen ab;make_comparison.pyerstellt die Blätter. - Berichten und anhalten. Präsentiere das Ton-/Drahtgitterblatt mit den vier Zählungen, die Tabelle der Initial-, Final- und beider Kontrollen pro Budget, die Zuteilungstabellen, die Bewertungen des Prüfers und was falsch ist. Sage, wo das entworfene Netz die Kontrolle nicht schlägt. Der Benutzer entscheidet, was als nächstes kommt.
- Zeitraffer (optional). Nimm Bauphasen auf (
--stages-dirin deinem Bauskript) und Optimierungs- Schnappschüsse (refine_vertices.py --snapshot-dir DIR --snapshot-every K), danntimelapse/timelapse.py --case CASE: das Netz gezeichnet über dem Foto durch die fixierte Kamera.
Harte Regeln
- Die Zählung ist die bewertete, exportierte Geometrie. Vier Zählungen (Netzdatei, bewertetes
.blendüber jedes Objekt, erneut importiertes GLB, geparstes GLB) müssen übereinstimmen und höchstens N sein; ziele auf genau N ab. Niemals die Polygonanzahl von Blender (references/counting.md). - Nichts versteckt Dreiecke oder Form. Nur Dreiecke, ein Objekt, keine Modifikatoren, keine Unterteilung, Kurven, Haare, Instanzen, Alpha-Karten, doppelte oder entartete Auffüllungen, Billboards oder flache Silhouetten-Extrusionen.
- Das Ziel bewegt sich nie. Referenz, Maske, Landmarken, Fenster und Kamera werden einmal erstellt und gehasht. Eine echte Korrektur wird offengelegt und jedes Budget wird neu bewertet.
- Keine einzelne Zahl entscheidet. IoU, Grenzabstand, Landmarken und Beinlücken dürfen sich nicht widersprechen, und der Ton und die acht Ansichten müssen besser aussehen. Ein besserer Wert mit einer schlechteren Form ist ein Rückschritt.
- Verschmelzen, nicht durchdringen. Vergrabene Dreiecke sind verschwendetes Budget und die Verbindungen sind sichtbar.
- Der Optimierer ist gemeinsam; die Zuteilung ist das Experiment. Gleicher Verfeinerer, gleiche Einstellungen, verfügbar für jedes Budget und für die Kontrolle.
- Landmarken bewegen sich mit der Geometrie. Eine Landmarke ist an dem Merkmal befestigt, das sie benennt; verschiebe niemals die Befestigung, um eine Zahl zu verbessern.
- Ein Rendering nach dem anderen. Nur
render_variant.pyrendert, und es nimmt selbst die Sperre. - Materialien zählen nie als Form. Flache Einzelflächenfarben mit anatomischer Bedeutung; bewerte Geometrie nur anhand von Ton und Silhouetten.
- Sag, was es nicht ist. Abgeleitete verborgene Seite; ein „zieht mit der Kontrolle gleich“-Ergebnis ist ein Unentschieden; Köpfe und dünne Teile sind die Schwachstellen dieser Netze.
Referenzen
| Datei | Lesen, wenn |
|---|---|
references/contract.md | Einrichten eines Falls: Layout, Einheiten, Kamera, Netzformat, Metriken, Renderings, Proxy, Landmarken, Kopf-Kit |
references/budget-worker.md | Delegieren oder Bearbeiten eines Budgets: Vorgehen, Prioritäten, worauf achten |
references/counting.md | Die vierfache Zählung, harte Fehler, was offengelegt wird |
references/lessons.md | Was beim Katzenlauf schiefgelaufen ist und welche Regel jeder Fehler wurde |