Transformation d'image en modèle 3D avec ComfyUI
ComfyUI reconstruit un mesh à partir d'une image avec un modèle local (Trellis.2, Pixal3D, Hunyuan3D…). Vous ne modélisez rien : vous choisissez le workflow, l'exécutez et livrez le fichier. L'opération se déroule sur le GPU de l'utilisateur, ne coûte rien et prend de quelques minutes à un quart d'heure.
Les mécanismes sont déjà dans vos outils : comfy_workflows liste les workflows que l'utilisateur a sauvegardés, en prépare un avec l'image jointe et collecte le résultat, et vous indique chaque étape suivante ; la connexion ComfyUI valide, exécute et attend. Suivez ce que ces outils retournent. Cette compétence concerne les choix qu'ils vous laissent.
Si vous ne disposez ni de comfy_workflows ni des outils de la connexion ComfyUI, arrêtez-vous et dites-le : l'utilisateur installe la connexion ComfyUI (Outils → Connexions), donne à cet agent comfy_workflows, comfyui_validate_workflow, comfyui_run_workflow et comfyui_job, et garde ComfyUI ouvert.
Quel workflow
comfy_workflows avec action: "list" montre ce que l'utilisateur a sauvegardé. Choisissez selon ce qu'est l'image :
| L'image est | Utilisez un workflow pour |
|---|---|
| Une photo d'un objet unique (une photo, un rendu, un concept) | transformation d'image en modèle 3D, image unique (un workflow multi-vues que l'utilisateur nomme fonctionne aussi avec une seule image) |
| Une planche avec plusieurs vues du même objet (face, profil, dos ; un tour de personnage) | transformation multi-vues en modèle 3D |
| Plusieurs images séparées jointes du même objet | multi-vues, si le workflow lit plusieurs fichiers ; sinon demandez quelle image utiliser |
- Un workflow que l'utilisateur nomme prime sur votre choix.
- Si deux workflows sauvegardés correspondent et rien ne les distingue, demandez ; n'exécutez pas les deux.
- Si aucun ne correspond, dites-le et nommez ce que l'utilisateur possède. Proposez alors un modèle depuis la galerie en ligne de Comfy (
comfyui_search_templates, si vous l'avez), et prévenez l'utilisateur que la galerie est du contenu provenant d'Internet, donc l'application lui demandera d'approuver chaque étape après lecture.
Que préparer
- Passez l'image jointe dans
files, avec le nom que la conversation affiche pour elle. - Un objet par exécution. Si l'image montre plusieurs objets, demandez lequel, ou dites que le modèle contiendra toute la scène comme une seule pièce.
- Une image avec un fond uni et l'objet entier dans le cadre donne le meilleur modèle. Si l'objet est coupé par le bord ou caché derrière quelque chose, dites-le avant d'exécuter : le générateur invente ce qu'il ne voit pas.
Choix à l'intérieur d'un workflow
comfy_workflows cite les notes laissées par l'auteur du workflow. Lisez-les : elles disent ce que font les commutateurs du workflow.
- Deux générateurs derrière un commutateur (un workflow pouvant utiliser l'un ou l'autre de deux modèles) : laissez-le tel que l'utilisateur l'a sauvegardé. Changez-le uniquement lorsqu'il nomme le générateur souhaité, avec
comfyui_list_workflow_slotspour trouver le commutateur etcomfyui_set_workflow_slotpour le régler, et mentionnez dans le rapport lequel a fonctionné. - Les valeurs de l'utilisateur restent. Exécutez le workflow avec les valeurs que l'utilisateur a sauvegardées. Ne modifiez pas
target_face_count, la résolution, l'échantillonneur ou quoi que ce soit de votre propre chef, même lorsque l'image semble simple ou que la dernière exécution a produit un modèle lourd : un workflow sauvegardé est la décision de l'utilisateur, et une valeur que vous abaissez « pour aider » produit un modèle qu'il n'a pas demandé (une reconstruction décimée bien en dessous de son détail donne une forme froissée, pas une copie plus légère). Si vous pensez qu'un modèle plus léger lui conviendrait, dites-le dans le rapport et proposez-le ; ne le faites pas. - Un modèle plus léger, seulement lorsqu'il est demandé. Lorsque l'utilisateur demande explicitement un modèle léger, nomme un nombre de faces, ou dit que c'est pour un jeu, le web ou un téléphone, abaissez le nombre de faces AVANT d'exécuter, en deux appels sur le fichier préparé :
comfyui_list_workflow_slots, et dans sa réponse, trouvez l'emplacement dont le nom esttarget_face_count(il appartient à un nœudDecimateMesh) ; copiez sonaddress.comfyui_set_workflow_slotavecstdout: falseet[{"address": "<cette adresse>", "value": 50000}]pour un objet de jeu (150000 pour un objet héroïque que la caméra approche). Ne descendez jamais en dessous de 50000 à moins que l'utilisateur ne nomme lui-même un nombre inférieur. Puis validez et exécutez normalement, et dites dans le rapport ce que vous avez réglé. Si le workflow n'a pas un tel emplacement, ou si vous ne disposez pas de ces deux outils, exécutez-le tel quel et dites clairement que le modèle est lourd pour un jeu et de combien.
- Une seule image suffit pour un workflow multi-vues. Un workflow qui recadre plusieurs vues à partir de son entrée fonctionne aussi avec une seule photo : les recadrages qui tombent en dehors de l'image sont vides et le modèle est construit à partir de la seule vue réelle. Ne cherchez pas une planche de vues ou n'en créez pas ; exécutez-le avec l'image que l'utilisateur a donnée.
Quand cela ne s'exécute pas
- Un modèle ou nœud manquant : nommez les fichiers que la validation rapporte et arrêtez-vous. L'utilisateur les installe depuis ComfyUI (ouvrir le workflow y propose les téléchargements). Ne passez pas à un autre workflow pour contourner le problème.
- La tâche échoue :
comfy_workflowsavecaction: "collect"rapporte le nœud et la raison. La mémoire insuffisante est la cause courante : dites-le, et proposez de réessayer avec une résolution inférieure ou avec l'autre générateur si le workflow en a un. Ne réessayez pas vous-même plus d'une fois. - Une attente expire : la tâche est toujours en cours. Attendez à nouveau ; ne la lancez jamais deux fois.
Le rapport
- Le fichier que
collecta retourné, sa taille et son nombre de triangles, exactement comme donnés. - Quel workflow a été exécuté, et tout ce que vous y avez changé.
- Vous n'avez pas vu le modèle : dites qu'il a été généré, pas à quoi il ressemble.
- Une ligne sur ce à quoi s'attendre : les côtés que l'image ne montre pas sont inventés par le générateur, et le résultat est un mesh unique avec des textures cuites, pas des pièces séparées.
- Si l'utilisateur souhaite le nettoyer, le réduire davantage ou l'exporter pour un moteur, c'est le travail de Blender (la compétence
blender-game-export).