CommunityImagengithub.com

MysteryGodzilla/live2d

Crea un modelo Live2D riggeado (un paquete .moc3 con física, expresiones y movimientos) a partir de un dibujo anime de cuerpo completo, sin Cubism Editor ni rigging manual, usando los scripts de este kit.

¿Qué es live2d?

Este kit transforma un dibujo anime de cuerpo completo en un modelo Live2D funcional, listo para aplicaciones como AIRI u Open-LLM-VTuber. El proceso está completamente automatizado mediante scripts: genera el dibujo candidato (usando Qwen Image o ComfyUI), recorta, escala, separa en capas, corrige capas, construye el rig y permite visualizar el resultado en un visor web. El usuario solo debe ejecutar los pasos en orden, revisar cada resultado y corregir errores antes de continuar, ya que un fallo temprano (como una capa mal colocada) se vuelve mucho más difícil de rastrear después. Soporta múltiples plataformas (CLI y GUI) y permite ajustar expresiones, movimientos y físicas. Es ideal para creadores de VTubers, avatares o cualquier personaje 2D que requiera rigging profesional sin necesidad de software especializado.

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

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Modelo Live2D a partir de un dibujo

Este kit toma un dibujo de cuerpo completo de un personaje y lo convierte en un modelo Live2D que una aplicación como AIRI o Open-LLM-VTuber puede cargar. Los scripts hacen el trabajo. Tu parte es ejecutar los pasos en orden, mirar el resultado de cada uno y corregir lo que esté mal antes de que el siguiente paso construya sobre ello. Un fallo que dejes pasar al principio (una capa en el lugar equivocado) aparecerá después como algo mucho más difícil de rastrear (una pierna detrás de un abrigo).

Todo es un solo comando, ejecutado desde dentro del proyecto:

python <esta_carpeta>/live2d.py <paso> <nombre> ...

<nombre> es el nombre de la carpeta del personaje. live2d.py elige el Python que cada paso necesita e imprime el comando que ejecuta. Lee README.md en esta carpeta una vez antes de tu primer personaje: contiene las descargas, el archivo de configuración, cada paso con su comando y la tabla de correcciones de capas. Este archivo es cómo trabajar bien con el proceso.

También hay una interfaz gráfica para personas (live2d.py gui: los mismos pasos como botones en una página); un agente debe usar los comandos.

Antes de todo

  1. Ejecuta live2d.py check. Dice qué está instalado y qué falta para cada paso. Si falta algo, dile al usuario qué y de dónde viene (README, "Lo que necesitas"). Las descargas son de muchos gigabytes: pregunta antes de iniciar una. En un proyecto donde el kit aún no se ha usado (el check dice que no hay live2d-kit.json), ejecuta primero live2d.py init desde la carpeta principal del proyecto. Crea el archivo de configuración, un archivo de apariencia y el puntero de esta habilidad, y no cambia nada que ya exista. init --like <otro_proyecto> copia las rutas de las herramientas de un proyecto que ya las tenga.
  2. Ejecuta live2d.py status <nombre>. Marca los pasos completados y nombra el siguiente comando. Úsalo cada vez que retomes un personaje, en lugar de adivinar por los archivos.
  3. Pregunta al usuario antes de un paso que use la tarjeta gráfica (dibujar, recortar, escalar, separar). Esos pasos necesitan la tarjeta para ellos solos, y el usuario puede estar ejecutando algo en ella. split toma unos 10 minutos por pasada en una tarjeta libre, y puede llevar horas si algo más ocupa parte de ella: dímelo, y ejecútalo en segundo plano.
  4. draw --runpod cuesta dinero. Úsalo solo cuando el usuario lo solicite.
  5. Inicia y detén solo lo que tú iniciaste. live2d.py comfy status dice si ComfyUI está ejecutándose y quién lo inició: este proyecto, u otra carpeta (entonces es de alguien más: úsalo, pero no lo detengas). comfy stop detiene solo el que inició el comfy start de este proyecto. Detén el tuyo cuando los pasos de dibujar, recortar y escalar hayan terminado.

Los pasos, y qué revisar después de cada uno

PasoComandoEstá bien cuando
Dibujarcomfy start, luego draw <ronda> --character <nombre> --seeds ...El usuario elige uno. Muéstrale la hoja de contactos. No elijas por él a menos que lo pida
Elegirpick <nombre> <imagen>El dibujo cumple "Un dibujo que se riggea" en el README. Si no lo hace (brazos sobre el cuerpo, piernas juntas, un objeto en la mano), di qué saldrá mal antes de continuar
Recortar, escalarcutout <nombre>, upscale <nombre>, comfy stopfull/cutout.png muestra a todo el personaje y sin fondo. Un dibujo de draw tiene su propia transparencia: pick ya hizo el recorte, así que cutout no hace nada y solo se necesita upscale
Separarsplit <nombre> bodyImprime las capas. Espera unas 17: cabello, rostro, ojos, cejas, nariz, boca, cuello, ropa, brazos, piernas, zapatos
Revisar capaslayers check <nombre>El recuento son unos pocos miles de píxeles de contorno fino. Mira la imagen que guarda. Un bloque sólido de rojo es una capa que cubre lo que no debería
Pasada de cabezasplit <nombre> head, layers scale <nombre> 2, layers head ..., layers under <nombre> neck facelayers check de nuevo: el recuento no debe aumentar. La capa del rostro debe coincidir con el rostro de su dibujo
Partesparts closed-eyes <nombre>, parts mouth <nombre>Sus capas ahora incluyen eye_close y mouth_open. Qué boca abierta y qué rubor tiene es cuestión de gusto del usuario: ejecuta parts mouth-sheet <nombre> y parts blush-sheet <nombre>, muéstrale las dos imágenes y deja que elija un número (el README "Bocas y rubores"). Si la boca es demasiado grande, pequeña, alta, baja o inclinada, --size, --down, --right y --turn lo corrigen, primero en mouth-sheet para mostrárselo; el rubor acepta --size, --in, --down y --turn de la misma manera. parts mouth-oh <nombre> le da una boca en "O" para asustada y sorprendida. Si su boca cerrada es demasiado fina o tenue para verse, parts mouth-line <nombre> --try muestra un redibujado, parts mouth-line <nombre> lo crea, luego parts mouth <nombre> de nuevo
Construirbuild <nombre>Lee lo que imprime (abajo)
Verview, luego revisa las hojas (abajo)La lista en el README, "Probando su modelo"

La descripción del personaje proviene del archivo de apariencia del proyecto (check imprime dónde está; el README "Apariencias y estilos" tiene su formato). Escribe su apariencia allí, o cámbiala allí, antes de dibujar: es el único lugar que dice cómo se ve, para que la siguiente ronda y el siguiente agente dibujen el mismo personaje. Una apariencia incluye solo su cabello, ojos, complexión y ropa. El kit añade el encuadre y la pose misma, y una apariencia que los repite, o pide otra pose, va en contra del rig. draw ... --show imprime el prompt completo sin dibujar: léelo antes de gastar la tarjeta gráfica en una ronda. --look "..." es para una sola vez.

Después de la separación, mira cada imagen de capa en <characters>/<nombre>/layers/full/parts/ una vez. Buscas tres cosas: una capa que contenga dos cosas que deben moverse por separado (el frente de un abrigo y el interior de su espalda), una capa en el orden incorrecto y un par (brazos, piernas, ojos) que haya salido como una sola forma. El README "Corrigiendo las capas" dice qué hacer para cada una. Pon la razón de una configuración en su live2d.json bajo "why": la siguiente persona no puede ver lo que viste tú.

Leyendo lo que imprime build

  • head: her head turned -9.9 degrees ...: cuánto enderezó su cabeza. "No pair of eyes or brows" significa que una capa de ojo no se dividió en izquierda y derecha: corrige esa capa primero.
  • head turn: 13_face_base as face; 16_accessory as glasses; ...: qué consideró que era cada parte de la cabeza. Una parte tomada por la cosa equivocada se mueve incorrectamente: las gafas que no están listadas como gafas se desviarán de sus ojos.
  • body: her feet at ..., knees ..., hips ..., neck ...; 2 arms that bend, 2 legs that bend; ...: 0 brazos o 0 piernas significa que ese par es una sola forma en sus capas. Pies en 0.000 significa un píxel suelto en la parte inferior de una capa.
  • hair: 6 sections that swing each by itself (...): cómo se dividió su cabello. Una sección para el frente y otra para atrás significa que su cabello es estrecho, o su capa está en piezas: eso no es un fallo.
  • in the texture at the head pass's own size: face, eyelash, ...: las partes de la cabeza que fueron incluidas en su textura nítidas. Si no hay tal línea, significa que no tiene copias nítidas: layers sharp <nombre> las crea a partir de su PSD de cabeza conservado. changed since the head pass nombra las capas de cabeza editadas después de ella, que se usan al tamaño de su marco: eso es correcto, no un fallo.

Revisando su modelo sin mirar la pantalla

Inicia el visor (live2d.py view, en segundo plano) y abre http://127.0.0.1:8777/live2d/ en una herramienta de navegador. La página tiene window.sheets, que dibuja imágenes etiquetadas de poses mantenidas, fotogramas de movimiento y expresiones y las guarda como archivos que puedes leer. Lee los píxeles del renderizador, por lo que es correcta incluso cuando la página está oculta. Una captura de pantalla de una página oculta no lo es: muestra fotogramas antiguos.

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 fotograma es [x0, y0, x1, y1] en fracciones de la caja del modelo, o un patrón para el nombre de un drawable (/face/i, /neck/i) con un zoom. Pasa un fondo verde ("#30c060" como último argumento de poses) cuando busques huecos: un hueco muestra verde.

Mira las imágenes con atención. Acerca el zoom al lugar donde estaría un fallo (la barbilla, la cintura, un ojo) en lugar de juzgar desde una miniatura de cuerpo completo: la mayoría de los fallos encontrados hasta ahora tenían unos pocos píxeles de ancho. Revisa ambos extremos de cada movimiento, y dos movimientos juntos (un giro con una mirada, un levantamiento con una flexión), porque ahí es donde las partes se separan entre sí.

Cuando le muestres un resultado al usuario, envíale la imagen y dile claramente qué revisaste y qué no. El visor no es la aplicación: dímelo si no la has visto en la aplicación.

Cuando algo parece mal

  1. Encuentra qué parte es. Mantén la pose con los deslizadores, o crea una hoja con zoom sobre ella.
  2. Decide dónde vive el fallo. Está en sus capas si la imagen de la parte está mal, recortada, en el orden incorrecto, o lleva algo que pertenece a otra parte. Está en el rig si sus capas están bien y se mueve incorrectamente.
  3. Búscalo en references/problems.md. Lista lo que ha salido mal antes, por qué y la corrección.
  4. Los fallos de capas se corrigen con comandos layers o su live2d.json, luego build de nuevo.
  5. Los fallos de rig que todo personaje tendría se corrigen en scripts/rig.py, donde cada número y tabla tiene un comentario que dice por qué es como es. Añade tu razón cuando cambies uno. Un fallo que solo tiene un personaje pertenece a su live2d.json, leído por rig.py.
  6. Construye, recarga la página, crea la misma hoja de nuevo y compara. La recarga importa: la página mantiene el modelo que cargó, por lo que una hoja creada sin ella muestra al personaje como estaba antes de la construcción.

Ten cuidado con una corrección que afecte a más de lo que pretendías. Antes de cambiar una capa para todos los personajes, comprueba si los otros tenían el problema: una corrección aquí pintó rayas oscuras en un cabello que no tenía nada de malo.

Cambiando cómo se mueve, o qué puede mostrar

El README "Cambiando cómo se mueve" mapea cada cosa a su nombre en scripts/rig.py. Las expresiones son EXPRESSIONS, las reacciones al clic son TAPS, y los movimientos emocionales que reproduce una aplicación son EMOTIONS y BORROWED. Mantén los mismos nombres para cada personaje, para que la configuración y los avisos de la aplicación se escriban una sola vez.

Cuánto mover las cosas es cuestión del gusto del usuario. La guía general del primer usuario de este kit: el movimiento de la cabeza es para mirar cosas, así que los rasgos se deslizan un poco y los iris hacen la mayor parte de la mirada; el movimiento del cuerpo es sutil y mantiene los pies en el suelo. Muestra una imagen y deja que el usuario decida.

Finalizando

  • Dile al usuario dónde está su modelo: <out>/live2d/<nombre>-full.zip es lo que importa una aplicación.
  • Guarda su dibujo, recorte, dibujo escalado y todo en layers/full/ en el control de versiones. Todo en <out> se puede volver a crear.
  • Si aprendiste algo que una ejecución futura necesite (un nuevo tipo de fallo y su corrección), añade una fila a references/problems.md.
  • Detén el visor y ComfyUI si los iniciaste.

Skills relacionados