CommunityImagegithub.com

minhdv-zz/tb-hoidz

Texturer des modèles de jeux Blender existants avec un mapping UV à dégradé de palette à partir d'une image conceptuelle. Ne s'active que sur invocation explicite /tb-hoidz, $tb-hoidz ou tb-hoidz.

Qu'est-ce que tb-hoidz ?

Cette compétence permet d'appliquer un mapping UV par bandes de couleurs (gradient mapping) à partir d'une image conceptuelle sur des modèles 3D Blender déjà existants (typiquement des assets de jeux). Elle se base sur un algorithme de mapping préservé (script `gm_core.py` version 8+) et ne s'active que lorsque l'utilisateur invoque explicitement `/tb-hoidz`, `$tb-hoidz` ou `tb-hoidz`. Le workflow découpe le modèle en zones logiques (basées sur l'analyse sémantique et géométrique), attribue une palette de couleurs extraite de l'image conceptuelle, puis génère le mapping UV par bandes (une bande par zone), avec des marges de 2 px minimum. La compétence assure la préservation de la géométrie, la gestion des normales (hard/smooth) et la cohérence matériau par zone. Elle intègre des contrôles de qualité (QA) stricts, une validation des signatures d'état pour la mise en cache, et une sauvegarde sécurisée du fichier Blender. Le système privilégie les communications minimales dans le chat, avec un rapport concis en fin d'étape. Elle est conçue pour l'outil Blender connecté via MCP et peut aussi sauvegarder un fichier de récupération avant les modifications géométriques.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/minhdv-zz/team-skills/tree/HEAD/plugins/tb-hoidz/skills/tb-hoidz

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Gradient Mapping pour Blender

Révision du workflow 15. Répondre dans la langue de l'utilisateur. Utiliser le Blender MCP connecté et le script scripts/gm_core.py maintenu (version 8+) ; préserver son algorithme de mapping.

Lire uniquement ce dont cette phase a besoin

Pour le mapping de base, lire references/base-api.md et references/reference-quality.md une fois par contexte disponible. Ne pas charger le source des helpers ou le workflow complet simplement pour découvrir des API. Inspecter une signature/docstring ciblée pour des arguments non documentés ; ne lire la fonction source pertinente que si nécessaire.

references/workflow.md est la référence étendue pour les préréglages, les clés de plan optionnelles, les explications de QA et les exemples historiques : lire les sections pertinentes à la demande. SKILL_DIR est le dossier de ce point d'entrée. Lire references/detail.md uniquement après l'approbation de base. Réutiliser les documents déjà en contexte sauf s'ils sont modifiés ou manquants après compaction.

Périmètre et garanties

  • /tb-hoidz autorise la préparation, la planification, les zones, le mapping de base, la comparaison et la QA. Combiner un plan concis et une notification d'attribution de palette dans la brève mise à jour d'ouverture, puis continuer sans confirmation intermédiaire ; suivre les règles de communication ci-dessous. S'arrêter après la base terminée pour l'approbation de l'utilisateur avant le mapping de détail. Les ajouts géométriques nécessitent le choix de l'utilisateur concernant le détail, la méthode de coupe et le coût en triangles ; les approbations existantes persistent.
  • Réutiliser le concept et la cible fournis, sinon les maillages sélectionnés s'ils sont sans ambiguïté. Demander uniquement les entrées manquantes. Ne jamais inventer un concept, remplacer l'asset ou importer des doublons par défaut.
  • Enregistrer bpy.data.filepath au début de l'exécution comme cible de sauvegarde de travail. Modifier les objets en direct. Un fichier modifié démarre un nouveau contexte ; un fichier non enregistré nécessite la première sauvegarde de l'utilisateur.
  • Chaque face appartient à une zone ; une bande par zone, U replié à son centre, au moins 2 px de marges U/V. Combiner les normales de lumière zénithale et la hauteur, pas la hauteur seule par défaut. Utiliser des normales hard/smooth appropriées et la réponse du matériau. Préserver la géométrie pendant le mapping de base.
  • Stocker le plan, les appartenances/preuves privées, les triangles de référence, les signatures, la QA et les exceptions au niveau de la scène locale. Les exportations JSON persistantes, les exportations d'images et les rapports de benchmark sont optionnels, pas des livrables par défaut. save_plan par défaut dans le dossier de la compétence : utiliser un stockage accessible en écriture explicite à la place.

Communication et prévisualisation

Par défaut, narration minimale dans le chat : effectuer le travail autorisé et les contrôles internes, puis signaler le résultat terminé. Combiner le plan, l'attribution de palette prévue et tout recours éventuel en une seule brève mise à jour d'ouverture. Pendant le travail, éviter les messages d'étape de routine, les tableaux de couleurs, les vidages de QA et les explications de prévisualisation répétées. Ne donner que de brèves mises à jour de progression requises par des instructions d'exécution de plus haute priorité, ou signaler rapidement un blocage, une décision utilisateur nécessaire ou un changement de portée matériau.

Garder toutes les preuves, les candidats et les rapports au niveau de la scène locale ; renvoyer des résumés d'outils compacts pour les décisions. Privilégier l'inspection visuelle interne lorsque l'outil le prend explicitement en charge. Si un outil affiche automatiquement des images dans le chat, accepter cette limitation, utiliser uniquement les captures nécessaires et ne pas intégrer à nouveau ces images dans le commentaire ou la réponse finale. Ne jamais inventer un mode de prévisualisation cachée ou sauter une QA visuelle requise pour garder le chat silencieux. Utiliser par défaut une vue d'ensemble mappée ; les captures supplémentaires doivent résoudre une incertitude ou vérifier une correction significative.

Terminer par un rapport concis couvrant le fichier sauvegardé et l'état sale, le résultat de la QA, les limitations de matériau et les détails en attente. Demander l'approbation de la base au point de contrôle existant. Si la sauvegarde ou une vérification requise échoue, signaler l'état réel incomplet. La narration minimale seule n'établit pas une économie de vitesse ou de jetons.

Mapping de base

  1. Connecter et préparer. Appeler get_addon_status une fois et obtenir des faits compacts sur la scène : chemin de travail, maillages, limites du monde, nombres de faces/triangles et matériaux. Regrouper les lectures indépendantes. Importer les helpers depuis le répertoire absolu des scripts de cette compétence dans chaque appel Blender qui les utilise. Lors du premier import, placer ce répertoire en premier dans sys.path, évincer les modules gm d'autres chemins, recharger gm_core, et imprimer son chemin/version vérifié une fois (base-api.md). Les appels ultérieurs importent sans rechargement. Exécuter ensure_palette ; inclure le recours, le reliage ou la création de matériau dans le rapport final sauf si une décision utilisateur est nécessaire maintenant. Demander avant de mettre à jour la copie de compétence d'une palette d'équipe différente. La mise à jour d'ouverture couvre l'attribution de palette avant prepare_model(..., assign_material=True) ; éviter une annonce de routine séparée.
  2. Identifier les matériaux avant le mapping. Dans un lot de découverte initial unique lorsque c'est pratique, rassembler les pièces, les limites, les groupes UV d'origine et les résumés de normales dans l'espace monde pour les objets cibles. Stocker les appartenances et les preuves en privé ; ne résumer que les parties pertinentes pour la décision. Concentrer les vérifications PCA/profondeur/adjacence plus approfondies sur les pièces ambiguës ou mixtes et les familles représentatives, puis réutiliser les preuves vérifiées. Des découvertes supplémentaires sont autorisées pour les limites non résolues. Combiner les indices géométriques avec la position du concept ; la découverte précède l'assignation sémantique. Auditer les pièces dominantes incertaines avant de les assigner. Une boîte englobante fine peut décrire une large feuille ou une corde diagonale : inspecter les dimensions principales et l'étendue de surface ainsi que la position sémantique. Les indices de forme sont des preuves, jamais des étiquettes de matériau. Capturer surface_groups(..., uv_seams=True) avant d'écraser les UV sur des coques mixtes. Vérifier un représentant et une structure correspondante avant de réutiliser une règle pour des répétitions. Résoudre les limites panneau/bord, cavité/surface et enveloppe/mât pendant la base. Compléter la petite porte de matériau dans reference-quality.md pour chaque pièce ou famille structurellement vérifiée ; la petite taille n'exempte pas une pièce. Les assignations incertaines nécessitent une découverte ciblée avant le mapping.
  3. Planifier et assigner. Utiliser reference-quality.md pour les couleurs de concept mesurées ou explicitement estimées, la hiérarchie des matériaux et des valeurs. Lancer des recherches V complètes et sûres par lots avec suggest_zone_colors ; conserver 2–3 candidats et les couleurs choisies en privé ; n'émettre qu'un résumé d'outil compact et les problèmes nécessitant une décision. Assigner les zones à partir de l'audit de matériau vérifié et vérifier les faces non assignées et les limites incertaines avant le mapping. Ne pas utiliser un matériau par défaut générique pour faire passer la couverture ; les assignations temporaires restent explicitement incertaines jusqu'à vérification. Préserver les appartenances vérifiées. Lister les emblèmes/planches manquants comme détails futurs.
  4. Mapper et comparer. Appliquer le plan, puis show_texture(light="FLAT"). Valider la palette et le matériau de prévisualisation avant d'inspecter la couleur ; éviter une capture d'écran initiale entièrement rose. Une image avant mapping doit répondre à une question géométrique spécifique : utiliser une couleur unie vérifiée ou des couleurs de zone temporaires. Inspecter une vue d'ensemble comparable de 512 à 640 px après le mapping. Effectuer une revue des limites sémantiques des familles auditées, y compris les petits raccords et les interfaces cachées ou illisibles dans la vue d'ensemble. Utiliser des vues ciblées uniquement là où nécessaire. Corriger uniquement les objets/zones affectés et vérifier les voisins. L'ajustement optionnel de la lumière réelle est destiné à un décalage concret non résolu, pas à une passe d'actif global par défaut. Une autre capture doit résoudre un problème ou vérifier une correction significative.
  5. QA finale et sauvegarde. Terminer les corrections de couleurs et de limites prévues avant la QA finale. Pendant le mapping, utiliser des vérifications compactes de couverture, de limites et de zones affectées plutôt qu'une QA finale de l'actif entier. Après la dernière modification, exécuter qa et qa_faces sur chaque cible une fois. Une réparation déclenchée par QA invalide les résultats affectés : réexécuter les helpers d'objet entier sur les cibles affectées, et étendre à tous les utilisateurs pour les modifications de dépendances partagées ; ne jamais sauvegarder avec une QA obsolète. Corriger les échecs ; inspecter et documenter les avertissements/exceptions intentionnels. Vérifier la couverture, les marges, l'UV actif/rendu, les liens réels du shader de palette, les normales/lumière et la topologie de base inchangée. Enregistrer la comparaison de référence et le résultat de la porte de matériau séparément : la QA des données ne prouve pas une assignation correcte du matériau ou une similarité visuelle. Ne pas marquer une base comme entièrement vérifiée tant que des assignations incertaines subsistent ; enregistrer toute limitation réelle de référence/topologie explicitement. Finaliser les prévisualisations temporaires, empaqueter la palette, laisser la texture visible et exécuter la sauvegarde protégée dans base-api.md. Signaler le chemin sauvegardé/l'état sale, les détails en attente et demander l'approbation de la base.

Discipline de cache et de sortie

  • Exécuter state_signature + compare_state une fois par lot dépendant avant la réutilisation du cache. Les signatures manquantes ne sont pas vérifiées. Les modifications géométriques invalident les appartenances ; les modifications UV invalident les preuves UV d'origine. Les modifications partagées de normale/palette/matériau/transformée/lumière étendent le périmètre. Rafraîchir les signatures après les modifications acceptées. Ne pas répéter les signatures entre des lectures indépendantes dans un lot inchangé.
  • Conserver toutes les pièces, les appartenances de faces, les données de palette, les candidats et la QA dans la scène. Renvoyer des totaux agrégés plus au maximum 12 lignes de pièces pertinentes pour la décision par défaut ; étendre uniquement pour une région nommée non résolue ou une demande de l'utilisateur. Ne jamais imprimer la carte de palette complète/le catalogue de bandes, la liste de candidats, le catalogue de faces/sommets ou le cache de scène. Filtrer les zones vides de apply_plan ; renvoyer les totaux de faces mappées et les bandes modifiées, pas les rapports bruts des helpers. La sortie finale de QA couvre chaque cible avec des nombres d'échecs/problèmes et des avertissements actionnables ; conserver les rapports détaillés réussis en privé.
  • Émettre une représentation de résultat MCP : structuredContent lorsque disponible, sinon le contenu texte. Transmettre les blocs d'image séparément. Ne pas stringifier les deux représentations en double ou les données d'image.
  • Regrouper les lectures indépendantes et les opérations d'objets compatibles ; garder les vérifications/éditions dépendantes séquentielles. Éviter les captures d'écran inchangées, les vidages de scène et les sondages de connexion. Aucune affirmation d'économie de temps/jetons sans mesures comparables.

Efficacité d'exécution

  • Charger la carte de palette une fois par lot d'exécution. Mettre en cache part_evidence par appartenance de face vérifiée ; ne pas recalculer PCA séparément pour le centre et la taille. Regrouper les lectures et corrections compatibles tout en gardant les décisions révisables. Préserver l'algorithme de mapping maintenu.
  • Avant la capture, établir ensemble la validité de l'image/shader, l'ombrage, la lumière et le cadrage. Collecter les décalages concrets de la vue d'ensemble et corriger les correctifs indépendants par lots avant vérification. Pour les éditions locales, préserver et vérifier les données UV/zone en dehors du périmètre et vérifier les limites voisines ; étendre le périmètre pour les dépendances partagées.
  • Stocker des métriques d'exécution légères localement dans la scène : identité cible/référence, secondes par étape, nombre réel d'appels d'outils/captures et statut final de la QA. Utiliser time.perf_counter() autour de la découverte, du mapping/corrections et de la QA/sauvegarde existants ; compter les appels d'outils réels dans l'orchestration. N'ajouter aucun appel simplement pour mesurer. Marquer les métriques indisponibles et distinguer le temps d'exécution de Blender du temps écoulé de bout en bout. Benchmarker uniquement lorsque demandé sur le même concept/modèle/état initial, en comparant également la qualité et le temps. Ne pas assimiler les octets de sortie à des économies de jetons.

Sauvegarde et récupération

Pour les modifications de couleur/UV, utiliser l'Undo de session et la politique de sauvegarde existante de Blender ; pas de fichier de récupération séparé. Mettre à jour le fichier de travail est autorisé, mais les limites du système de fichiers s'appliquent toujours. Résoudre une fois le chemin de sauvegarde autorisé et le réutiliser. Préférer l'outil Blender connecté lorsque c'est permis. Si une élévation est nécessaire, la demander uniquement pour la sauvegarde concrète protégée après QA. Ne pas redécouvrir le source du serveur ou implémenter du TCP brut par exécution. Un recours approuvé doit utiliser un hôte/port configuré en direct, jamais un port deviné ou une route contournant le refus.

Avant les modifications géométriques, sauvegarder une copie de récupération dans le dossier frère _backup/<working_stem>_gm_recovery.blend avec copy=True ; réutiliser uniquement cet emplacement appartenant à la compétence. Pour cette sauvegarde de récupération uniquement, enregistrer preferences.filepaths.save_version, le mettre temporairement à 0, et le restaurer dans finally. Ne pas persister les préférences, modifier la politique de sauvegarde de travail ou supprimer les sauvegardes utilisateur. Vérifier l'autorisation et la réussite de la sauvegarde de récupération avant de couper ; arrêter le travail géométrique si elle échoue.

Les modifications directes bpy peuvent laisser is_dirty=False : nécessiter un opérateur de sauvegarde explicite réussi, correspondant au chemin de fichier résultant et une vérification sale après sauvegarde. Préserver l'état de rollback en cas d'échec. Si la capture visuelle est indisponible, compléter la QA des données, marquer la fidélité visuelle comme non vérifiée et identifier la région pour une révision en direct.

Skills associés