Cage meshes

Cage meshes are invisible surfaces of a MeshPart that allow other supported meshes to stretch and deform over each other. With cage meshes, you can create a set of meshes that can dynamically resize, reshape, and layer over another mesh of any shape or size.

They power layered accessories — 3D accessories such as jackets, dresses, and cardigans that stretch to fit a character body and stack naturally on top of one another — and you can also apply them to any MeshPart, as long as all the cage meshes share the same UV mapping.

A mesh's outer cage in Blender beside a plain cube and a checker mesh whose volume the cage has reshaped in Studio.
An outer cage is an invisible surface that can reshape a mesh's volume.

A cage mesh is a simplified copy of a render mesh that defines a wrapping surface. Unlike Roblox's collision system, which works universally, cage meshes can only work with other paired cage meshes.

To fit one mesh over another, Roblox pairs the vertices of one cage with those of the other by their UV coordinates, then reshapes the render mesh so that its cage matches the target cage. Cage meshes are typically configured in a modeling tool such as Blender or Maya.

Cage mesh components

In Studio, cage meshes are children of a MeshPart and are represented by descendants of the BaseWrap class:

Cage mesh typeIn BlenderIn Studio

WrapTarget

The initial caged surface that other paired cage meshes can target.

Every caging deformation requires a target mesh.

The Blender Outliner showing a render mesh with a single _OuterCage.

A render mesh with a single _OuterCage mesh.

The Studio Explorer showing a MeshPart with a child WrapTarget object.

A MeshPart with a child WrapTarget.

WrapLayer

Allows its parent MeshPart to wrap around a WrapTarget, such as a layered clothing accessory wrapping over an avatar body.

All targets and layers must share identical UVs.

The Blender Outliner showing a render mesh with an _InnerCage and an _OuterCage.

A render mesh with an _InnerCage and an _OuterCage mesh.

The Studio Explorer showing a MeshPart with a child WrapLayer object.

A MeshPart with a child WrapLayer.

Because a cage behaves like a component of its parent, a MeshPart is the only valid parent for these objects. You author cage meshes alongside your render mesh in a modeling application like Blender or Maya and import them together.

How cages pair

Roblox pairs cages by their UV coordinates rather than by position, so any two cages that share a UV layout can wrap over each other, even when their shapes differ. This is what lets a single accessory fit bodies of completely different shapes and sizes without remodeling it for each one.

A shared UV layout in the Blender UV editor, laid out as an unwrapped cube cross.

The following shapes are completely different, but they all share the identical UV map above, so a single layered mesh can deform onto any of them.

A cube in the Blender viewport.
Cube
A sphere in the Blender viewport.
Sphere — shaped from a cube
A flattened, twisted shape in the Blender viewport.
Flattened — sculpted from a cube

Create caged assets

Use the following guides to create caged assets. Each guide includes downloadable files and basic implementation steps to follow along.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.