We use cookies on this site to enhance your user experience

The SpecialMesh is an object that allows developers to provide a standard template or user uploaded mesh to a BasePart.

What does a SpecialMesh do?

The SpecialMesh object applies a mesh to a BasePart depending on the the SpecialMesh/MeshType property. A number of options are available.

  • Brick - A block shape, equivalent to a BlockMesh
  • Cylinder - A cylinder, identical to a Part with a Part/Shape of ‘Cylinder’
  • FileMesh - A user uploaded Mesh, equivalent to FileMesh that a texture can be applied to using the FileMesh/TextureId property
  • Head - A character head shape
  • Sphere - A sphere shape, similar to a Part with a Part/Shape of ‘Ball’ but can be freely resized on all axis
  • Wedge - A wedge shape, identical to a WedgePart
  • Torso - A block with sloped sides, due to be deprecated

Note, each SpecialMesh/MeshType will scale differently when using DataModelMesh/Scale, for more information on this please see the page on DataModelMesh/Scale. The SpecialMesh object also exposes the DataModelMesh/Offset property.

It is important to remember that when using a SpecialMesh, only the appearance of a part changes. The collision model of the part remains the same. For example, a character will not be able to walk correctly over a mesh as the mesh geometry is not taken into account.

SpecialMesh or MeshPart?

There are currently two ways of using a developer created mesh. They are using a SpecialMesh with the SpecialMesh/FileType set to ‘FileMesh’, or by using a MeshPart. Although, on the whole, the MeshPart object has superseded the SpecialMesh there are some differences developers should be aware of.

  • BasePart/Material displays correctly on the mesh when using a MeshPart and not when using a SpecialMesh
  • MeshParts include the MeshPart/CollisionFidelity property, meaning the collision model of a MeshPart can be set to resemble the geometry of the mesh. The SpecialMesh object by contrast, uses the parent BaseParts collision model
  • The mesh of a MeshPart scales on all axis depending on the BasePart/Size property of the MeshPart, the mesh of a SpecialMesh does not
  • The SpecialMesh object includes the DataModelMesh/Offset and DataModelMesh/Scale properties whereas MeshParts do not
  • The DataModelMesh/MeshId property of a SpecialMesh can be changed by a Script or LocalScript during runtime. The MeshPart/MeshId property of a MeshPart can not.

In most, but not all cases, using a MeshPart is more suitable. As MeshParts are a relatively new feature however, developers should expect some of the above behaviour to change.

Uploading a custom mesh

Although a developer uploaded mesh can be used on a SpecialMesh, meshes can currently only be be uploaded using MeshParts or the game explorer. For more information on how to do this please see Articles/Mesh Parts|this tutorial.