I make this because and thinked how to make a new visual effect to make on roblox and I thought in this and I said why not, here is a showcase.
You can get blender add-on here and roblox plugin here.
MAKE YOUR FIRST ANIMATION
After create your animation(in blender), click on File → Export → Roblox Modifiers Animation (.fbx) and select a file to save keyframes data(50k max tris per file, its done automatically).
Here an exported sample animation
rbxmanim1.fbx (1.7 MB)
rbxmanim2.fbx (1.3 MB)
Import and Playing Animation
After plugin installation, click on Import Module and Create Animatable button, and select one per one animation files, when done, press Cancel on the file prompt, this creates an animatable model. Now just Run and enjoy the animation!
Module Functions: ModifiersTrack ModifiersAnimation:LoadAnimation(animatable: Model, length: number) > class constructor > length is animation duration, default is 1, 0.1 -> 999999999 boolean ModifiersAnimation.Is(obj) > returns if object is a ModifiersTrack boolean ModifiersAnimation.IsAnimatable(animatable) > returns if object is an Animatable Properties(read-only): string ClassName > returns the class name boolean Reversed -> can set > returns or set if animation is reversed > if animation is playing, on next play(loop included) the animation is reversed boolean Looped -> can set > returns or set if animation is in loop model Animatable > returns the animatable model number Length > returns animation duration boolean IsPlaying > returns if animations is playing number TimePositionn > returns the current time position > returns 0 if animation is not playing number Speed > returns animation offset speed number Keyframe > returns the current keyframe > returns 0 if animation is not playing number Keyframes > returns the length of keyframes Methods: void AdjustSpeed(speed: number) > sets animation offset speed > default is 1 void AdjustLength(length: number) > sets animation length(if animation is playing, this sets on next play) > default is 1 > 0.1 -> 999999999 number GetTimeOfKeyframe(keyframe: number) > returns the keyframe time given on param void Play() > stops if animation is playing and play animation void Stop() > stops animation on the current keyframe void Destroy() > destroys and set to first keyframe > do this if not using the animation, clear memory leaks Events: RBXScriptSignal DidLoop() > fires when animation finishes and is in loop RBXScriptSignal KeyframeReached(keyframe: number) > fires when a keyframe is reached > keyframe is the keyframe reached RBXScriptSignal Stopped() > fires when animation finishes
Create Animatable, select .fbx files generated by blender add-on, when done, press Cancel on the file prompt.
Reverse Keyframes, reverses keyframes from selected animatables.
Import Module, just import module(it not import if already is imported)
The animatable have some attributes, after creation, if u put it in workspace then u can change color and transparency(of animatable’s selected) and this too changes for all keyframes.
Clicking Import Module button, searches in Workspace, ServerScriptService, ServerStorage, ReplicatedStorage, ReplicatedStorage.Modules and ReplicatedStorage.modules, if not found, the module is downloaded and placed in ReplicatedStorage(or modules folder).
After animatable creation, if module is imported, this creates a demo script on animatable.
Blender animation must finish with minium 2 tris, 21k are max tris per frame and when exporting, select an object and export.
If have much frames on blender animation and it crashes when exporting, not close it, just is processing frames.
If Script Injection is disabled, plugin can’t imports module or creates demo script.
- Thanks to fast mesh importer for the idea of importing.