CommunityImagegithub.com

MysteryGodzilla/live2d

Créez un modèle Live2D riggé (un bundle .moc3 avec physique, expressions et mouvements) à partir d'un seul dessin d'anime en pied, sans Cubism Editor et sans rigging manuel, grâce aux scripts de ce kit. Utilisez-le à chaque fois que l'utilisateur souhaite un modèle Live2D, un avatar, un modèle VTuber ou le rig d'un personnage, veut qu'un autre personnage passe par ce pipeline, signale un problème visuel dans un modèle créé ici (double ligne de menton, écart à la taille, yeux ou iris, bras, genoux, cheveux, tête inclinée), ou souhaite modifier ses expressions, ses mouvements ou sa manière de bouger – même s'il dit simplement « fais-lui un modèle » ou « corrige ses yeux ».

Qu'est-ce que live2d ?

Ce kit transforme un dessin d'anime en pied en un modèle Live2D complet, prêt à être chargé par des applications comme AIRI ou Open-LLM-VTuber. Tout se fait via des scripts en ligne de commande, sans avoir besoin de Cubism Editor ni de rigging manuel. Le pipeline comprend la génération de dessins candidats (via Qwen), le découpage, la mise à l'échelle, la séparation des calques, les corrections de calques, le rigging automatisé et la construction du modèle. Chaque étape produit un résultat qu'il faut vérifier avant de passer à la suivante, car une erreur précoce (comme un calque mal placé) devient beaucoup plus difficile à tracer plus tard. Le kit est conçu pour être utilisé à la fois par des humains (via une interface graphique simple) et par des agents IA (via les commandes directes). Il inclut un visualiseur intégré pour tester le modèle, des outils pour diagnostiquer et corriger les problèmes de calques ou de rigging, et un système de gestion des expressions, des mouvements et des réactions. L'utilisateur est impliqué à chaque étape clé, notamment pour choisir le dessin final et valider les choix esthétiques (bouches, rougissements).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MysteryGodzilla/live2d/tree/HEAD

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

Modèle Live2D à partir d'un seul dessin

Ce kit transforme un dessin d'un personnage en pied en un modèle Live2D qu'une application comme AIRI ou Open-LLM-VTuber peut charger. Les scripts font le travail. Votre rôle est d'exécuter les étapes dans l'ordre, d'examiner le résultat de chacune et de corriger ce qui ne va pas avant que l'étape suivante ne s'appuie dessus. Un défaut que vous laissez passer tôt (un calque mal placé) se manifeste plus tard sous une forme beaucoup plus difficile à tracer (une jambe derrière un manteau).

Tout se fait avec une seule commande, exécutée depuis le projet :

python <ce_dossier>/live2d.py <étape> <nom> ...

<nom> est le nom du dossier du personnage. live2d.py choisit le Python nécessaire à chaque étape et affiche la commande qu'il exécute. Lisez README.md dans ce dossier une fois avant votre premier personnage : il contient les téléchargements, le fichier de paramètres, chaque étape avec sa commande, et le tableau des corrections de calques. Ce fichier est votre guide pour bien progresser.

Il existe aussi une interface graphique pour les humains (live2d.py gui : les mêmes étapes sous forme de boutons dans une page) ; un agent doit utiliser les commandes.

Avant toute chose

  1. Exécutez live2d.py check. Il indique ce qui est installé et ce qui manque pour quelle étape. Si quelque chose manque, dites à l'utilisateur quoi et d'où cela vient (README, « Ce dont vous avez besoin »). Les téléchargements pèsent plusieurs gigaoctets : demandez avant d'en lancer un. Dans un projet où le kit n'a pas encore été utilisé (check indique qu'il n'y a pas de live2d-kit.json), exécutez d'abord live2d.py init depuis le dossier racine du projet. Il crée le fichier de paramètres, un fichier d'apparence et le pointeur de cette compétence, et ne modifie rien de ce qui existe déjà. init --like <autre_projet> copie les chemins des outils depuis un projet qui les a déjà.
  2. Exécutez live2d.py status <nom>. Il coche les étapes effectuées et donne le nom de la prochaine commande. Utilisez-le à chaque fois que vous reprenez un personnage, plutôt que de deviner à partir des fichiers.
  3. Demandez à l'utilisateur avant une étape qui utilise la carte graphique (draw, cutout, upscale, split). Ces étapes ont besoin de la carte pour elles seules, et l'utilisateur peut être en train d'exécuter quelque chose dessus. split prend environ 10 minutes par passage sur une carte libre, et peut prendre des heures si quoi que ce soit d'autre en occupe une partie : dites-le, et exécutez-le en arrière-plan.
  4. draw --runpod coûte de l'argent. Utilisez-le uniquement lorsque l'utilisateur le demande.
  5. Démarrez et arrêtez uniquement ce que vous avez démarré. live2d.py comfy status indique si ComfyUI est en cours d'exécution et qui l'a démarré : ce projet, ou un autre dossier (dans ce cas, c'est celui d'un autre : utilisez-le, mais ne l'arrêtez pas). comfy stop arrête uniquement celui que comfy start de ce projet a démarré. Arrêtez le vôtre une fois les étapes de dessin, de découpage et de mise à l'échelle terminées.

Les étapes et ce qu'il faut vérifier après chacune

ÉtapeCommandeC'est correct quand...
Dessinercomfy start, puis draw <tour> --character <nom> --seeds ...L'utilisateur en choisit un. Montrez-lui la planche contact. Ne choisissez pas à sa place sauf s'il le demande
Choisirpick <nom> <image>Le dessin correspond à « Un dessin qui se rigge » dans le README. Si ce n'est pas le cas (bras sur le corps, jambes serrées, un accessoire dans la main), dites ce qui va mal se passer avant de continuer
Découpage, mise à l'échellecutout <nom>, upscale <nom>, comfy stopfull/cutout.png montre tout le personnage et aucun arrière-plan. Un dessin provenant de draw a sa propre transparence : pick a déjà fait le découpage, donc cutout ne fait rien et seul upscale est nécessaire
Séparationsplit <nom> bodyIl affiche ses calques. Attendez-vous à environ 17 : cheveux, visage, yeux, sourcils, nez, bouche, cou, vêtements, bras, jambes, chaussures
Vérifier les calqueslayers check <nom>Le nombre est de quelques milliers de pixels de contour fin. Regardez l'image qu'il sauvegarde. Un bloc de rouge uni est un calque qui recouvre ce qu'il ne devrait pas
Passage de la têtesplit <nom> head, layers scale <nom> 2, layers head ..., layers under <nom> neck facelayers check à nouveau : le nombre ne doit pas augmenter brusquement. Le calque de son visage doit s'aligner avec le visage de son dessin
Partiesparts closed-eyes <nom>, parts mouth <nom>Ses calques incluent maintenant eye_close et mouth_open. Quelle bouche ouverte et quel rougissement elle a sont une question de goût de l'utilisateur : faites parts mouth-sheet <nom> et parts blush-sheet <nom>, montrez-lui les deux images, et laissez-le choisir un numéro (le README, « Bouches et rougissements »). Si la bouche est trop grande, trop petite, trop haute, trop basse ou inclinée, --size, --down, --right et --turn la corrigent, d'abord sur mouth-sheet pour les montrer ; le rougissement accepte --size, --in, --down et --turn de la même manière. parts mouth-oh <nom> lui donne une bouche en « O » pour les expressions effrayées et surprises. Si sa bouche fermée est trop fine ou trop peu visible, parts mouth-line <nom> --try montre un redessin, parts mouth-line <nom> le crée, puis refaites parts mouth <nom>
Constructionbuild <nom>Lisez ce qu'il affiche (ci-dessous)
Visualisationview, puis vérifiez les planches (ci-dessous)La liste dans le README, « Essayer son modèle »

La description du personnage vient du fichier d'apparence du projet (check indique où il se trouve ; le README, « Apparences et styles », a son format). Écrivez son apparence là-dedans, ou modifiez-la là-dedans, avant de dessiner : c'est l'endroit unique qui décrit à quoi elle ressemble, afin que le tour suivant et l'agent suivant dessinent le même personnage. Une apparence comprend seulement ses cheveux, ses yeux, sa corpulence et ses vêtements. Le kit ajoute le cadrage et la pose elle-même, et une apparence qui les répète, ou qui demande une autre pose, va à l'encontre du rig. draw ... --show affiche le prompt complet sans dessiner : lisez-le avant d'utiliser la carte graphique pour un tour. --look "..." est pour un usage unique.

Après la séparation, regardez une fois chaque image de calque dans <characters>/<nom>/layers/full/parts/. Vous cherchez trois choses : un calque qui contient deux éléments qui doivent bouger séparément (le devant d'un manteau et l'intérieur de son dos), un calque dans le mauvais ordre, et une paire (bras, jambes, yeux) qui est ressortie comme une seule forme. Le README, « Corriger les calques », explique quoi faire pour chacun. Mettez la raison d'un paramètre dans son live2d.json sous "why" : la personne suivante ne peut pas voir ce que vous avez vu.

Lire ce que build affiche

  • head: her head turned -9.9 degrees ... : à quel point il a redressé sa tête. « No pair of eyes or brows » signifie qu'un calque d'œil n'a pas été séparé en gauche et droite : corrigez d'abord ce calque.
  • head turn: 13_face_base as face; 16_accessory as glasses; ... : ce qu'il a pris pour chaque partie de la tête. Une partie prise pour la mauvaise chose bouge mal : des lunettes qui ne sont pas répertoriées comme lunettes dériveront de ses yeux.
  • body: her feet at ..., knees ..., hips ..., neck ...; 2 arms that bend, 2 legs that bend; ... : 0 bras ou 0 jambes signifie que cette paire est une seule forme dans ses calques. Feet at 0.000 signifie un pixel errant en bas d'un calque.
  • hair: 6 sections that swing each by itself (...) : comment ses cheveux ont été divisés. Une section pour l'avant et une pour l'arrière signifie que ses cheveux sont étroits, ou que leur calque est en morceaux : ce n'est pas un défaut.
  • in the texture at the head pass's own size: face, eyelash, ... : les parties de la tête qui sont entrées dans sa texture en net. Aucune ligne de ce type signifie qu'elle n'a pas de copies nettes : layers sharp <nom> les crée à partir de son PSD de tête conservé. changed since the head pass nomme les calques de tête édités après celui-ci, qui sont utilisés à la taille de son cadre : c'est correct, pas un défaut.

Vérifier son modèle sans regarder l'écran

Démarrez le visualiseur (live2d.py view, en arrière-plan) et ouvrez http://127.0.0.1:8777/live2d/ dans un outil de navigateur. La page a window.sheets, qui dessine des images légendées des poses tenues, des trames de mouvement et des expressions et les sauvegarde sous forme de fichiers que vous pouvez lire. Il relit les pixels du rendu, donc il est correct même lorsque la page est cachée. Une capture d'écran d'une page cachée ne l'est pas : elle montre des images obsolètes.

const u = "/live2d/models/akane-full/model/model.model3.json";
await sheets.poses([
  ["face", u, /face/i, 2.6, [["rest", {}], ["turn", {ParamAngleX: 30, ParamEyeBallX: 1}],
                              ["half shut", {ParamEyeLOpen: 0.5, ParamEyeROpen: 0.5}], ["tilt", {ParamAngleZ: -30}]]],
  ["body", u, [0.15, 0, 0.85, 1], 0, [["rest", {}], ["sway", {ParamBodyAngleX: 10}],
                                      ["arms", {ParamArmLA: 10, ParamArmLB: -10}], ["knee", {ParamLegLB: 10}]]],
], 200, 300);
await sheets.save("akane-check");                 // -> <out>/live2d/checks/akane-check.png
await sheets.expressions(u, ["(none)", "happy", "tired", "blushing", "angry", "scared"], /face/i, 1.6, 133, 170);
await sheets.save("akane-expressions");
await sheets.motion(u, "TapHead", /face/i, 1.6, 133, 170, 6, 13);
await sheets.save("akane-taphead");
sheets.done();

Un cadre est [x0, y0, x1, y1] en parts de la boîte du modèle, ou un motif pour le nom d'un élément dessinable (/face/i, /neck/i) avec un zoom. Passez un fond vert ("#30c060" comme dernier argument de poses) lorsque vous cherchez des espaces vides : un espace vide montre du vert.

Regardez attentivement les images. Zoomez sur l'endroit où un défaut pourrait se trouver (le menton, la taille, un œil) plutôt que de juger à partir d'une vignette du personnage entier : la plupart des défauts trouvés jusqu'à présent faisaient quelques pixels de large. Vérifiez les deux extrémités de chaque mouvement, et deux mouvements ensemble (une rotation avec un regard, un soulèvement avec une flexion), car c'est là que les parties se séparent les unes des autres.

Lorsque vous montrez un résultat à l'utilisateur, envoyez-lui l'image et dites clairement ce que vous avez vérifié et ce que vous n'avez pas vérifié. Le visualiseur n'est pas l'application : dites-le si vous ne l'avez pas vue dans l'application.

Quand quelque chose semble anormal

  1. Trouvez de quelle partie il s'agit. Maintenez la pose avec les curseurs, ou créez une planche zoomée dessus.
  2. Décidez où se trouve le défaut. Il est dans ses calques si l'image de la partie est fausse, coupée court, dans le mauvais ordre, ou porte quelque chose qui appartient à une autre partie. Il est dans le rig si ses calques sont corrects et qu'elle bouge mal.
  3. Cherchez-le dans references/problems.md. Il répertorie ce qui a déjà mal fonctionné, pourquoi, et la correction.
  4. Les défauts de calques sont corrigés avec des commandes layers ou son live2d.json, puis build à nouveau.
  5. Les défauts de rig que tous les personnages auraient sont corrigés dans scripts/rig.py, où chaque nombre et tableau a un commentaire expliquant pourquoi il est ce qu'il est. Ajoutez votre raison lorsque vous en changez un. Un défaut qu'un seul personnage a appartient à son live2d.json, lu par rig.py.
  6. Construisez, rechargez la page, refaites la même planche et comparez. Le rechargement est important : la page garde le modèle qu'elle a chargé, donc une planche faite sans rechargement le montre tel qu'il était avant la construction.

Soyez prudent avec une correction qui touche plus que ce que vous vouliez. Avant de modifier un calque pour tous les personnages, vérifiez si les autres avaient le problème : une correction a ici peint des rayures sombres dans des cheveux qui n'avaient rien de mal.

Changer sa façon de bouger, ou ce qu'elle peut montrer

Le README, « Changer sa façon de bouger », associe chaque chose à son nom dans scripts/rig.py. Les expressions sont EXPRESSIONS, les réactions aux clics sont TAPS, et les mouvements d'émotion qu'une application joue sont EMOTIONS et BORROWED. Gardez les noms identiques pour chaque personnage, afin que les paramètres et les prompts de l'application soient écrits une seule fois.

Jusqu'où bouger les choses est une question de goût de l'utilisateur. La directive constante du premier utilisateur de ce kit : le mouvement de la tête sert à regarder les choses, donc les traits glissent un peu et les iris font l'essentiel du regard ; le mouvement du corps est subtil et garde ses pieds au sol. Montrez une image et laissez-les décider.

Pour finir

  • Dites à l'utilisateur où se trouve son modèle : <out>/live2d/<nom>-full.zip est ce qu'une application importe.
  • Gardez son dessin, son découpage, son dessin mis à l'échelle et tout ce qui se trouve dans layers/full/ dans le contrôle de version. Tout ce qui se trouve dans <out> peut être refait.
  • Si vous avez appris quelque chose dont une exécution future aura besoin (un nouveau type de défaut et sa correction), ajoutez une ligne à references/problems.md.
  • Arrêtez le visualiseur et ComfyUI si vous les avez démarrés.

Skills associés