Documentation
Export
Turn a finished graph into a Roblox effect — flipbook or single frame — from the Export VFX panel.
Export renders your graph at full quality, publishes the result as a Roblox image asset, and applies it to the object you picked in the Explorer. In VFX Loom 1.0 this is built into the plugin: there is no second plugin to install and nothing to connect.
- Before you exportSet an output node, check the settings, pick a target.
- Flipbook or single frameOne animated sheet, or one full-resolution image.
- Preview vs ExportWhy the exported image is never the preview’s image.
What Export does
Press Export in the toolbar to open the Export VFX panel. One export does four things, in order, and stops at the first one that fails:
- Renders your output node at full quality — every frame, at the cell’s true resolution.
- Publishes the rendered sheet as a Roblox image asset through VFX Loom’s integrated export service.
- Applies the asset to the target you selected, configuring its flipbook properties.
- Selects the result in the Explorer so you are looking at what changed.
Nothing is created until everything it depends on has succeeded. A failed render publishes nothing; a failed publish leaves no emitter behind. There is no intermediate folder, no base64 blob and nothing to clean up by hand.
Before you export
- Set an output node. Export renders whatever is marked as the output. With nothing connected it refuses with “nothing is connected to the output, so there is nothing to export”.
- Check the project settings. Resolution, frames, rate and padding are project settings, not export settings — the Edit… button in the panel opens Project Settings, and the panel states what the current settings will produce.
- Select a target in the Explorer, unless you are exporting a single frame as a bare image.
Export modes
The EXPORT MODE row at the top of the panel offers two modes.
| Mode | Produces | Use it for |
|---|---|---|
| Flipbook | One atlas containing every frame, plus a fully configured ParticleEmitter. | Animated effects. |
| Single Frame | One full-resolution image of a single frame. | Still textures, decals, beam textures, or pulling one frame out of an animation. |
Flipbook
The whole project is rendered: every frame, laid out in the grid the project settings solved, packed into one atlas.
The panel’s readout states exactly what you are about to get — grid, pixels per frame, true atlas size, frames, rate, loop length, padding, the Roblox layout that will be used, a coarse render-cost band and a rough time estimate.
Applied to a target, a Flipbook export writes every property Roblox needs to play
the sheet: FlipbookLayout, FlipbookMode, FlipbookFramerate (pinned to exactly
your project’s rate), FlipbookStartRandom, FlipbookSizeX, FlipbookSizeY and
Texture. You never configure the emitter by hand.
Requires a ParticleEmitter-compatible target — a ParticleEmitter, a BasePart
or an Attachment. Beams cannot play a flipbook.
Single Frame
Renders one frame at the project’s full cell resolution. Which frame is chosen by the FRAME field, numbered 1 to the frame count.
The field follows the playhead: opening the panel seeds it from the current frame, and moving the timeline re-arms it. Type a number and it stays on that frame until you move the playhead again.
Two things can happen when you export a single frame:
- With a Part, Attachment, ParticleEmitter or Beam selected, the image is applied to it.
- With nothing selected, the panel switches to IMAGE OUTPUT and exports the image on its own. You get an image asset, and nothing in your place is touched.
The project’s own animation is unchanged either way.
Beam
A Beam selected in the Explorer is a valid export target. Its Texture is
replaced in place — no child is created, and no other property is touched.
A Beam cannot take a flipbook. With a Beam selected in Flipbook mode the panel reads INCOMPATIBLE TARGET, the button becomes Incompatible Target, and it refuses with “Beam does not support this export mode.” Switch to Single Frame and export again.
Choosing a target
The panel reads Studio’s selection live and tells you what will happen before you press anything.
| Selected | Result |
|---|---|
| ParticleEmitter | Updated in place. |
| Beam | Its texture is replaced in place. Single Frame only. |
| BasePart or Attachment | A VFX Loom emitter inside it is reused; if there is none, a new ParticleEmitter is created as a child. |
| Model or Folder | Refused, with a suggestion — a Model points you at a Part inside it. |
| Nothing, or more than one thing | Refused. Exactly one object, deliberately: exporting into six parts would publish six identical assets. |
The EXPORT TARGET block spells out the consequence in advance — “Selected ParticleEmitter will be updated in place”, “Existing VFX Loom emitter will be updated”, or “A new ParticleEmitter will be created.” It also counts the emitters it will not touch, so “2 other emitters left alone” is stated before you commit.
VFX Loom only ever reuses an emitter it created itself, identified by an attribute rather than by name. An emitter you made by hand is never overwritten, even if you renamed VFX Loom’s.
Export settings
Everything that decides what an export produces lives in Project Settings (toolbar → Settings, or Edit… in the export panel). Export has no settings of its own beyond the mode and the single-frame number.
| Setting | Effect on the export |
|---|---|
| Resolution | The pixel budget per axis for the whole atlas: 256, 512, 1024 or 2048. This is what dominates render time. |
| Frames | How many frames are rendered, and the grid they are packed into. |
| Frame rate | Written onto the emitter as its flipbook framerate. Duration is frames ÷ rate. |
| Frame padding | A transparent inset inside each cell. Defaults to 2 px. |
How those settings resolve is worth knowing:
- The atlas is capped at 2048 pixels per axis. The resolution you pick is a budget, not a promise: cells are kept square, so 24 frames at a 512 budget gives a 6×4 grid of 85 px cells and a 510×340 sheet. The panel always reports the true atlas size.
- The grid is an exact factorisation of the frame count. Roblox cycles through every cell in the grid, so a grid with spare capacity would play blank frames. 24 frames is 6×4; 23 frames is 23×1. A count with no legal grid — a prime above 64 — is refused, with a nearby count that works.
- Frame count is nearly free; resolution is the cost. Measured, a 512 sheet costs about the same at 16, 24 or 64 frames, because it holds about the same number of pixels either way.
- Padding stops frames bleeding into each other. Roblox samples cells with filtering, so at 0 padding the next frame ghosts into the current one. 2 px is usually enough.
- A rate above 30 fps is allowed and flagged. Roblox documents 30 as the maximum and may clamp it at render time.
Nothing is silently clamped. A combination that cannot be represented is refused with the reason, and the project is left exactly as it was.
Preview and Export
The Preview and the export are two different renders, and that is deliberate.
- The Preview is interactive. It renders progressively — a quarter-resolution pass lands first and is refined — it can be interrupted mid-render, and it drops to a single half-resolution frame while you drag a control.
- The export is authoritative. It builds its own renderer with progressive rendering off and no preview scale: one pass, full resolution, every requested frame. It never reads the preview’s atlas.
Consequences you can rely on:
- Preview quality does not affect the export. The Full / 75% / 50% / 25% control changes only what is drawn on screen. Exporting at 25% preview quality produces exactly the same asset as exporting at Full.
- The Preview plays the flipbook. In Animated mode it plays the rendered sequence, and in Atlas mode it shows the assembled sheet — so what you export is what you have been watching, at full resolution.
- The preview stands down during an export and keeps showing its last completed result until the export finishes. That is not a fault.
- Frame numbering differs by one. The Preview and the Animation Editor number frames from 0; the export panel’s FRAME field numbers them from 1.
An export never silently returns something cheaper. If it cannot render every frame, it refuses and writes nothing rather than shipping a sheet with a hole in it.
Running an export
- Open Export from the toolbar.
- Choose Flipbook or Single Frame.
- For Single Frame, set the FRAME number, or leave it following the playhead.
- Select the target in the Explorer. The panel updates as your selection changes.
- Press Export VFX.
While it runs, the panel shows a progress bar with the frame count and a time estimate — “Exporting… Frame 7 / 16 · 43% · about 4s left”. Studio stays responsive throughout; the render yields between frames.
Cancel stops a render that is still going, and stops it cleanly: nothing is rendered, nothing is published, nothing is created, and the panel says “Export cancelled. Nothing was created.”
Only one export runs at a time. A second press while one is running is refused with “An export is already running.”
After an export
- The asset. A new image asset is created on your account, named after the project, with a description recording the sheet it came from. Roblox cannot version an image, so every export creates a new asset — iterating leaves the earlier ones behind.
- The emitter. A newly created one is named
VFXLoom_<ProjectName>and carries attributes recording that VFX Loom made it, which project, and when. Those attributes are how the next export knows it may reuse it. - The selection. The updated object is selected in the Explorer.
- Undo. The change to your place is grouped as one Studio undo step. The published asset is external and cannot be undone by the plugin.
- The panel switches to EXPORTED TO, showing the path and the asset id, with a Select target button to jump back to it.
Roblox setup
VFX Loom publishes through Roblox’s own asset API. One Studio setting has to be on:
File → Beta Features → CreateAssetAsync Lua API
Studio needs a restart after enabling it. Nothing else is required — no second plugin, no HTTP, no API key, no external tool.
If the plugin cannot publish, the export panel covers itself with a Setup required panel explaining what is missing, with Check again and Setup guide buttons. The compact status row at the bottom of the panel reports the export service’s state at a glance — Export Ready, Export Unavailable, Export Incompatible — and the live stage while an export runs: Preparing Atlas, Uploading, Processing, Complete.
Troubleshooting
“Nothing is connected to the output, so there is nothing to export.” No output node is set. Select an image node and use Set Output.
“Select a Part, Attachment, ParticleEmitter, or Beam in the Explorer.” Nothing usable is selected. Models and Folders cannot hold an export target — select a Part inside them.
“Beam does not support this export mode.” Beams cannot play a flipbook. Switch to Single Frame.
“VFX Loom’s integrated export service is unavailable.” Reload the plugin and try again. If it persists, check that the CreateAssetAsync beta feature is enabled and that Studio has been restarted since.
“Roblox denied image creation for this Studio account.” The account is not permitted to create assets from Studio. This is an account-level permission, not a VFX Loom setting.
“The export upload did not complete. Try again.” A network problem. The button becomes Retry Export; nothing was created.
“The export service is busy or rate-limited. Try again shortly.” Wait a moment and retry.
“Roblox rejected the image upload.” Moderation or validation refused the image.
“Roblox published the image but it is not usable yet.” The asset exists but has not finished processing. Retry in a moment; the asset id is already on your account.
“N frame(s) did not render; the export was not written.” The render did not complete every frame, so nothing was published. Simplify the graph or lower the resolution and try again.
“Published as N, but the target was deleted before it could be updated.” The object was removed during the upload. The asset exists — select a new target and export again, or apply the id by hand.
The atlas is over the pixel limit. Lower the resolution or the frame count. The message states the largest cell that would fit your grid.
Tips and limitations
- Export renders the output node, not the node you happen to be inspecting. Return the preview to the output before exporting.
- Resolution is the cost. If an export is slow, drop from 1024 to 512 before cutting frames.
- Because every export mints a new asset, iterate in the Preview and export when you are happy with the result.
- A single-frame export of frame 1 is not the same as a 1-frame project: the project keeps all its frames and its animation.
- Empty cells are not possible in a normal project — the grid is solved from the frame count — but a spec with spare capacity would play blank frames, and the settings readout warns about it.