Part
Roblox’s built-in ParticleEmitter draws each particle as a flat textured quad — a 2D image stretched between two triangles. Its Orientation property gives you four ways to angle that quad (face the camera, face the camera with world-up locked, align with velocity, or run perpendicular to velocity), but the rendered shape is still a flat surface with no thickness. That suits sparks, smoke, glints, and most sprite-style effects, which read convincingly as flat images.
Part is the type for particles that need actual 3D geometry.
When you transform a Part, every emitted particle is a 3D mesh — depth, real volume, full freedom of rotation in three axes. A custom-modelled coin tumbling end over end. A glass shard with a refractive material. A leaf you can see from the back as it twists. None of those read correctly as flat sprites; they need volume.
This chapter covers every property Part exposes — the shared ones it inherits from the shared behaviors chapters, plus its many type-specific properties for appearance, shape, and flipbooks.
What it transforms
Section titled “What it transforms”Any visible Roblox part:
- A regular
Partwith one of Roblox’s primitive shapes — Block, Sphere, Cylinder, Wedge, CornerWedge. - A
MeshPartwith a custom mesh. - A
Partwith aSpecialMeshchild for the older mesh format. - A
Partwith aSpecialMeshand aDecalfor textured-mesh particles.
The plugin handles each of these kinds under the hood, but the experience is the same for you — select, click Transform, edit in the panel.
Properties at a glance
Section titled “Properties at a glance”The full surface area, grouped by panel section. Shared rows link to the shared chapters; type-specific rows link to anchors lower on this page.
Spawning (shared)
Section titled “Spawning (shared)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Rate | Rate | number | 10 | Particles per second |
| Lifetime | Lifetime | NumberRange | 1 | Seconds each particle lives, with random variation |
| SpreadAngle | SpreadAngle | Vector2 | (0, 0) | Cone of random deviation, in degrees |
| Direction | EmissionDirection | enum | Top | Which face particles fly out of |
| Position | PosX, PosY, PosZ | three NumberRange | 0 | Random offset from centre at spawn |
| Pos. Mode | PosMode | enum | Local | Frame the position offsets roll in |
| Orientation | Orientation | enum | None | How particles face camera or velocity |
| Z-Offset | ZOffset | number | 0 | Render-depth bias for layering |
| EmitCount | EmitCount | number | 0 | One-shot burst count |
| EmitDelay | EmitDelay | number | 0 | Wait before first particle |
| EmitDuration | EmitDuration | number | 0 | Seconds of continuous loop after the initial bursts. 0 skips the loop |
Appearance (Part-specific)
Section titled “Appearance (Part-specific)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Color | Color | ColorSequence | white | RGB over each particle’s life |
| Transparency | Transparency | NumberSequence | 0 | Opacity over each particle’s life |
| Brightness | Brightness | NumberSequence | 1 | Glow intensity over life |
| Size | SizeX, SizeY, SizeZ | three NumberSequence | 1 | Per-axis scale over life |
| Material | Material | enum | from source | Roblox surface material |
Movement (shared)
Section titled “Movement (shared)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Speed | Speed | NumberSequence | 0 | Velocity magnitude over life |
| Acceleration | Acceleration | Vector3 | (0,0,0) | Constant force vector each frame |
| Drag | Drag | number | 0 | Exponential velocity decay |
| Dir. Mode | DirMode | enum | RigidLocal | Which frame the direction is in |
| Reverse Motion | InvertMotion | boolean | false | Plays trajectory in reverse |
| Rotation | RotX, RotY, RotZ | three NumberRange | 0 | Random initial rotation per axis at spawn |
| Rotation Mode | RotMode | enum | OverLife | Whether RotSpeed is per-life or per-second |
| Rotation Speed | RotSpeedX, Y, Z | three NumberSequence | 0 | Rotation speed per axis |
Shape (Part-specific)
Section titled “Shape (Part-specific)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Shape | Shape | enum | Box | The 3D volume particles spawn from |
| Spawn on | ShapeStyle | enum | Volume | Whether to spawn within volume or only on surface |
| Hollow | ShapePartial | number | 0 | Hollow factor — 0 solid, 1 hollow shell |
Flipbook (shared with Beam)
Section titled “Flipbook (shared with Beam)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Mode | FlipbookMode | enum | OneShot | How frames play |
| Framerate | FlipbookFramerate | NumberRange | 1, 1 | Frames per second |
| StartRandom | FlipbookStartRandom | boolean | false | Random start frame per particle |
| Reverse | FlipbookReverse | boolean | false | Plays backwards |
Advanced (shared)
Section titled “Advanced (shared)”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Anim. Steps | TotalKeyFrames | number | 100 | Simulation sample steps per particle |
| Linger | PartLife | number | 0 | Seconds the particle lingers after Lifetime |
Appearance properties
Section titled “Appearance properties”A ColorSequence — a graph whose value at each point in time is a colour. The particle’s tint changes from one colour to another as it ages.
A spark whose colour starts white-hot and fades through orange to red is a classic example. At time 0, the particle is born white. By time 0.5, halfway through its life, it’s orange. By time 1, just before it dies, it’s red.
The colour applies to the rendered particle in combination with the source mesh’s existing colour — the two multiply. A red particle on a base mesh whose colour is white shows as red. The same particle on a base mesh that’s already coloured blue shows as the colour-multiplication of the two, which is rarely what you want. For predictable tints, keep the source mesh white and let Color drive the appearance entirely.
The default is solid white throughout life — no tinting.
Transparency
Section titled “Transparency”A NumberSequence for opacity over the particle’s life. 0 is fully opaque; 1 is fully transparent.
The most common shape is a fade-out: opaque at birth, fully transparent at death. A graph from 0 at time 0 to 1 at time 1.
You can also fade in: a graph that starts at 1 and ramps down. Particles “appear” gradually rather than popping into existence. Useful for misty effects.
A graph that goes back and forth — opaque, transparent, opaque, transparent — produces particles that pulse between visible and invisible. Combined with a slow Speed, this is a strobing effect.
The default is 0 — fully opaque throughout life.
Brightness
Section titled “Brightness”A NumberSequence that multiplies the particle’s Color value to produce its rendered colour.
Important: this only does anything visible on Parts that carry a Decal child (so: a Part with a SpecialMesh and a Decal, a MeshPart with a Decal, a textured-mesh combination). On plain Parts without a decal, the multiplier has nothing to apply against — there’s no decal pixel-colour to scale — and you’ll see no visual change from raising it.
Here’s the mechanic. When the plugin transforms a Part with a decal, the per-frame Color and Transparency graphs are written to the decal’s Color3 / Transparency properties, not to the BasePart itself. The Brightness graph then multiplies the decal’s Color3 channels: a Color of (1, 0.4, 0.1) (a warm orange) times a Brightness of 3 produces a decal Color3 of (3, 1.2, 0.3).
Roblox’s renderer doesn’t clamp those values silently. When a decal’s Color3 channels exceed 1 (the 0–255 / 255 normalised cap), the rendered pixels start to glow — they push past white into an HDR-style bloom that interacts strongly with BloomEffect and Neon-material lighting. That’s the “glow” you get from raising Brightness. It’s a rendering quirk in how Roblox handles out-of-range colour values on decals, and the plugin uses it deliberately to give decal-bearing Parts a controllable glow channel without an extra material switch.
Useful values:
1(the default) — no multiplication; the decal renders at itsColorvalue.0.5— half-strength; the decal looks dim, useful for fading-out embers.2to4— pushes the decal’s brighter channels above1, producing a visible glow on those channels. White decals glow uniformly; coloured decals glow on whichever channels were already high (a red decal at Brightness3glows red, not white).>4— saturates fast; the glow tends to read as solid white past a certain threshold and the colour identity is lost.
A typical “energy spark” graph: launch at brightness 2.5 (intense glow), fade to 0.5 (dim ember) by death. Combined with a Color graph fading from white to red and a Transparency graph fading from opaque to invisible, you get the classic ember-trail look — but only because the source mesh is using a decal as its visible surface.
For Parts without decals (plain Block Parts, simple primitive shapes, MeshParts whose material colour is set directly without a decal child), reach for Roblox’s Material = Neon plus a Bloom emitter for the same glow effect — that path doesn’t depend on the decal-multiplier mechanic.
The default is 1 — no multiplication.
UI label: Size. Data attributes: SizeX, SizeY, SizeZ.
Three independent NumberSequence graphs for per-axis scale over the particle’s lifetime. The property panel shows them as a single row labelled “Size” with X/Y/Z graph selectors.
This is one of Part’s advantages over ParticleEmitter, whose own Size is a single Vector2 — width and height of the flat quad, with no depth axis to scale. With three axes, you can stretch a particle along one direction without changing the other two. A flame that grows tall while staying narrow uses SizeY rising while SizeX and SizeZ stay constant. A spark that flattens into a streak as it ages uses SizeY shrinking while SizeX grows.
A scale value of 1 means the particle is the same size as the source Part’s baseline. 0.5 is half. 2 is double.
All three default to 1 — uniform, unchanging size. Reach for them when the visual needs non-uniform scaling.
The values apply multiplicatively to the source Part’s size. A 0.5,0.5,0.5 source mesh emitting with SizeX = 2 results in particles that are 1.0 wide on the X axis (0.5 × 2).
Material
Section titled “Material”The Roblox surface material of each emitted particle. The plugin’s panel exposes a curated subset of Enum.Material: Plastic, SmoothPlastic, Neon, Glass, Metal, DiamondPlate, Foil, Brick, Concrete, Granite, Marble, Slate, Wood, WoodPlanks, Fabric, Ice, Sand, Grass, Pebble, Rock — the visible-surface materials. The terrain-only materials (Air, Water, Asphalt, Basalt, etc.) aren’t selectable because they don’t apply to particle rendering.
When you transform a Part, the source’s Material becomes the default for emitted particles. You can override per-emitter if you want emitted particles to use a different material than the authoring source.
This is a Part-only feature. ParticleEmitter doesn’t expose a Material property at all — its particles are flat textured quads, fed by a Texture image rather than a 3D surface material. Part emitters preserve the full 3D rendering pipeline, material included — so a Neon particle glows with Roblox’s neon shader, a Glass particle refracts, a ForceField particle keeps its scrolling pattern.
For particles that need a specific look, set the source mesh’s Material first; the emitted particles inherit it. To override at emit-time without changing the source, use the panel’s Material field.
Shape properties
Section titled “Shape properties”The three Shape properties together control the region particles spawn from — and, for non-Box shapes, how that region is filled. They’re independent of the Part’s actual mesh — Shape = Sphere doesn’t make the particle visual a sphere; it makes the spawn region spherical.
The Shape section in the panel is gated by a Use shape toggle. With the toggle off, the Shape/Spawn on/Hollow rows are hidden and the spawn region defaults to the Part’s bounding box (Shape = Box, the implicit default). Turn the toggle on to expose the three shape-region rows and pick a non-Box volume.
The 3D volume particles spawn from. An enum: Box, Sphere, Cylinder, Disc.
The shape’s dimensions come from the source Part itself — the same Part you transformed, which is also the parent of RenderTemplate. Resize the source Part and the spawn region resizes with it. There’s no separate Size field for the spawn shape; it’s always derived from the source Part’s .Size.
Box (the default) — particles spawn anywhere inside a box matching the Part’s local bounding region. With PosX/PosY/PosZ of 0,0, this collapses to a single point. With ranges, it fills the box.
Use cases: smoke columns rising from a chimney (a tall thin Box), confetti bursts from a horizontal slab (a flat wide Box), spawn fields where the visual region matches the Part’s geometry exactly.
Sphere — particles spawn within a spherical region. The radius is half the Part’s X dimension (Size.X / 2). If the Part isn’t roughly cubic, only the X dimension drives the sphere — Y and Z are ignored for radius.
Use cases: explosion shockwaves emanating outward from a centre point, spell-casting halos where particles materialise on a bounding sphere, atmospheric kernels (think dust motes filling a roughly-spherical volume around a magical artefact). Pair Sphere with Spawn on = Surface to get only the sphere’s outer skin — particles materialising on an invisible bubble.
Cylinder — a tube-like region. Its height runs along the Part’s local Y axis (Size.Y); its circular cross-section uses radius Size.X / 2. The cylinder’s orientation is fixed to the Part’s own axes — changing Direction moves where particles fly out, not which way the cylinder points.
Use cases: pillars of light or mist (tall narrow cylinder, particles spawning throughout); columns of falling debris; a flat-topped beam of particles emanating up from a circular base. Pair with Spawn on = Surface and Hollow = 1 to get a tube shell — particles only on the cylinder’s curved surface, useful for hollow-pipe magical conduits.
Disc — a flat circular region in the Part’s local X-Z plane, with radius Size.X / 2. Like Cylinder, the disc’s plane is fixed to the Part’s local axes regardless of the Direction setting.
Use cases: fountain water spreading from a circular basin, debris kicking up from a circular landing impact, ground-level fog spawning across a flat patch, ritual-circle sparks materialising along a flat ring. Pair with Spawn on = Surface to get only the disc’s outer ring — particles materialising on the circle’s edge, useful for halo or summoning-circle effects where the boundary is what matters.
For most authoring, Box is right. Reach for the others when the spawn region’s shape itself drives the visual — fountain particles spawning from a circular disc on the ground, smoke spawning from a spherical kernel.
Spawn on
Section titled “Spawn on”UI label: Spawn on. Data attribute: ShapeStyle.
Whether particles spawn anywhere within the shape’s volume, or only on its boundary. An enum: Volume, Surface.
Volume (the default) — particles can spawn anywhere inside the shape. A spherical Shape with Spawn on = Volume fills the sphere with potential spawn locations.
Surface — particles only spawn on the shape’s boundary. A spherical Shape with Spawn on = Surface spawns particles only on the sphere’s surface, none inside.
Surface mode is useful for spawning particles on an object rather than within it. A spell-charging effect where particles materialize on the surface of an orb uses Sphere + Surface.
Hollow
Section titled “Hollow”UI label: Hollow. Data attribute: ShapePartial.
A number from 0 to 1 controlling how much of the shape’s volume is filled. 0 (the default) is fully solid. 1 is a hollow shell — only the boundary is used, regardless of Spawn on. Values in between produce partial shells.
Hollow = 0.7 on a sphere shape means particles spawn within the outer 30% of the sphere’s volume — a hollow shell, but with thickness. Useful for atmospheric effects that should have depth without being totally filled.
For most uses, leave Hollow at 0.
Worth knowing
Section titled “Worth knowing”Several Part-specific gotchas worth surfacing.
The duplicate inherits Anchored, CanCollide, and other physics flags from the Render Template. Transform sets Anchored = true and CanCollide = false on the Render Template by default, so emitted particles don’t fall under gravity (good — Acceleration handles that explicitly) and don’t collide with the world (good — particles are visual, not physical).
If you need different physics (a “shrapnel” effect where particles should collide and fall), set those values on the RenderTemplate directly. The plugin doesn’t override your edits to the template — it copies whatever’s there each emit.
Mesh particles cost more than Block particles. A MeshPart-based emitter is more expensive per particle than a regular Part-shaped emitter — the engine has to duplicate the mesh data (or reference-count the existing mesh asset), set up its rendering, etc. For high-rate emitters, prefer simple primitive shapes.
SpecialMesh-based particles can layer textures. A Part with a SpecialMesh child plus a Decal gives you a textured custom mesh — useful when you have a custom shape with a custom texture that doesn’t quite fit MeshPart’s “single texture per mesh” model.
The shape spawn region is local to the Part. Rotating the Part rotates the spawn region with it (since Pos. Mode defaults to Local). A spinning emitter with a disc-shaped spawn region produces a swirling effect automatically.
What’s next
Section titled “What’s next”Attachment is the next type. It works almost identically to Part for motion, but has a different relationship to its parent — its position is parent-local, which gives you parent-frame emission for free without any linking setup.