INTRODUCTION
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.
INSTALLATION
You can get blender add-on here and roblox plugin here.
MAKE YOUR FIRST ANIMATION
Export 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!
API
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
FEATURES
-
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)
DETAILS
-
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.
EXTRA
- Thanks to fast mesh importer for the idea of importing.