00:00 / 00:00

Persona

Layers

A scene holds a list of layers, and Layers in the Control Panel's left column is that list. Models and objects share it: an avatar, a chat overlay image, a looping video and a 3D prop are all rows in the same list, stacked in one z-order. Effects take rows of their own, banked above the models and objects

The list reads front-most first, the way a layer panel does. Drag the grip to restack — the row moves straight up and down, so a sideways wobble never drags it out of the list

Row Anatomy

ElementMeaning
GripDrag to reorder — the top row draws in front
EyeShow or hide the layer without removing it. Hidden layers fade out rather than vanish
NameThe model's name, or the object's
StarMarks the primary model
Kind iconLive2D, VRM, Image, Video, 3D Object, Webpage, Capture or Effect, named in a tooltip
Actions menuSet as Primary · Swap… · Reset Position · Show in Finder · Remove from Scene

Show in Finder points the OS file manager at the layer's file — it reads Show in Explorer on Windows. Webpage and capture layers have no file behind them, so the item does not appear in their menus

Clicking a row selects it and opens its settings below the list. Clicking the selected row again — or pressing Esc on it — folds those sections away

Adding Layers

Add to Scene… under the list opens the Inventory — one browse-and-add surface for everything a scene can hold. It is on the tray menu too, where it summons the Control Panel first if it is closed

A rail down its left side filters by kind:

CategoryHolds
AllEverything below, each row carrying its kind icon
Live2D · VRMModels — bundled, or ones you opened before
Animations.vrma and Mixamo .fbx clips — the bundled idles and motion pack, plus your own
3D Objects · Images · VideosFiles you added before
Environment Maps · LUTsScene lighting and grading files
EffectsBuilt-in effects over the finished frame — see Effect Layers
WebpagesAn address field rather than a list: any http(s) URL becomes a layer
PNGTuber · Screen CaptureComing soon

Rows are grouped into Bundled and Recent, filtered by the search field, and show the creator's credit where the content declares one — a link to their page when it declares that too. Clicking a row adds it. A registered file that has since left the disk is marked Missing and cannot be added

The + button beside the search field opens the native file dialog for the category you are in — Open Model… under Live2D and VRM, Open File… everywhere else. What you pick is added to the scene and stays in the Inventory afterwards

Asset rows under Recent carry a menu of their own, with two items: Show in Finder (Show in Explorer on Windows) points at the file, and Remove drops the row from the list. Removing only withdraws the grant on a file of yours — what is on disk is untouched. A pasted image is the one exception: the app wrote that file itself and it is the only copy, so it really is deleted. Removing an asset a scene still uses is refused, with a toast saying so

The same model can appear more than once in a scene. Each row is its own instance with its own placement, so two copies of one rig can stand at different sizes on opposite sides of the stage

Dropping and Pasting

Files do not have to go through the Inventory — dropping them on the window works too, in every format the Inventory takes, and a 2D object lands where you dropped it. An image on the clipboard pastes straight onto the stage with /Ctrl+V — a picture copied from a browser, a screenshot tool's output. With focus in a text field, the shortcut goes back to the field

The Control Panel takes both gestures too, which saves aiming at a stage you may have sized down or pushed off to one side. Its window has no stage coordinates, so a file dropped there is placed the way a paste is rather than under the pointer

A pasted image is named by its content hash and stored in ~/.laplace/persona/assets, so pasting the same picture twice keeps one copy. From there it is like any other asset: it lands under Recent, and on stage it is an ordinary image layer. Copying a file rather than a bitmap takes the same path as a drop — registered where it sits, never duplicated

Scene Assets

Animations, Environment Maps and LUTs are not layers — a scene references them as fields. Clicking one of those rows applies it to the active scene instead of stacking it in the layer list:

CategoryWhat a click does
AnimationsPlays the clip on a loaded VRM, as a preview
Environment MapsSets the scene's environment map and confirms with a toast
LUTsSets the scene's LUT and confirms with a toast

They are also where the corresponding Choose… buttons lead: Choose Image… for the stage background, Choose Environment… for the environment, Choose LUT…, and Choose Clip… for a VRM's idle animation. Opened that way the rail narrows to the kinds that field accepts, and a click applies and closes

A clip retargets onto a humanoid rig, so Animations is disabled in a scene holding no VRM, with a line saying why

Inventory Formats

The Inventory takes files by category. The dialog behind the + button lists only the extensions the category you are in accepts:

CategoryAccepted files
Live2D.model3.json
VRM.vrm · .glb
Images.png · .jpg · .jpeg · .webp · .gif · .apng · .avif · .bmp
Videos.mp4 · .webm · .mov · .m4v · .ogv
3D Objects.glb · .gltf
Animations.vrma · .fbx · .vmd
Camera Motions.vmd
Environment Maps.hdr · .png · .jpg · .jpeg · .webp
LUTs.cube · .3dl
WebpagesAny http(s) URL, no file
EffectsBuilt in, no file
PNGTuber · Screen CaptureComing soon

Three of these are settled by the file, not by its extension:

  • .glb is both a model and a prop — picking a .glb with no VRM data under Open Model… is not refused; it registers as a 3D object instead. The file decides which category it lands in, not the tab you had open
  • .vmd is both a dance and a camera move — the two ship under one extension, so Persona reads the model name in the header to tell them apart and registers the file as an Animation or a Camera Motion
  • .fbx is a container format — the same extension just as readily holds a prop, a whole set, or a rigged character — so Persona takes only the ones holding a Mixamo clip. Picking any other .fbx is refused, with an Unsupported Animation dialog saying why

In the Environment Maps row, only .hdr carries real radiance; ordinary images work too, but read as fill light

Effect Layers

Effects are rows in the layer list too, banked above the models and objects — a scene carries exactly as many effect rows as it uses, and none for the ones it doesn't

Add them from the Inventory's Effects category. One already in the scene reads Added and takes no click. Effects list only on their own tab, never under All

With nothing three-dimensional in the scene the category is disabled, with a line saying effects need the 3D stage. See When the Chain Appears

An effect row looks like any other layer, and means slightly different things:

ElementMeaning
EyeSwitches the effect on and off. It ramps over 0.4 s rather than cutting
NameThe effect's name
GripThe chain fixes effect order, and that order is not a setting — rows do not drag
Kind iconEffect
Actions menuReset to Defaults · Remove from Scene

The order in the list is the chain's order, with the last-applied effect on top

Clicking a row opens Effect · Name below the list, holding every parameter that effect has. It carries its own selection, so selecting an effect never moves the stage gizmo or changes what a drag or a scroll acts on

Remove from Scene only takes the effect off the list — its tuning is kept, so adding it back finds it as you left it, and Reset to Defaults is the way to the factory values

Webpage Layers

Any http(s) page can sit in the scene as an object: a streaming overlay, a countdown, a chat box, or a page of your own HTML. Add one from Webpages in the Inventory, which is an address field rather than a list

Selecting it opens a Webpage section below the list:

FieldNotes
Addresshttp(s) only; any other scheme is refused. It commits on leaving the field or pressing Enter, and reloads
Width and HeightThe page's own viewport in CSS pixels, 16 to 7680, defaulting to 1280 × 720. A change reloads the page. How large it lands on stage is placement, a separate thing
FPSThe paint-rate cap, 1 to 60, defaulting to 30. A page that is not moving does not repaint anyway, so this only sets a ceiling
Transparent BackgroundOn by default, like an OBS browser source. Off, the page is white
LayerBehind Stage or In Front, and only a 2D object has it — the whole page composites in front of or behind the stage rather than interleaving with the other layers. A 3D object has no such row: it is a surface in the scene and sorts like one
Custom CSSInjected into every page this object loads; empty injects nothing. The placeholder, body { background: transparent }, is the common one

The page runs in an isolated, in-memory browser session: nothing is written to disk, camera, microphone, location, display capture and downloads are all refused, popups cannot open, and a navigation to anything but http(s) is stopped. It cannot reach the files on your disk

The page sees Chrome's User-Agent with one extra LAPLACE-Persona/<version> token, in the slot OBS uses for OBS/<version> — so an overlay keyed to its host can match on it. It carries no Electron token and nothing else about your machine

Swapping a Layer

Swap… in a row's actions menu reopens the Inventory to replace that layer rather than add to it, naming what is being replaced across the top

Browsing narrows to the layer's own family — a model layer swaps to another model, of either format, and an object layer to another object source, a webpage included. Everything else about the row carries over: its place in the stacking order, its placement, and the star if it held it

Models crossfade rather than popping — see Swapping Models

The Primary Model

One model in the scene carries the star. It is the one avatar shortcuts act on, and the instance model-scoped Plugin API methods default to when they name none

Set as Primary in a row's actions menu moves it. Objects cannot be primary — only a model has parameters to drive. A non-primary model contributes no rows to the shortcut list, and its bindings do not fire until it is primary

Face tracking does not read the star. Each avatar binds to a tracking source of its own, so three avatars can be driven by three phones regardless of which one is primary

2D and 3D Space

Persona composites two canvases: a 2D canvas for screen-space 2D objects and Live2D when the legacy engine is enabled, and a 3D canvas for VRM avatars, 3D objects and Live2D on the default engine. The 3D canvas always draws over the 2D one

An object's Space switch decides which it belongs to:

  • 2D — placed in screen pixels, like a VTube Studio item. Drawn on the 2D canvas
  • 3D — placed in world metres, lit by the scene lights, and can cast and receive shadows

A 3D object (.glb) is a mesh, so it is 3D-only and the switch shows 2D disabled rather than hiding it. Images and video work in either space — the same overlay can sit flat on the screen or stand as a card inside the 3D scene

Placement

Every layer has a numeric placement editor, and the on-stage gestures write the same fields

ItemFieldsScale range
Live2D modelX · Y · Scale · Turn0.1× – 24×
VRM modelX · Y · Z · Scale · Pitch · Turn · Roll0.05× – 10×
2D objectX · Y · Scale · Turn · Opacity0.01× – 50×
3D objectX · Y · Z · Scale · Pitch · Turn · Roll · Opacity0.01× – 100×

X and Y are pixels from the stage centre in 2D, and metres in 3D. Rotations are shown in degrees

Gestures

GestureEffect
DragMove the selected item
ScrollZoom toward the cursor, so the point under it stays
Shift + scrollRotate

Dragging eases after the cursor and glides to a stop on release rather than halting abruptly

Handles

World-space items — VRM models, 3D objects and placeable lights — also get on-stage handles. Handle Mode switches between Move, Rotate and Scale. The picker only appears when the selection offers more than one mode: a point light only moves, and an ambient light has nothing to place

Stream Mode takes the handles off the stage, which is what keeps a capture clean

Pinning an Object to a Model

Pin attaches an object to a model so it rides along — glasses on a face, a prop in a hand, a nameplate over a head. The object's placement is then read as an offset from the anchor rather than from the stage

An object can only pin to a model in its own space: a 2D object to a Live2D model, a 3D object to a VRM. That boundary comes from the anchor and placement coordinate systems, not which renderer draws Live2D; a cross-space pin has no shared depth or transform basis

There are two routes to an anchor, the same on either kind of model: pick one from the Anchor list, or press Pick on Stage and click where the item should ride — the button reads Cancel Pick while a pick is live. Both lists carry Model Root, standing for the model's own transform, and both have a search field at the top, which is how you find one bone or one art mesh among hundreds

Either route shows you what you are about to anchor to. Hovering a row in the Anchor list lights that mesh or bone up on stage, and during a pick the thing under the cursor lights up the same way, so you can see what a click would catch before you commit to it. The highlight pulses between green and white rather than sitting still, because a flat tint disappears over art of its own colour. Stream Mode suppresses both — nothing Persona draws for your benefit reaches the capture

2D Pins

A picked anchor is a point on the model's mesh. Persona stores the art mesh and the exact triangle, so the pin deforms with the rig instead of floating over it. This is how VTube Studio pins its items. The list carries every ArtMesh the model has, which is the way to name one exactly; for where on a mesh the item should sit, clicking the stage is faster

ControlEffect
Follow RotationThe item turns with the anchor. Off, it keeps its own upright rotation
MultiplierHow much the model's head angle turns the item, from −2 to 2
Parallax XStage px the item shifts sideways at a full head turn, −300 to 300
Parallax YThe same vertically, as the head looks up and down
SmoothingHow much lag that turn and shift carry

Multiplier reads the model's ParamAngleZ — the head's tilt; Parallax X and Y read ParamAngleX and ParamAngleY — the head's turn and nod. The pixel figures are for the model at 1× and scale with it. Positive moves the item with the head, which reads as sitting in front of the mesh; negative moves it against, which reads as sitting behind. A little positive on a pair of glasses shows a hint of frame thickness as the head turns; a little negative on a nameplate keeps it planted behind

3D Pins

The anchor is a humanoid bone — head, leftHand, hips and so on — or Model Root. Picking on stage casts a ray at the avatar, reads the skin weights of the triangle it hits, and resolves to the bone weighing heaviest there, so clicking the face gives you head and clicking a hand gives you leftHand

Elasticity adds a spring, so the object trails its anchor and settles instead of tracking rigidly:

ControlEffect
StiffnessHow hard the spring pulls toward the anchor
DampingHow quickly it stops oscillating
Max SpeedA ceiling on how fast the object can chase

A pin whose parent leaves the scene is cleared, and the object stays on stage standing alone rather than disappearing with it

Object Extras

A video layer loops and stays muted. Its loop, mute and volume are part of the scene format but have no controls yet — today only the Plugin API changes them

A 3D object carrying lights inside its own file lists them under Lighting, headed Built into the object's name. Each can be muted or dimmed there without touching the scene's own lights

Last updated on September 4, 2026

Tech otakus destroy the world