Was macht Live2D-Modell aus einer Zeichnung?
Dieses Kit verwandelt eine einzige Ganzkörperzeichnung einer Figur in ein Live2D-Modell, das eine App wie AIRI oder Open-LLM-VTuber laden kann. Die Skripte erledigen die Arbeit. Ihre Aufgabe ist es, die Schritte der Reihe nach auszuführen, sich das Ergebnis jedes Schrittes anzusehen und zu korrigieren, was nicht stimmt, bevor der nächste Schritt darauf aufbaut. Ein Fehler, den Sie früh durchlassen (eine Ebene an der falschen Stelle), zeigt sich später als etwas, das viel schwerer nachvollziehbar ist (ein Bein hinter einem Mantel).
Alles ist ein Befehl, der innerhalb des Projekts ausgeführt wird:
python <dieser Ordner>/live2d.py <Schritt> <Name> ...
<Name> ist der Ordnername der Figur. live2d.py wählt das Python aus, das jeder Schritt benötigt, und gibt den Befehl aus, den es ausführt. Lesen Sie vor Ihrem ersten Charakter einmal die README.md in diesem Ordner: Sie enthält die Downloads, die Einstellungsdatei, jeden Schritt mit seinem Befehl und die Tabelle der Ebenenkorrekturen. Diese Datei erklärt, wie man gut damit arbeitet.
Es gibt auch eine GUI für Menschen (live2d.py gui: die gleichen Schritte als Schaltflächen auf einer Seite); ein Agent sollte die Befehle verwenden.
Vor allem
- Führen Sie
live2d.py checkaus. Es zeigt an, was installiert ist und was für welchen Schritt fehlt. Wenn etwas fehlt, sagen Sie dem Benutzer, was und woher es kommt (README, „Was Sie brauchen"). Downloads sind viele Gigabyte: Fragen Sie, bevor Sie einen starten. In einem Projekt, in dem das Kit noch nicht verwendet wurde (die Überprüfung ergibt, dass es keinelive2d-kit.jsongibt), führen Sie zuerstlive2d.py initim obersten Ordner des Projekts aus. Es erstellt die Einstellungsdatei, eine Looks-Datei und diesen Skill-Zeiger und ändert nichts, was bereits vorhanden ist.init --like <anderes Projekt>kopiert die Tool-Pfade aus einem Projekt, das sie bereits hat. - Führen Sie
live2d.py status <Name>aus. Es hakt die erledigten Schritte ab und nennt den nächsten Befehl. Verwenden Sie es, wenn Sie eine Figur wieder aufnehmen, anstatt anhand der Dateien zu raten. - Fragen Sie den Benutzer vor einem Schritt, der die Grafikkarte beansprucht (zeichnen, freistellen, hochskalieren, aufteilen). Diese Schritte benötigen die Karte für sich allein, und der Benutzer führt möglicherweise etwas darauf aus.
splitdauert auf einer freien Karte etwa 10 Minuten pro Durchgang und kann Stunden dauern, wenn irgendetwas anderes einen Teil davon belegt: Sagen Sie das und führen Sie es im Hintergrund aus. draw --runpodkostet Geld. Verwenden Sie es nur, wenn der Benutzer danach fragt.- Starten und stoppen Sie nur, was Sie gestartet haben.
live2d.py comfy statuszeigt an, ob ComfyUI läuft und wer es gestartet hat: dieses Projekt oder ein anderer Ordner (dann gehört es jemand anderem: nutzen Sie es, aber stoppen Sie es nicht).comfy stopstoppt nur das, wascomfy startdieses Projekts gestartet hat. Stoppen Sie Ihres, wenn die Schritte Zeichnen, Freistellen und Hochskalieren abgeschlossen sind.
Die Schritte und worauf nach jedem zu achten ist
| Schritt | Befehl | Richtig ist, wenn |
|---|---|---|
| Zeichnen | comfy start, dann draw <Runde> --character <Name> --seeds ... | Der Benutzer wählt eines aus. Zeigen Sie ihm das Kontaktblatt. Wählen Sie nicht für ihn, es sei denn, er bittet darum |
| Auswählen | pick <Name> <Bild> | Die Zeichnung erfüllt „Eine Zeichnung, die riggt" in der README. Wenn nicht (Arme am Körper, Beine zusammen, ein Requisit in der Hand), sagen Sie, was schiefgehen wird, bevor Sie fortfahren |
| Freistellen, Hochskalieren | cutout <Name>, upscale <Name>, comfy stop | full/cutout.png zeigt sie vollständig und keinen Hintergrund. Eine Zeichnung von draw hat ihre eigene Transparenz: pick hat das Freistellen bereits erledigt, also macht cutout nichts und nur upscale wird benötigt |
| Aufteilen | split <Name> body | Es gibt ihre Ebenen aus. Erwarten Sie etwa 17: Haare, Gesicht, Augen, Brauen, Nase, Mund, Hals, Kleidung, Arme, Beine, Schuhe |
| Ebenen prüfen | layers check <Name> | Die Anzahl beträgt ein paar tausend Pixel dünner Konturlinien. Sehen Sie sich das gespeicherte Bild an. Ein durchgehender roter Block ist eine Ebene, die bedeckt, was sie nicht sollte |
| Kopf-Durchlauf | split <Name> head, layers scale <Name> 2, layers head ..., layers under <Name> neck face | layers check erneut: Die Anzahl sollte nicht springen. Ihre Gesichtsebene sollte mit dem Gesicht ihrer Zeichnung übereinstimmen |
| Teile | parts closed-eyes <Name>, parts mouth <Name> | Ihre Ebenen enthalten jetzt eye_close und mouth_open. Welchen offenen Mund und welches Erröten sie hat, ist Geschmackssache des Benutzers: machen Sie parts mouth-sheet <Name> und parts blush-sheet <Name>, zeigen Sie ihm die beiden Bilder und lassen Sie ihn eine Zahl auswählen (die README, „Münder und Errötungen"). Wenn der Mund zu groß, zu klein, zu hoch, zu tief oder geneigt ist, korrigieren --size, --down, --right und --turn das, zuerst an mouth-sheet, um es ihm zu zeigen; das Erröten nimmt --size, --in, --down und --turn auf die gleiche Weise. parts mouth-oh <Name> gibt ihr einen „O"-Mund für Angst und Überraschung. Wenn ihr geschlossener Mund zu dünn oder schwach ist, um gesehen zu werden, zeigt parts mouth-line <Name> --try eine Neukontur, parts mouth-line <Name> erstellt sie, dann parts mouth <Name> erneut |
| Bauen | build <Name> | Lesen Sie, was es ausgibt (unten) |
| Ansehen | view, dann Prüfblätter (unten) | Die Liste in der README, „Ihr Modell ausprobieren" |
Die Beschreibung der Figur stammt aus der Looks-Datei des Projekts (check gibt an, wo sie ist; die README unter „Looks und Stile" hat ihr Format). Schreiben Sie ihren Look dort hinein oder ändern Sie ihn dort, bevor Sie zeichnen: Es ist der einzige Ort, der beschreibt, wie sie aussieht, damit die nächste Runde und der nächste Agent dieselbe Figur zeichnen. Ein Look sind nur ihre Haare, Augen, Statur und Kleidung. Das Kit fügt die Rahmung und die Pose selbst hinzu, und ein Look, der diese wiederholt oder eine andere Pose verlangt, arbeitet gegen das Rig. draw ... --show gibt den gesamten Prompt aus, ohne zu zeichnen: Lesen Sie ihn, bevor Sie die Grafikkarte für eine Runde verschwenden. --look "..." ist für einmalige Gelegenheiten.
Sehen Sie sich nach der Aufteilung jedes Ebenenbild in <characters>/<Name>/layers/full/parts/ einmal an. Achten Sie auf drei Dinge: eine Ebene, die zwei Dinge enthält, die sich trennen müssen (die Vorderseite eines Mantels und die Innenseite seines Rückens), eine Ebene in der falschen Reihenfolge und ein Paar (Arme, Beine, Augen), das als eine Form herausgekommen ist. Die README unter „Ebenen korrigieren" sagt, was für jedes zu tun ist. Tragen Sie den Grund für eine Einstellung in ihre live2d.json unter "why" ein: Die nächste Person kann nicht sehen, was Sie gesehen haben.
Was die Build-Ausgabe bedeutet
head: her head turned -9.9 degrees ...: wie weit es ihren Kopf ausgerichtet hat. „No pair of eyes or brows" bedeutet, dass eine Augenebene nicht in links und rechts aufgeteilt wurde: Korrigieren Sie zuerst diese Ebene.head turn: 13_face_base as face; 16_accessory as glasses; ...: wofür es jedes Kopfteil gehalten hat. Ein Teil, das für die falsche Sache gehalten wird, bewegt sich falsch: Eine Brille, die nicht als Brille gelistet ist, wird von ihren Augen abdriftet.body: her feet at ..., knees ..., hips ..., neck ...; 2 arms that bend, 2 legs that bend; ...: 0 Arme oder 0 Beine bedeuten, dass das Paar eine Form in ihren Ebenen ist. Füße bei 0.000 bedeuten ein einzelnes Pixel am unteren Rand einer Ebene.hair: 6 sections that swing each by itself (...): wie ihre Haare aufgeteilt wurden. Ein Abschnitt für die Vorderseite und einer für die Rückseite bedeutet, dass ihre Haare schmal sind oder ihre Ebene in Stücken ist: Das ist kein Fehler.in the texture at the head pass's own size: face, eyelash, ...: die Kopfteile, die scharf in ihre Textur eingegangen sind. Keine solche Zeile bedeutet, dass sie keine scharfen Kopien hat:layers sharp <Name>erstellt sie aus ihrer aufbewahrten Kopf-PSD.changed since the head passnennt Kopfteile, die nach dem Durchlauf bearbeitet wurden und in der Größe ihres Rahmens verwendet werden: Das ist richtig, kein Fehler.
Das Modell prüfen, ohne auf den Bildschirm zu schauen
Starten Sie den Viewer (live2d.py view, im Hintergrund) und öffnen Sie http://127.0.0.1:8777/live2d/ in einem Browser-Tool. Die Seite hat window.sheets, das beschriftete Bilder von gehaltenen Posen, Bewegungsbildern und Ausdrücken zeichnet und als Dateien speichert, die Sie lesen können. Es liest die Pixel des Renderers zurück, ist also auch dann korrekt, wenn die Seite versteckt ist. Ein Screenshot einer versteckten Seite ist das nicht: Er zeigt veraltete Bilder.
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();
Ein Rahmen ist [x0, y0, x1, y1] in Anteilen der Modellbox oder ein Muster für den Namen einer Zeichenfläche (/face/i, /neck/i) mit einem Zoom. Übergeben Sie einen grünen Hintergrund ("#30c060" als letztes Argument von poses), wenn Sie nach Lücken suchen: Eine Lücke zeigt grün.
Sehen Sie sich die Bilder genau an. Zoomen Sie auf die Stelle, an der ein Fehler sein könnte (das Kinn, die Taille, ein Auge), anstatt aus einer Miniaturansicht der ganzen Figur zu urteilen: Die meisten bisher gefundenen Fehler waren nur wenige Pixel breit. Überprüfen Sie beide Enden jeder Bewegung und zwei Bewegungen zusammen (eine Drehung mit einem Blick, ein Heben mit einer Beugung), weil sich dort Teile voneinander lösen.
Wenn Sie dem Benutzer ein Ergebnis zeigen, senden Sie ihm das Bild und sagen Sie deutlich, was Sie überprüft haben und was nicht. Der Viewer ist nicht die App: Sagen Sie es, wenn Sie sie nicht in der App gesehen haben.
Wenn etwas falsch aussieht
- Finden Sie heraus, welcher Teil es ist. Halten Sie die Pose mit den Schiebereglern oder erstellen Sie ein darauf gezoomtes Blatt.
- Entscheiden Sie, wo der Fehler lebt. Er liegt in ihren Ebenen, wenn das Bild des Teils falsch, abgeschnitten, in der falschen Reihenfolge ist oder etwas trägt, das zu einem anderen Teil gehört. Er liegt im Rig, wenn ihre Ebenen in Ordnung sind und sie sich falsch bewegt.
- Schlagen Sie es in
references/problems.mdnach. Es listet auf, was bisher schiefgegangen ist, warum und die Lösung. - Ebenenfehler werden mit
layers-Befehlen oder ihrerlive2d.jsonkorrigiert, dannbuilderneut ausführen. - Rig-Fehler, die jeder Charakter hätte, werden in
scripts/rig.pykorrigiert, wo jede Zahl und Tabelle einen Kommentar hat, der sagt, warum sie ist, was sie ist. Fügen Sie Ihren Grund hinzu, wenn Sie einen ändern. Ein Fehler, den nur ein Charakter hat, gehört in seinelive2d.json, die vonrig.pygelesen wird. - Bauen, die Seite neu laden, das gleiche Blatt erneut erstellen und vergleichen. Das Neuladen ist wichtig: Die Seite behält das geladene Modell, daher zeigt ein ohne Neuladen erstelltes Blatt sie so, wie sie vor dem Build war.
Seien Sie vorsichtig mit einer Korrektur, die mehr betrifft, als Sie beabsichtigt haben. Bevor Sie eine Ebene für jeden Charakter ändern, prüfen Sie, ob die anderen das Problem hatten: Eine Korrektur hier malte dunkle Streifen in Haare, die nichts damit zu tun hatten.
Ändern, wie sie sich bewegt oder was sie zeigen kann
Die README unter „Ändern, wie sie sich bewegt" ordnet jedes Ding seinem Namen in scripts/rig.py zu. Ausdrücke sind EXPRESSIONS, die Klickreaktionen sind TAPS und die Emotionsbewegungen, die eine App abspielt, sind EMOTIONS und BORROWED. Behalten Sie die Namen für jeden Charakter gleich, damit die Einstellungen und Aufforderungen der App nur einmal geschrieben werden.
Wie weit man Dinge bewegt, ist Geschmackssache des Benutzers. Die übliche Richtlinie vom ersten Benutzer dieses Kits: Kopfbewegung dient zum Anschauen von Dingen, also gleiten die Merkmale ein wenig und die Iris macht den größten Teil des Schauens; Körperbewegung ist subtil und hält ihre Füße auf dem Boden. Zeigen Sie ein Bild und lassen Sie ihn entscheiden.
Abschluss
- Sagen Sie dem Benutzer, wo sein Modell ist:
<out>/live2d/<Name>-full.zipist das, was eine App importiert. - Behalten Sie ihre Zeichnung, das Freigestellte, die hochskalierte Zeichnung und alles in
layers/full/in der Versionskontrolle. Alles in<out>kann neu erstellt werden. - Wenn Sie etwas gelernt haben, das ein zukünftiger Durchlauf benötigt (eine neue Art von Fehler und seine Lösung), fügen Sie eine Zeile zu
references/problems.mdhinzu. - Stoppen Sie den Viewer und ComfyUI, wenn Sie sie gestartet haben.