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.

A checker-textured cube render mesh in Blender beside a wireframe copy that a cage has reshaped into a twist.

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.

A plain grey twisted shape in Studio: the target mesh a layered mesh deforms toward.
Target mesh
A red-and-white checker cube in Studio: the layered mesh in its authored shape, before deformation.
Layered mesh
The checker cube reshaped into the twisted target shape in Studio: the composed result.
Composed result
Caged mesh typeConfiguration in BlenderNaming requirement
Target mesh

The base mesh that a layered mesh deforms to.
The Blender Outliner showing a Cube-Target group with a Cube render mesh and a Cube_OuterCage cage.
  • A rendered mesh object.
  • An outer cage mesh object.
  • A UV map that matches any layered meshes that will wrap and deform over the target.
Name the cage after the render mesh with the _OuterCage suffix, such as Cube_OuterCage.

An _OuterCage on its own imports as a WrapTarget.
Layered mesh

Wraps and fits around a target mesh.
The Blender Outliner showing a Layered-Mesh group with a Layered-Mesh render mesh and its Layered-Mesh_InnerCage and Layered-Mesh_OuterCage cages.
  • A rendered mesh object.
  • An inner cage mesh object.
  • An outer cage mesh object.
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.

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.

The Blender Outliner for the reference project, showing three target meshes (cube, flattened, and sphere) and two layered meshes, each with its cages.

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:

  1. Duplicate your render mesh to use as the starting point for the cage. In this example, the cube is duplicated.

  2. Rename the duplicate with the _OuterCage suffix, such as Cube_OuterCage.

    The Blender Outliner showing a Cube render mesh with a Cube_OuterCage cage object beneath it.
  3. (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:

    A dense avatar character head render mesh in the Blender viewport.
    An avatar character head mesh can include up to 12,000 vertices.
    The same avatar head's low-poly cage mesh in the Blender viewport.
    An avatar character head cage only contains 335 vertices.
  4. 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.

    The outer cage, shown with a yellow selection outline, fully enclosing the cube render mesh in the Blender viewport.
  5. 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.

    The UV layout of the outer cage, matching the render mesh.
    Outer cage UVs must match the UVs of any layered mesh cages that will deform onto it.
  6. Confirm your Outliner shows the render mesh with a single _OuterCage beneath it, matching the following configuration.

    The Blender Outliner showing a Cube-Target group with a Cube render mesh and a Cube_OuterCage cage.

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 twisted-cube target mesh in the Blender viewport beside its UV layout, which is identical to the cube target's UV layout.
A differently-shaped target whose cage shares the same UV layout.

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.

To create the inner and outer cages:

  1. Duplicate your render mesh to use as the starting point for the inner cage.

    1. If you've already created your target cage mesh, make sure your layered cage's UVs match it.
  2. Rename the duplicate with the _InnerCage suffix, such as Layered-Mesh_InnerCage.

  3. Adjust the inner cage so it sits just inside the render surface.

    The layered mesh's inner cage, shown as an orange wireframe, sitting against the render surface in the Blender viewport.
  4. Duplicate the _InnerCage and rename the copy with the _OuterCage suffix, such as Layered-Mesh_OuterCage.

  5. 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.

    The layered mesh's outer cage, shown as a wireframe, enclosing the render surface in the Blender viewport.
  6. Confirm both cages share the same UV layout as the target mesh, since Roblox pairs the layered mesh with the target by UV.

  7. Confirm your Outliner shows the render mesh with both an _InnerCage and an _OuterCage beneath it, matching the following configuration.

    The Blender Outliner showing a Layered-Mesh group with a Layered-Mesh render mesh and its Layered-Mesh_InnerCage and Layered-Mesh_OuterCage cages.

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).

  1. Export the render mesh and its cages together as a single .fbx or .gltf file. Studio imports cages from both formats equally, so use whichever your modeling application exports most reliably.

  2. Import the file with the 3D Importer and make sure Uses Cages is enabled.

    1. 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.
    The 3D Importer preview showing the layered mesh with its inner and outer cages detected and Uses Cages enabled.
  3. After importing, confirm that Studio created the expected objects: a WrapTarget for an outer-cage-only mesh, or a WrapLayer for a mesh with both cages.

    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.
    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.
  4. Once you have both a target (WrapTarget) and a deforming mesh (WrapLayer), see Apply deformation to reshape the mesh onto the target.

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