00:00 / 00:00

Persona

VRM Avatars

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:

AvatarSpecLicense
Milky GreenVRM 1.0VRM Public License 1.0
RAYNOS-chanVRM 0.xSony 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:

GestureEffect
DragOrbit around the avatar
Right-dragPan the camera target, even with an item selected
Alt / + dragPan the camera target
ScrollDolly 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:

ControlRangeEffect
Shade0 – 1How strongly the shade colour shows
Shading Shift−1 – 1Moves the light/shade boundary
Shading Toony−1 – 1How hard that boundary is
GI Equalization−1 – 1How much ambient light flattens the shading
Normal Scale0 – 2Scales the normal map; 0 flattens the surface detail away
Rim Light0 – 2Edge light strength
Rim Lift−1 – 1How far the rim wraps in off the silhouette
Rim Fresnel Power0 – 4Higher pulls the band tighter to the edge
Rim Lighting Mix−1 – 10 renders rim and matcap flat, 1 ties them to the scene lights
Matcap0 – 4Scales the matcap — the sphere-add reflection. Nothing happens on a material without one
Outline Width0 – 2Scales the authored outline
Outline Lighting Mix−1 – 10 keeps the outline its own colour, 1 tints it with the lighting
Emissive0 – 4Emissive strength, with headroom to push parts over the bloom threshold
UV Animation0 – 4Scales 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:

RowMeaning
SourceWhether the model is bundled or one you opened
FileThe .vrm that was loaded, with the reveal-in-folder button
SpecVRM 0.x or the exact 1.0 spec version
BonesHumanoid bone count
SpringsSpring bone group count — zero means no hair or cloth physics
Express.Expression count
Perfect SyncHow many of the 52 ARKit blendshapes the model carries
AuthorThe author named in the model's embedded metadata
LicenseThe licence URL, marked when credit is required
Load TimeWall-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

Tech otakus destroy the world