Collapse Sidebar




The TextureId is the content ID of the image that is to be applied to used for the meshes texture. When the TextureId property is set to an empty string, no texture will be applied to the mesh.

How can I change the texture of a mesh?

Using the TextureId property, the texture of a mesh can be changed without having to reupload the mesh. To do this, a new image will need to be uploaded to Roblox with the desired texture. The original texture image file can be obtained by exporting the mesh using the ‘Export Selection’ option in Roblox Studio. The image file will be saved alongside the exported .obj file.

The new texture can then be re-uploaded to Roblox as a Decal and its content ID can be applied to the mesh using the TextureId property.

How can I make a textured mesh?

A mesh can only be textured if the mesh has been UV mapped. UV mapping refers to the practice of projecting a texture map onto a mesh. This cannot be done using Roblox Studio and has to be done using an external 3D modelling application such as Blender.

Code Samples

Mesh VertexColor

In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh/VertexColor property of the SpecialMesh is then animated using TweenService.

local TweenService = game:GetService("TweenService")

-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false 

local mesh = Instance.new("SpecialMesh", part)
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.VertexColor = Vector3.new(1, 1, 1)

-- parent part to workspace
part.Parent = workspace

-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, {VertexColor = Vector3.new(0, 0, 0)})
local redTween = TweenService:Create(mesh, tweenInfo, {VertexColor = Vector3.new(1, 0, 0)})
local greenTween = TweenService:Create(mesh, tweenInfo, {VertexColor = Vector3.new(0, 1, 0)})
local blueTween = TweenService:Create(mesh, tweenInfo, {VertexColor = Vector3.new(0, 0, 1)})
local resetTween = TweenService:Create(mesh, tweenInfo, {VertexColor = Vector3.new(1, 1, 1)})

-- animate 
while true do