Groove Animator is a custom keyframe player that works much like Roblox’s Animator class. It is totally virtual, so no instances are required for it to run, and it can be manually stepped, giving you full power over your animation playback. There’s also no CDN required to play the animations!
Features:
- Virtual Animations: No instance overhead.
- Blend Masking: Composite multiple animations together.
- Keyframe Flexibility: Supports custom sequences and binary storage for fast loading.
- Custom Easing: Extendable easing styles for tailored animation curves.
- Roblox-Friendly: Integrates naturally with Roblox rigs and workflows.
Example Usage:
local GrooveAnimator = require(game.ReplicatedStorage.GrooveAnimator)
-- Source rig
local rig = script.Parent.Rig
-- Create and play a track from an existing KeyframeSequence
local grooveTrack = GrooveAnimator.newTrack(GrooveAnimator:ImportKeyframeSequence(rig.AnimSaves["Bounce"]))
grooveTrack:Play()
-- Set up a controller
local grooveController = GrooveAnimator.newController()
grooveController:AddTrack(grooveTrack)
-- Attach the rig for automatic updates
local grooveRig = grooveController:AttachRig(rig)
-- Step animations each frame
game:GetService("RunService").Heartbeat:Connect(function(deltaTime)
grooveController:Step(deltaTime)
end)
Examples:
Animation compositing:
Skinned Mesh Support:
R6/R15 support:
Custom Easing Style using @tyridge77’s Graph Editor
Performance:
Stepping the poses of an R6 character (7 poses per keyframe) takes just over 0.02 ms
:
Using the rig utility to visualize the animation doubles the computation time required, coming in at just under 0.04 ms
:
Get it here:
Test Place (Run with F8, run mode):
GrooveAnimator.rbxl (610.1 KB)