Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
Create cages in Blender
A cage mesh allows you to define an invisible surface for a visible render mesh. In Studio, you can combine cage meshes to wrap, stretch, shrink, or otherwise deform a mesh over a target mesh.
You must create these types of deformable meshes using a third-party modeling tool, such as Blender or Maya, and import them into Studio. This tutorial uses Blender and provides a Blender project file as reference.

At a minimum, cage meshes require a WrapTarget and a WrapLayer to interact. For a breakdown on the two types of cage meshes, see Cage types.
Cage types
When working with caged meshes, there are two types of meshes: a target mesh and a layered mesh.
<img src="https://prod.docsiteassets.roblox.com/assets/modeling/cage-meshes/Target-Mesh-Example.png" alt="A plain grey twisted shape in Studio: the target mesh a layered mesh deforms toward." /> Target mesh
<img src="https://prod.docsiteassets.roblox.com/assets/modeling/cage-meshes/Layered-Mesh-Example.png" alt="A red-and-white checker cube in Studio: the layered mesh in its authored shape, before deformation." /> Layered mesh
<img src="https://prod.docsiteassets.roblox.com/assets/modeling/cage-meshes/Composed-Mesh-Example.png" alt="The checker cube reshaped into the twisted target shape in Studio: the composed result." /> Composed result
| Caged mesh type | Configuration in Blender | Naming requirement |
|---|---|---|
| Target mesh The base mesh that a layered mesh deforms to. |
| Name the cage after the render mesh with the `_OuterCage` suffix, such as `Cube_OuterCage`. An `_OuterCage` on its own imports as a [`WrapTarget`](/docs/wraptarget). |
| Layered mesh Wraps and fits around a target mesh. |
| Name each cage after the render mesh with the `_InnerCage` and `_OuterCage` suffixes, such as `Shirt_InnerCage` and `Shirt_OuterCage`. The two cage meshes together import as a [`WrapLayer`](/docs/wraplayer). |
Create a cage
Create your cage meshes after you finalize your render mesh. If you later change the render mesh topology or its UVs, you might need to readjust the cage.
As a reference, download the .blend project to see these exact models and other examples. This project contains three target cage mesh configurations and two layered cage mesh configurations.

Cage a target mesh
The following example creates an outer cage on the standard Blender cube. The cube has 10 loop cuts on each axis, adding extra vertices for sculpting later.
To create the outer cage:
Duplicate your render mesh to use as the starting point for the cage. In this example, the cube is duplicated.
Rename the duplicate with the
_OuterCagesuffix, such asCube_OuterCage.
(Optional) Depending on the complexity of your rendered model, simplify the duplicate mesh to a low vertex count, since a cage should be a coarse shell rather than a detailed copy. For example, a detailed avatar head is caged with a far simpler mesh:
An avatar character head mesh can include up to 12,000 vertices.
An avatar character head cage only contains 335 vertices.Adjust the cage so it sits just outside the render surface and fully encloses it, staying as close to the surface as possible for accurate layering. Switching to Wireframe viewport shading helps you see the render mesh underneath.
In the UV Editing tab, confirm the cage mesh has UV coordinates — you will need to ensure that any future layered mesh cages share the same UV mapping.
Outer cage UVs must match the UVs of any layered mesh cages that will deform onto it.Confirm your Outliner shows the render mesh with a single
_OuterCagebeneath it, matching the following configuration.
You can also cage a target with completely different geometry. As long as the cage mesh shares the same UV map, a layered mesh can deform onto it — this is what lets a single layered mesh fit many differently-shaped targets. The following twisted mesh, for example, uses the same UV layout as the cube, so the same layered mesh can deform onto both targets.

A differently-shaped target whose cage shares the same UV layout.
Note
Don't add or delete cage vertices after setting up a cage, and don't change its UVs. Destructive edits break vertex pairing and cause import errors or incorrect deformation.
Cage a layered mesh
The layered mesh is the mesh you expect to deform to the shape of the target. A layered mesh requires both an inner and an outer cage: the inner cage defines the surface that conforms to the target, and the outer cage defines the surface that additional layers wrap over.
Note
It may be easiest to duplicate the cage mesh you created for the target mesh to ensure all your cage meshes have identical UVs. Remember you can change the geometry of your cage meshes, but not the UV mapping.
To create the inner and outer cages:
Duplicate your render mesh to use as the starting point for the inner cage.
- If you've already created your target cage mesh, make sure your layered cage's UVs match it.
Rename the duplicate with the
_InnerCagesuffix, such asLayered-Mesh_InnerCage.Adjust the inner cage so it sits just inside the render surface.
Duplicate the
_InnerCageand rename the copy with the_OuterCagesuffix, such asLayered-Mesh_OuterCage.Adjust the outer cage so it sits just outside the render surface and fully encloses it. The outer cage is the surface that additional layers wrap over.
Confirm both cages share the same UV layout as the target mesh, since Roblox pairs the layered mesh with the target by UV.
Confirm your Outliner shows the render mesh with both an
_InnerCageand an_OuterCagebeneath it, matching the following configuration.
Layered accessories for avatars
Roblox avatar items, such as character bodies (target meshes) and Marketplace clothing (layered meshes), must all share a common cage to ensure universal compatibility with accessories and clothing. If you are creating avatars or layered accessories, do not create your own cage meshes — Roblox provides downloadable cage templates you can modify. Alternatively, you can use Roblox's Avatar Setup tool to automatically generate a Roblox-supported cage for your accessories.
For more information on creating layered accessories, see the following resources:
Export and import
Before you export, apply the correct export settings for Studio. When exporting .fbx, set Apply Scalings to FBX Unit Scale so your model keeps the same scale in Studio. For more information, see Adjust scale (FBX).
Export the render mesh and its cages together as a single
.fbxor.gltffile. Studio imports cages from both formats equally, so use whichever your modeling application exports most reliably.Import the file with the 3D Importer and make sure Uses Cages is enabled.
- If Uses Cages is not enabled by default, the 3D Importer may not be detecting your cage meshes. Double check the naming requirements and re-export.
After importing, confirm that Studio created the expected objects: a
WrapTargetfor an outer-cage-only mesh, or aWrapLayerfor a mesh with both cages.<img src="https://prod.docsiteassets.roblox.com/assets/modeling/cage-meshes/Explorer-TargetMesh.png" alt="The Studio Explorer showing a Cube-Target model with a Cube MeshPart and a child WrapTarget object." />
An outer-cage-only mesh imports with a WrapTarget.
<img src="https://prod.docsiteassets.roblox.com/assets/modeling/cage-meshes/Explorer-LayerMesh.png" alt="The Studio Explorer showing a Layered-Mesh model with a Layered-Mesh MeshPart and a child WrapLayer object." /> A mesh with both cages imports with a WrapLayer.
- Once you have both a target (
WrapTarget) and a deforming mesh (WrapLayer), see Apply deformation to reshape the mesh onto the target.