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¶
- Im VTube Studio → File-Menü → Open Model Folder
ExpressionsUnterordner →.exp3.jsonDateien- 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:
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¶
- Set Expression State: https://docs.streamer.bot/api/sub-actions/integrations/vtube-studio/set-expression-state
- VTube Setup: setup.md