Zum Inhalt

VTube Expression Toggle via Chat-Command

Expression (Mimik-Datei) per Command oder Reward an-/ausschalten. Anders als Hotkeys: Expression bleibt aktiv bis explizit deaktiviert.

Voraussetzung: VTube Studio verbunden (siehe setup.md) Patterns: Set Expression State + Delay (optional Auto-Off) Sub-Actions: 1-3 pro Command

Expression vs Hotkey

Expression Hotkey
Was Mimik/Pose-Datei Animation/Toggle-Aktion
Format .exp3.json VTS-interne ID
State Persistent (an/aus) Einmaliger Trigger
Sub-Action Set Expression State Trigger Hotkey by Name

Use-Case Expression: User soll Avatar 30 Sekunden traurig machen → surprised.exp3.json Enable, Delay, Disable. Use-Case Hotkey: Avatar soll einmal "winken" → Wave-Animation triggern.

Expression in VTube Studio anlegen

  1. Im VTube Studio → File-Menü → Open Model Folder
  2. Expressions Unterordner → .exp3.json Dateien
  3. Im VTube Studio anlegen via Live2D Editor oder von extern hinzufügen

Beispiel-Expressions: - surprised.exp3.json - angry.exp3.json - sad.exp3.json - happy.exp3.json - wink.exp3.json

Command: !sad — Avatar traurig für 10 Sekunden

Action: [Cmd] !sad

Sub-Action 1: Expression an

Pfad: Integrations → VTube Studio → Set Expression State

Feld Wert
Expression sad.exp3.json (oder über UI auswählen)
State Enabled
Fade Time 500 ms (sanfter Übergang)

Sub-Action 2: Delay

| Duration | 10000 ms |

Sub-Action 3: Expression aus

Feld Wert
Expression sad.exp3.json
State Disabled
Fade Time 500 ms

Action-Tree

[Cmd] !sad
├── 1. Set Expression State: sad.exp3.json = Enabled (Fade 500ms)
├── 2. Delay 10000 ms
└── 3. Set Expression State: sad.exp3.json = Disabled (Fade 500ms)

Command-Einstellungen

Feld Wert
Name !sad
Group AzaCraft VTube
Commands !sad
!cry
Sources Twitch Message
Global Cooldown 0
User Cooldown 30

Multi-Expression Bundle

Mehrere Expressions:

Command Expression Dauer
!sad sad.exp3.json 10s
!happy happy.exp3.json 10s
!angry angry.exp3.json 5s
!wink wink.exp3.json 2s
!surprise surprised.exp3.json 5s

Pro Command eine eigene Action mit identischem Sub-Action-Pattern.

Variante: Toggle ohne Auto-Off

Wenn die Expression bis zum nächsten Command bleiben soll:

[Cmd] !happy
└── Set Expression State: happy.exp3.json = Toggle

State = Toggle schaltet zwischen Enabled/Disabled bei jedem Aufruf. Vorteil: User kann selbst entscheiden wann's reicht.

Variante: Stack-Limit verhindern

Wenn viele User gleichzeitig !happy spammen, würde Avatar zwischen Enable/Disable flickern. Lösung: Action Queue auf Heart Rate Queue-Style mit Concurrent=1.

Plus: bei Random-Anrufen einen Cooldown-Check via Global:

[Cmd] !happy
├── 1. Global (Get): expressionLockUntil → lockTime
├── 2. If/Else: $time-diff(now, lockTime) Less Than 10
│   ├── Send Message: "@%user% Avatar grad anderweitig beschäftigt"
│   └── Break
├── 3. Global (Set): expressionLockUntil = $now()$ + 10s
├── 4. Set Expression State: happy = Enabled
├── 5. Delay 10000 ms
└── 6. Set Expression State: happy = Disabled

(Inline-Function-Syntax für Date-Math kann variieren — Pattern verstanden, Detail je nach SB-Version.)

Variante: Channel-Point-Reward für Expression

Statt Chat-Command einen Reward "Avatar emotional reaktion":

[Reward] Make Avatar Sad
├── 1. Set Expression State: sad = Enabled
├── 2. Send Message: "@%user% hat Avatar traurig gemacht 😢"
├── 3. Delay 30000 ms                 (30s = mehr Wert bei Channel Points)
└── 4. Set Expression State: sad = Disabled

Häufige Fallen

  • Expression-Filename Tippfehler — VTS findet's nicht, success = false
  • Mehrere Expressions gleichzeitig — VTS akzeptiert das, aber Animation kann seltsam aussehen. Bei UI-Konflikt Disable-First pattern
  • Fade-Time zu lang — bei 2000ms wirkt's träge. 200-500ms ist sweet spot
  • Auto-Off vergessen — Avatar bleibt sad bis Stream-Ende. Stream-Online-Trigger als Reset einbauen

Reset bei Stream-Start

Damit alle Expressions clean starten:

Action: [Sys] Stream Online — Reset Expressions

Trigger: Twitch → Channel → Stream Online

Sub-Actions:
1. Set Expression State: sad = Disabled
2. Set Expression State: happy = Disabled
3. Set Expression State: angry = Disabled
... (alle die du verwendest)

Quellen