A VRM is a 3D character format rendered by the 3D stage, which renders Live2D too
The 3D stage runs on WebGPU, falling back to WebGL on machines without it, and lives in a background thread to reduce the impact of complex scenes on interface responsiveness
Both VRM 0.x and VRM 1.0 models load, including their different look-at and expression conventions, using the conventions of each version. A .vrm or .glb opens through the same Open Model… flow as a Live2D model
Bundled Avatars
Two VRM avatars ship with the application:
| Avatar | Spec | License |
|---|---|---|
| Milky Green | VRM 1.0 | VRM Public License 1.0 |
| RAYNOS-chan | VRM 0.x | Sony Character EULA |
Milky Green carries a required credit — LAPLACE Live! and Milky Green aka. 明前奶绿 — which Persona displays in its About dialog along with the other third-party notices. A model's own licence terms appear in the License row of its info block, flagged when the author requires attribution
Camera
Where a Live2D model is a flat canvas you drag and zoom, a VRM sits in a 3D scene with an orbit camera:
| Gesture | Effect |
|---|---|
| Drag | Orbit around the avatar |
| Right-drag | Pan the camera target, even with an item selected |
| Alt / ⌥ + drag | Pan the camera target |
| Scroll | Dolly in and out |
Movement is eased with the same inertia feel as the Live2D stage, and elevation stops short of the poles so the camera never flips. Reset Camera returns to the default framing, which is derived from the avatar's own bounding box, and Field of View sets the lens between 10° and 90°. The camera's Position can be typed or dragged in the Stage detail too — see Camera
The camera belongs to the scene, not to the model, so every VRM in a scene shares it
Placement
The avatar itself is placed independently of the camera, in world metres, with on-stage handles for move, rotate and scale. Its Position section pairs the X · Y · Z fields with a 3D position control and the rotation fields with a rotation globe — see Visual Controls
Scale runs from 0.05× to 10×. Spring bone physics are rescaled along with the model, so a shrunk or enlarged avatar's hair still moves correctly
Placement can be driven from a controller too: see Stage Movement and Walking While Moving
Idle Behaviour
Persona applies idle behaviour after loading a VRM, so the avatar does not remain in a T-pose:
- Idle animation — a looping body animation, chosen per model
- Blinking — randomized every 2–6 seconds
- Breathing — a slow chest and spine sway
- Spring bones — hair and clothing physics, straight from the model's own spring bone setup
Idle Animation lives in the Idle section of the selected model, with Choose Clip… beside it. That opens the Inventory narrowed to Animations, which holds nine purpose-built idle loops:
Standing · Hands Behind Back · Hand on Hip · Folded Arms · Leaning · Talking · Sitting · Dance · Waiting
The seven motion clips are selectable as idles too, and so is any clip you add yourself — including one you recorded. The nine dedicated idle loops are seamless; other clips may have a visible transition when they repeat
Because the setting is per model rather than per scene, two avatars in one scene can hold different poses
When Tracking Is Lost
The Idle section also carries When Tracking Is Lost, which decides what the tracked parameters do while face tracking is gone: Keep Last Pose freezes on the last frame received until tracking returns, and is the default; Return to Idle eases to whatever the idle animation writes over about 0.3 seconds, and back when the face returns
A Live2D model can also name a stand-in motion on top of those two. VRM has no such field
Motion Clips
Persona bundles seven VRM Animation (.vrma) clips from pixiv's VRoid Project, playable on any loaded VRM — unlike Live2D motions, they are not tied to a model:
Show Full Body · Greeting · Peace Sign · Shoot · Spin · Model Pose · Squat
Each clip is one-shot: it fades in over the idle, holds its final frame briefly, then eases back to the idle rather than snapping. Blinking keeps running on top of a playing clip. Clips appear in the Motions section, exactly where Live2D motion groups do
The running clip's own button is also its stop: clicking it again eases back to the idle over the idle's fade time rather than waiting for the clip to finish. Stopping an automation takes the same path instead of cutting
They are also rows under Animations in the Inventory, alongside any clip you add yourself, where clicking one plays it on a loaded VRM as a preview
Record Motion sits at the top of this section and captures what the avatar is doing right now as a new .vrma — see Recording Motions
Importing Animation Clips
The Animations category supports the following formats: .vrma, Mixamo's .fbx, and MMD's .vmd. A Mixamo or MMD clip is retargeted onto the VRM humanoid as it loads, and is indistinguishable from a .vrma after that — usable as an idle, as a one-shot motion, or as an Inventory row you click to preview
Only the hips translate, and by the target's own proportions, so a travelling clip keeps a stride that fits whatever body it lands on. An .fbx without a Mixamo rig cannot be imported as an animation
An MMD dance keeps its leg IK: Persona works the foot and toe IK out again against the VRM's own proportions, so the legs follow the dance's footwork. It is still a retarget onto the humanoid rather than a PMX rig, so none of MMD's physics carries over — hair and clothing move with the VRM's own spring bones
Expressions
The Expressions section lists the model's available expressions — its 1.0 preset and custom names, with 0.x preset names translated to their 1.0 equivalents. Click one to apply it and click again to remove it, exactly as with Live2D expressions. Face tracking drives the same set, and microphone lip sync drives its vowel presets aa, ih, ou, ee and oh
Each active expression has a weight slider from 1% to 100% to adjust its strength. Sliders appear only for active expressions. To deactivate an expression, click its button again
A model that carries all 52 ARKit blendshapes as expressions is perfect sync capable and is driven from the phone's raw ARKit values one to one, rather than through Persona's derived signals. The Perfect Sync row of the info block reports how many of the 52 the model has
Remember Expressions, at the top of the section, is on by default: the expressions you apply are saved as you go, weights included, and restored when you come back to the model or relaunch. A VRM has no .vtube.json, so they are written to a <model>.persona.json sidecar beside the model file
Outfit
Models with the LAPLACE_outfit extension show an Outfit group below their expressions. Standard VRM expressions control morph targets, material colours and texture transforms, but not mesh visibility. This extension names outfit pieces and controls their visibility, supporting models converted from platforms such as VRChat. Persona treats each entry as an expression, with the same buttons, weight sliders, sidecar storage and Plugin API support
Facial expressions and outfit pieces appear in separate groups to make expression controls and clothing changes easy to distinguish
MToon Materials
Most VRM avatars use MToon, the spec's toon shader. The MToon section fine-tunes it over whatever the author baked in, per model instance:
| Control | Range | Effect |
|---|---|---|
| Shade | 0 – 1 | How strongly the shade colour shows |
| Shading Shift | −1 – 1 | Moves the light/shade boundary |
| Shading Toony | −1 – 1 | How hard that boundary is |
| GI Equalization | −1 – 1 | How much ambient light flattens the shading |
| Normal Scale | 0 – 2 | Scales the normal map; 0 flattens the surface detail away |
| Rim Light | 0 – 2 | Edge light strength |
| Rim Lift | −1 – 1 | How far the rim wraps in off the silhouette |
| Rim Fresnel Power | 0 – 4 | Higher pulls the band tighter to the edge |
| Rim Lighting Mix | −1 – 1 | 0 renders rim and matcap flat, 1 ties them to the scene lights |
| Matcap | 0 – 4 | Scales the matcap — the sphere-add reflection. Nothing happens on a material without one |
| Outline Width | 0 – 2 | Scales the authored outline |
| Outline Lighting Mix | −1 – 1 | 0 keeps the outline its own colour, 1 tints it with the lighting |
| Emissive | 0 – 4 | Emissive strength, with headroom to push parts over the bloom threshold |
| UV Animation | 0 – 4 | Scales UV scroll and rotation speeds; 0 freezes an animated texture |
Reset Materials returns every slider to neutral — every multiplier back to 1 and every offset to 0, which renders the model exactly as authored
Pose Tracking
A VRM has a humanoid rig, so it can also be driven by full-body mocap over VMC or mocopi's own protocol — VSeeFace, Virtual Motion Capture, mocopi and other senders. Live2D models have no such rig, so the section only appears for VRMs
A webcam works as a pose source too, with no extra hardware: its Body Tracking turns the torso and legs, and its Hand Tracking moves the arms and fingers
Shortcuts on VRM
Avatar shortcut actions that target expressions and motions work on a VRM too: expressions bind by name, and animation clips bind by their own file. Swap Model works regardless of format — a shortcut can switch a layer from a Live2D model to a VRM and back
An automation can run the same kinds of action on a VRM layer it names — Toggle Expression, Play Motion, Clear All Expressions and Swap Model — plus Model Position, which moves the avatar to a saved placement
Head, body, gaze and expressions can also be bound straight to a controller — see VRM Targets
Model Info
Expand Info to see what loaded, in VRM vocabulary:
| Row | Meaning |
|---|---|
| Source | Whether the model is bundled or one you opened |
| File | The .vrm that was loaded, with the reveal-in-folder button |
| Spec | VRM 0.x or the exact 1.0 spec version |
| Bones | Humanoid bone count |
| Springs | Spring bone group count — zero means no hair or cloth physics |
| Express. | Expression count |
| Perfect Sync | How many of the 52 ARKit blendshapes the model carries |
| Author | The author named in the model's embedded metadata |
| License | The licence URL, marked when credit is required |
| Load Time | Wall-clock time the stage spent loading the model |
Switching
A VRM fades in and out rather than cutting, unless the scene's Show and Hide is set to Pop or Cut. The fade is a screen-space dither — the model stays in the opaque render queue and keeps its own depth sorting, where fading by transparency instead reorders that sort and lets you see through the face into the inside of the head
Nothing renders until the avatar is posed and facing the camera, so the stage never shows a half-initialised model
Last updated on September 20, 2026