If you’re looking for how to loop animated metaballs in blender, you’ve come to the right place. Since this is a procedural animation, it will be easy to control the number and size of metaballs, amplitude, speed, etc. Here you can check video version and I also added a link to the blender file containing all the nodes at the end.
Install ‘animation nodes’ add-on
First of all you need to have ‘animation nodes’ add-on installed in your blender project. You can download the latest version for your platform here. Then go to edit/preferences/add-ons. Click install in the right top corner and choose the downloaded zip file. Also, don’t forget to check the box next to the node name.
Add premade node group
Metaball movement is driven by a vector that is generated by wiggle node output. Looping a wiggle node output is not an easy task. In this topic i won’t dive into the details how to achieve it. Lucky for us there is a ready to go solution nicely provided by Razie. You can download it here. A blender file contains the node group that you can append to the project.
Also make sure to delete the additional scene that was created automatically after importing the node set.
Let’s get started! 🚀
First of all we need to add metaball object to the scene. Then for one of your views change editor type to ‘Animation nodes’.
Generate metaball instances
The node set below generates 12 metaball instances in one place. Because for now the ‘Object Transform Output’ node have the same location values for every generated metaball.
Create loop subprogram
Now we need to provide a vector for the ‘Object Transform Output’ node location input. We will need to use loop which will generate vector for every metaball instance.
Add ‘Invoke Subrogram’ node and set the type to ‘Loop’. Set loop iterator as ‘Object List’. Because we are going to iterate through the list of generated metaball objects. Use ‘Collection Info’ node to get the generated objects. Then set loop output as ‘Vector List’.
Now it’s time to use a premade node from Razei. Add another ‘Invoke Subrogram’ node and choose ‘[RA] Wiggle Loop’ from the list. The output of this node generates a random values which are repeating their sequence every animation cycle. We will use it to animate along the axises. Frequency parameter will control the speed of your animation. Interpolation will affect the smoothness of the animation. Increase the amplitude parameter to see the movement more clearly. Also, don’t forget to turn on the ‘Full Anim Loop’ checkbox and to connect the loop output to the ‘Object Transforms Output’ node. If the nodes were set correctly after hitting the ‘space’ button you will see metaball movement along x axis.
To add movement along y and z axis simply duplicate ‘[RA] Wiggle Loop’ subprogram twice. And to achieve more natural movement set a different seed parameter for every ‘[RA] Wiggle Loop’ subprogram. Now the result looks close to the desired one.
Add more randomness
The final step will be to add randomness to the metaball scale. Add a new loop output. Set the output type to ‘Vector List’. Connect the new loop output to the ‘Object Transforms Output’ node. Then duplicate ‘[RA] Wiggle Loop’ subprogram one more time. And add a ‘Map Range’ node in order to map the random values generated by subprogram. This will allow you to control the scale of metaballs. Below you can check the final node setup.
That’s it! Now you have procedural metaball loop animation that you can adjust on the fly without manually tweaking keyframes. Hope you will find it useful.
You can download the blender file with the final node setup here.