Image 2 Low Poly
Une photo en entrée, un maillage low-poly éditable par budget de triangles, chaque maillage est évalué par rapport à la photo via la même caméra verrouillée et compté de quatre manières indépendantes. La géométrie low-poly elle-même réalise l'approximation : pas de texture, de panneau publicitaire, de photo projetée ou de géométrie non comptée pour représenter la forme.
Entrées : l'image de référence (jamais modifiée), le sujet, les budgets. Exemple pratique : examples/cat/ dans le dépôt (un chat tigré orange, budgets 100 / 200 / 500 / 1000).
Avant de commencer
| Situation | À faire |
|---|---|
| Une seule photo, sujet entier visible, fond uni | le chemin principal |
| Un animal à quatre pattes | le modèle proxy fourni (fit_camera_proxy.py, build_proxy.py) est un chat quadrupède ; ajustez ses a priori |
| Tout autre sujet | écrivez d'abord un modèle proxy pour celui-ci (cylindres généralisés par partie, format catlib/skeleton.py) ; le reste des outils est indépendant du sujet |
| Plusieurs photos, une vidéo, un scan | hors de portée : une vue, une caméra |
| L'utilisateur souhaite de la couleur ou de la texture | uniquement des couleurs plates par face ; dites-le avant de commencer |
| Pas de Blender | non pris en charge : le comptage, l'assemblage et tous les chiffres officiels nécessitent Blender 5.2+ |
Dites avant de commencer que tout ce que la photo ne montre pas est inféré, non vérifié.
Flux de travail
S ci-dessous signifie skills/image-to-lowpoly/scripts. Chaque script prend --case CASE (ou LOWPOLY_CASE). Publiez une image étiquetée à chaque point de contrôle (superpositions, argile, filaire, huit vues) : les images d'abord, les chiffres ensuite.
- Cas et référence. Créez
CASE/reference/reference.png(copie bit à bit de l'image de l'utilisateur) et un fichier de provenance avec son SHA-256. Ne le régénérez, redimensionnez ou modifiez jamais. - Cibles fixes. Annotez les points de repère et les fenêtres d'image en examinant des recadrages agrandis (12 points nets : pointes des oreilles, yeux, nez, quatre contacts des pattes, base/milieu/extrémité de la queue pour un chat ; adaptez la liste au sujet), puis
python3 $S/preflight_reference.py --case CASE. Regardezmask_overlay.pngetlandmarks_overlay.png. Le masque exclut l'ombre au sol et les moustaches. - Caméra et proxy.
fit_camera_proxy.py --case CASE(CPU, dizaines de minutes), puisbuild_proxy.py,build_proxy.py --locketbuild_proxy.py --report. Regardez le proxy depuis les huit vues : c'est la réponse pour tout ce qui est caché. Ensuite, figez : écrivez les empreintes de référence, masque, points de repère, régions, caméra, scène, proxy et le code d'évaluation danscontract/FROZEN.jsonavant que tout budget ne soit évalué (references/contract.md). - Contrôles.
make_decimation_baseline.py --case CASE --budget Npour chaque budget : Décimation du proxy à exactement N, et la même chose après le raffineur partagé. Ce sont les chiffres à battre. - Allouer et construire, par budget. Donnez à chaque budget son propre worker et répertoire
variants/<N>/(references/budget-worker.md). Écrivez le tableau d'allocation (région, triangles, anneaux x côtés, raison), construisez au moins deux allocations matériellement différentes, donnez à chacune le même court raffinement, comparez, choisissez.variants/<N>/build.pyécrit uncatmesh-1mesh.jsonavec exactement N triangles (affirmez-le), régions, matériaux et attachements de points de repère. Une seule surface fermée : soudez les membres, la queue et les oreilles dans le corps. - Point de contrôle initial.
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --views. Ceci est la ligne "initiale". - Affiner, mesurer, regarder, éditer, répéter.
refine_vertices.py(--flips,--freeze-vertspour les faces et tout kit gelé),evaluate.py, puis regardezref_overlay.png,ref_clay.png,ref_wire.pnget les huit vues. Effectuez des modifications topologiques ciblées là où la superposition montre un budget mal alloué. Gardez le meilleur point de contrôle validé ; le plus récent ne doit pas nécessairement gagner. - Révision à l'aveugle.
make_critic_packet.py --case CASE --round Kprépare la photo et des rendus d'argile, filaire et contour nommés de manière neutre. Lancez un sous-agent frais qui ne voit que ce dossier ; transformez ses conclusions en modifications géométriques neutres en termes de budget. Rejetez toute suggestion qui est une texture, une carte ou une géométrie non comptée. - Finaliser et agréger.
finalize_variant.py --case CASE --budget N --checkpoint TAG --reason "..."copie le point de contrôle et le ré-évalue ;aggregate_metrics.pyconstruit le tableau inter-budgets et refuse les empreintes ou comptes non correspondants ;make_comparison.pycrée les feuilles. - Rapporter et arrêter. Présentez la feuille d'argile/filaire avec les quatre comptes, le tableau des lignes initiale, finale et les deux contrôles par budget, les tableaux d'allocation, les verdicts du réviseur, et ce qui ne va pas. Dites où le maillage conçu ne bat pas le contrôle. L'utilisateur décide de la suite.
- Timelapse (optionnel). Enregistrez les étapes de construction (
--stages-dirdans votre script de construction) et les instantanés de l'optimiseur (refine_vertices.py --snapshot-dir DIR --snapshot-every K), puistimelapse/timelapse.py --case CASE: le maillage dessiné sur la photo via la caméra verrouillée.
Règles strictes
- Le compte est la géométrie évaluée et exportée. Quatre comptes (fichier de maillage,
.blendévalué sur chaque objet, GLB réimporté, GLB analysé) doivent concorder et être au plus N ; visez exactement N. Jamais le nombre de polygones de Blender (references/counting.md). - Rien ne cache les triangles ou la forme. Triangles uniquement, un seul objet, pas de modificateurs, pas de subdivision, courbes, cheveux, instances, cartes alpha, remplissage dupliqué ou dégénéré, panneaux publicitaires ou extrusions de silhouette plates.
- La cible ne bouge jamais. Référence, masque, points de repère, fenêtres et caméra sont créés une fois et hachés. Une correction authentique est divulguée et chaque budget est ré-évalué.
- Aucun chiffre unique ne décide. IoU, distance des bords, points de repère et écarts entre les pattes ne doivent pas se contredire, et l'argile et les huit vues doivent avoir meilleure apparence. Un meilleur score avec une forme moins bonne est une régression.
- Soudez, ne laissez pas d'interpénétration. Les triangles enterrés gaspillent le budget et les jonctions sont visibles.
- L'optimiseur est partagé ; l'allocation est l'expérience. Même raffineur, mêmes paramètres disponibles pour chaque budget et pour le contrôle.
- Les points de repère se déplacent avec la géométrie. Un point de repère est attaché à la caractéristique qu'il nomme ; ne faites jamais glisser l'attachement pour améliorer un chiffre.
- Un rendu à la fois. Seul
render_variant.pyrend, et il prend le verrou lui-même. - Les matériaux ne comptent jamais comme forme. Couleurs plates par face avec signification anatomique ; classez la géométrie sur l'argile et les silhouettes uniquement.
- Dites ce que ce n'est pas. Caché côté inféré ; un résultat égalant le contrôle est une égalité ; les têtes et les parties fines sont les points faibles de ces maillages.
Références
| Fichier | Quand le lire |
|---|---|
references/contract.md | en configurant un cas : mise en page, unités, caméra, format de maillage, métriques, rendus, proxy, points de repère, kit de tête |
references/budget-worker.md | en déléguant ou en réalisant un budget : procédure, priorités, quoi regarder |
references/counting.md | les quatre comptes, les échecs critiques, ce qui est divulgué |
references/lessons.md | ce qui a mal fonctionné dans le run du chat et la règle que chaque échec est devenue |