Reference API Roblox

Engine API

Website

Related

Reference API Roblox

MeshPart

A form of BasePart that includes a physically simulated custom mesh.

Member index 17

HistoryMember
731DoubleSided: bool
731MeshContent: Content
645MeshId: ContentId
731RenderFidelity: RenderFidelity
731TextureContent: Content
645TextureID: ContentId
573ApplyMesh(meshPart: Instance): null
inherited from TriangleMeshPart
731CollisionFidelity: CollisionFidelity
731FluidFidelity: FluidFidelity
731MeshSize: Vector3
inherited from BasePart
731Anchored: bool
731AssemblyAngularVelocity: Vector3
731AssemblyCenterOfMass: Vector3
731AssemblyLinearVelocity: Vector3
731AssemblyMass: float
731AssemblyRootPart: BasePart
731AudioCanCollide: bool
731BackSurface: SurfaceType
731BottomSurface: SurfaceType
731BrickColor: BrickColor
731CFrame: CFrame
731CanCollide: bool
731CanQuery: bool
731CanTouch: bool
731CastShadow: bool
731CenterOfMass: Vector3
731CollisionGroup: string
731CollisionGroupId: int
731Color: Color3
731CurrentPhysicalProperties: PhysicalProperties
731CustomPhysicalProperties: PhysicalProperties
731EnableFluidForces: bool
731ExtentsCFrame: CFrame
731ExtentsSize: Vector3
731FrontSurface: SurfaceType
731LeftSurface: SurfaceType
731Locked: bool
731Mass: float
731Massless: bool
731Material: Material
731MaterialVariant: string
731PivotOffset: CFrame
731Reflectance: float
731ResizeIncrement: int
731ResizeableFaces: Faces
731RightSurface: SurfaceType
731RootPriority: int
731Rotation: Vector3
731Size: Vector3
731SpecificGravity: float
731TopSurface: SurfaceType
731Transparency: float
731brickColor: BrickColor
603AngularAccelerationToTorque(angAcceleration: Vector3, angVelocity: Vector3 = 0, 0, 0): Vector3
573ApplyAngularImpulse(impulse: Vector3): null
573ApplyImpulse(impulse: Vector3): null
573ApplyImpulseAtPosition(impulse: Vector3, position: Vector3): null
733BindToCollisionSummaries(callback: Function): RBXScriptConnection
573BreakJoints(): null
557CanCollideWith(part: BasePart): bool
462CanSetNetworkOwnership(): Tuple
576GetClosestPointOnSurface(position: Vector3): Vector3
648GetConnectedParts(recursive: bool = false): Instances
648GetJoints(): Instances
486GetMass(): float
567GetNetworkOwner(): Instance
567GetNetworkOwnershipAuto(): bool
648GetNoCollisionConstraints(): Instances
678GetPhysicsCost(): float
462GetRenderCFrame(): CFrame
731GetRootPart(): Instance
648GetTouchingParts(): Instances
557GetVelocityAtPosition(position: Vector3): Vector3
648IntersectAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance
486IsGrounded(): bool
573MakeJoints(): null
462Resize(normalId: NormalId, deltaAmount: int): bool
573SetNetworkOwner(playerInstance: Player = Player): null
573SetNetworkOwnershipAuto(): null
648SubtractAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance
603TorqueToAngularAcceleration(torque: Vector3, angVelocity: Vector3 = 0, 0, 0): Vector3
648UnionAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance
731breakJoints(): null
731getMass(): float
573makeJoints(): null
731resize(normalId: NormalId, deltaAmount: int): bool
483LocalSimulationTouched(part: BasePart)
462OutfitChanged()
731StoppedTouching(otherPart: BasePart)
483TouchEnded(otherPart: BasePart)
483Touched(otherPart: BasePart)
inherited from PVInstance
731Origin: CFrame
731Pivot Offset: CFrame
576GetPivot(): CFrame
573PivotTo(targetCFrame: CFrame): null
inherited from Instance
731Archivable: bool
731Capabilities: SecurityCapabilities
731IsInSandbox: bool
731Name: string
731Parent: Instance
731PredictionMode: PredictionMode
731Sandboxed: bool
731UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
707GetDescendants(): Instances
486GetFullName(): string
706GetStyled(name: string, selector: string?): Variant
657GetStyledPropertyChangedSignal(property: string): RBXScriptSignal
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
664IsPropertyModified(property: string): bool
698QueryDescendants(selector: string): Instances
573Remove(): null
576RemoveTag(tag: string): null
664ResetPropertyToDefault(property: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
731children(): Instances
731clone(): Instance
731destroy(): null
731findFirstChild(name: string, recursive: bool = false): Instance
731getChildren(): Instances
731isDescendantOf(ancestor: Instance): bool
731remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
657StyledPropertiesChanged()
731childAdded(child: Instance)
inherited from Object
731ClassName: string
731className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
731isA(className: string): bool
647Changed(property: string)

Removed member index 7

HistoryMember
381CollisionFidelity: CollisionFidelity
246Material: Material
535MeshSize: Vector3
322TextureId: Content

Description

MeshPart is a form of BasePart that includes a physically simulated custom mesh. Unlike with other mesh classes, such as SpecialMesh and BlockMesh, they are not parented to a BasePart but rather behave as a BasePart in their own right.

The mesh and texture of a MeshPart are determined by the MeshId and TextureID properties. For more information, see Meshes.

History 122

Members 17

ApplyMesh

Parameters (1)
meshPartInstance
Returns (1)
null

Overwrites the MeshContent, TextureContent, and collision geometry properties of this MeshPart from the given source meshPart.

Most of these properties are read-only and cannot be changed during runtime on their own directly. To keep MeshContent and physics data in sync, they must be updated together.

Copies the following properties:

History 5

DoubleSided

TypeDefault
boolfalse

This property determines whether to render both faces of polygons in the mesh. This is useful for meshes that are typically modeled as "cards" such as a leaf, hair, or cloth.

History 8

MeshContent

TypeDefault
Content

The mesh that is displayed on the MeshPart. Supports asset URIs and EditableMesh objects.

Note that this property cannot be changed directly by scripts, as the collision geometry of the mesh cannot be recomputed in real time. See AssetService:CreateMeshPartAsync() as a method to create a new MeshPart from a given Content with a specified CollisionFidelity. MeshPart:ApplyMesh() can be used to overwrite the MeshContent, TextureContent, and collision geometry of an existing MeshPart.

History 7

MeshId

TypeDefault
ContentId

The asset URIs of the mesh that is displayed on the MeshPart. Reads and writes to MeshContent.

Note that this property cannot be changed directly by scripts, as the collision geometry of the mesh cannot be recomputed in real time. See AssetService:CreateMeshPartAsync() as a method to create a new MeshPart from a given Content with a specified CollisionFidelity. MeshPart:ApplyMesh() can be used to overwrite the MeshContent, TextureContent, and collision geometry of an existing MeshPart.

History 6

RenderFidelity

TypeDefault
RenderFidelityAutomatic

This property determines the level of detail that the MeshPart will be shown in. It can be set to the possible values of the RenderFidelity enum.

The default value is Automatic, meaning the mesh's detail is based on its distance from the camera as outlined in the following table.

Distance From CameraRender FidelityExample
Less than 250 studsHighest
250-500 studsMedium
500 or more studsLowest
This property is not replicated. Its interface does not cross the network boundary.

History 9

Tags: [NotReplicated]

TextureContent

TypeDefault
Content

The texture applied to the MeshPart. Supports asset URIs and EditableImage objects.

When this property is set to Content.none, no texture will be applied to the mesh.

local Workspace = game:GetService("Workspace")

local meshPart = Workspace.MeshPart
meshPart.TextureContent = Content.none  -- No texture

Note that the MeshContent property cannot be directly changed during runtime but the texture can.

Changing a Mesh Texture

Using the TextureContent property, the texture of a mesh can be changed without having to re-upload the mesh. To do this, a new image can 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 Studio. The image file will be saved alongside the exported .obj file.

The new texture can then be uploaded to Roblox as a decal and its asset URI can be applied to the mesh using the TextureContent or TextureID property.

TextureContent can also be set to reference an EditableImage that has not been published yet.

local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")

local meshPart = Workspace.MeshPart

local editableImage = AssetService:CreateEditableImageAsync(meshPart.TextureContent)
meshPart.TextureContent = Content.fromObject(editableImage)  -- Live updates

When TextureContent references an EditableImage, the texture will live update with any edits to the EditableImage object.

Making a Textured Mesh

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

History 7

TextureID

TypeDefault
ContentId

The texture applied to the MeshPart. Reads and writes to TextureContent.

When this property is set to an empty string, no texture will be applied to the mesh.

local Workspace = game:GetService("Workspace")

local meshPart = Workspace.MeshPart
meshPart.TextureID = ""  -- No texture

Note that the MeshPart.MeshId property cannot be changed during runtime but the texture can. See TextureContent for details.

History 8

Removed members 7

CollisionFidelity

TypeDefault
CollisionFidelity
This property is not scriptable. It cannot be accessed by script code.
This property is not replicated. Its interface does not cross the network boundary.

History 4

Tags: [NotReplicated, NotScriptable]

Material

TypeDefault
Material
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is read-only. Its value can be read, but it cannot be modified.

History 2

Tags: [ReadOnly, Deprecated]

MeshSize

TypeDefault
Vector3
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.

History 6

Tags: [ReadOnly, NotReplicated]

TextureId

TypeDefault
Content

History 4

Settings