3D avatars
Give a character a 3D VRM body that blinks, looks at you, lip-syncs, shows emotions and moves, with animations picked up from its assets by name.
A character can have a 3D avatar: a .vrm model that stands in for its picture. In Voxta Talk it breathes, blinks, follows you with its eyes, moves its mouth when it speaks, reacts to its own emotions, and switches animations as it listens, thinks and talks. You don't need any other app for this.
Get an avatar
- From VRoid Hub, inside Voxta. Browse, pick one, and either import it onto a character or build a new character around it. See VRoid Hub.
- Your own
.vrm. Made in VRoid Studio or anything else that exports VRM. Upload it to the character's Assets tab.
Then open the character's Apps tab, find the 3D Avatar section, and pick it in Default 3D Avatar. It takes priority over the 2D picture. If you never touch that field, a .vrm in the assets is picked up on its own. Choose None to turn that off.
Where it shows
| View | |
|---|---|
| Portrait | The character who is speaking. |
| Stage | Every character in the scene, each with their own avatar. |
| Desktop companion | Popped out onto your desktop from Voxta Desktop. |
Talk and Chat views show the 2D picture.
What it does on its own
| Idle | A built-in idle plays when nothing else is set, so the model never stands in a T-pose. |
| Blinking | Every few seconds. |
| Eyes | Follow the camera, with small natural glances. |
| Lip-sync | The mouth follows the voice. Needs a model with the standard mouth shapes (aa, ih, ee, oh, ou); a model without them still works, just with a still mouth. |
| Emotions | When the character feels something, its face shows it for a few seconds: happy, relaxed, sad, angry. |
Animations by name
Drop animation files into the character's Assets under a VRM/ folder, named after when they should play. Voxta picks them up with no setup.
A name is <Emotion>_<State>:
| State | Plays while |
|---|---|
Idle | Nothing is happening. |
Listening | You are talking. |
Thinking | The reply is being written. |
Talking | The character is speaking. |
The emotion is the character's current one: Neutral, Smile, Laugh, Love, Unhappy, Cry, Fear, Angry, Horny, Question or Surprise. If there's no file for the current emotion, the Neutral one plays, and Neutral_ can be left off entirely:
VRM/Idle.fbx ← any emotion, when idle
VRM/Talking.fbx ← any emotion, when talking
VRM/Angry_Talking.fbx ← only when angry and talking
VRM/Smile_Idle.json| Pattern | What it does |
|---|---|
VRM/Idle_1.fbx, VRM/Idle_2.fbx… | Numbered variants. One is picked at random, and idle rotates between them every so often. |
VRM/Laugh_Reaction.fbx | A reaction: plays once when the character starts laughing, then returns to the loop. Numbered variants work too. |
VRM/Neutral_Bored.fbx | A fidget: after 15–30 seconds of idle, plays once to break the stillness. Put it in the same folder as the idle. |
..._Fixed.fbx | Keeps this talking animation for the whole reply instead of switching sentence by sentence. |
VRM/Sitting/Idle.fbx | A posture folder. A scenario switches sets by setting a posture; see Postures. |
Naming works in chats that use the built-in Voxta UI scenario: the default when you chat with a character directly, and any scenario built on it. A scenario of your own can play any file with the SetAvatarAnimation trigger instead.
Or pick them by hand
The 3D Avatar section also has Idle Animation, Talking Animation, Thinking Animation and Listening Animation. Pick a file in each. The Preview animation button next to a field plays it on the avatar.
Animation formats
| Format | From |
|---|---|
.fbx | Mixamo, Unity and Xsens rigs. Retargeted onto the VRM automatically. |
.json | Motion from an animation service or the Animations playground. |
New motion from a sentence
With an animation service installed, a character can move in ways nobody animated by hand:
/performin chat: the character acts out something that fits the moment. Add a hint (/perform a little victory dance) to steer it. Needs a Summarization service, which writes the motion from the chat./animate <description>: exactly the motion you describe.- Scripts:
chat.perform()andchat.generateAnimation().
The clip plays once on the avatar, then it goes back to what it was doing. It is saved with the chat.