Reflector
Plugin Store Link: Reflector
Nearly 11k lines of code you don’t have to write lmao
Provides a complete reflection workflow with support for baseparts, meshes, unions, nested models, multi-selection hierarchies, decals, textures, attachments, accessories, physics assemblies, Motor6D rigs, and animation data. It includes an interactive reflection plane with local/global orientation, axis shortcuts, pivot or bounding-box-center origins, clone/replace behavior, toggleable reflection modes, left/right name swapping, texture and decal flipping, mesh reorientation, safe edit history, validation feedback, debug visualization, and temporary mesh workflows designed around future Roblox mesh-upload support.
- Reflection controls: Interactive plane, X/Y/Z shortcuts, local/global orientation, pivot/center origin, clone/replace behavior, toggleable modes.
- Asset support: Parts, MeshParts, Unions, decals, textures, attachments, accessories, models, nested selections, physics assemblies, Motor6D rigs, physics rigs, and animations.
- Data preservation: Maintains hierarchy, pivots, assembly relationships, attachments, rig structure, naming intent, decal/texture orientation, and reflected animation meaning.
- Mesh and surface handling: Mesh reorientation, texture/decal face correction, UV flipping, and temporary mesh handling for cases that cannot be represented by ordinary CFrame reflection alone.
- Workflow safety: Validation states, safe edit history, debug center/pivot/reflection markers, and clear feedback for unsupported or temporary-data cases.
Do be warned that this plugin mathematically cannot be perfect, since it tries to represent many kinds of reflections with rotations when an exact solution is not possible. There is inherent ambiguity in how to rotate, which means a designer’s hand will always be necessary for complicated scenes or atypical setups.
Despite heavy testing, there may be bugs! If you find any, please post them in the replies explaining how to reproduce it along with the culprit assets if possible, and I’ll get it fixed as soon as I can!
Tutorials
How to reflect an animation
There’s two ways to reflect an animation, and it depends on if you want your rig reflected in the process:
-
Reflected Rig:
A reflected rig will inherently swap the sides of chiral parts, such asPreserve NamesRightArmnow being on the left side when reflected across X. This means a reflection animation should reflect theRightArmtransforms in-place. -
Non-reflected Rig:
A non-reflected rig will maintain left as left, right as right, etc. This means a reflected animation must swap the names of its transforms; any operation on theSwap NamesRightArmmust instead be applied to theLeftArmand flipped.
Process
- Select a rig.
- Load an animation from roblox.
- Locate the RBX_ANIMSAVES model (likely in in ServerStorage).
- Find the associated KeyframeSequence or CurveSequence.
- Select it and reflect it depending on your needs listed above.
- Load the animation again onto your rig.
- Profit.
Likely Mistakes
- If you reflect around the wrong axis, your model will likely be a jumbled mess. It is really only safe to reflect a model over a plane of symmetry. If your model is chiral along an axis, consider reflecting the model itself and turning off
Swap Names/ turning onPreserve Names. - If you use the wrong name mode for your needs, the animation will look reflected in-place like each limb is backwards.



