Perfect loop animation

How to Create a Perfect Factory Loop Animation in Blender | Incl. Geometry Nodes

There is a great chance that you have seen one of these satisfying animation loops. Motion designers all over the internet have been publishing things like these over the past years, perfectly looping mini-factories that create all kinds of wonders. 

These loop animations are captivating, pleasing to the viewer’s eye, and entertaining, but how are they created in blender?

Recently I created a chain-reaction animation for a client, part of this was a small factory. Then I noticed some deformation issues when instancing something along a curve in Blender. In this post, we’ll take a look at how to tackle that, as well as, a few other issues.

To demonstrate my point, I created this toffee factory, I’ve been staying clear from sweets, this year, so this was some sort of relief. 

The art of looping

Every scenario requires a different approach, but ultimately there are multiple ways to make things loop or seem to loop. The perception of looping comes from the illusion of not having a clear starting or ending point. 

Here is a checklist with some things to keep in mind while creating loops are:

  • Begin and end positions, rotations scale, colors, and whatnot must match up.
  • Consistent speed is king, easing in and out, breaks the illusion of looping.
  • Simulations, like cloth and hair, have settling time. No matter how good collision meshes are looping, your simulation usually needs to settle in its rest position first. 
  • Timing is king.
  • Find the balance between variety and minimalism. (by lack of a better word) The more randomized instances, the better is your believability. However, this will significantly increase your difficulty, when trying to match start and end

In this video, I’ll show you how I created the mini-toffee-factory. Keep on reading if you want more context.

How to set up a conveyor belt

Start your animations by quickly planing out your scene, make sketches, roughly mockup a scene in 3d, or follow/combine concept art.  

The most important part of the mini-factory is the means of transportation. Luckily only our imagination is a limiting factor, as artists nothing is impossible. Drones can carry packages, elves might be coloring, robots for quality control, you figure it out!

For this example, I choose a conveyor belt system. A simple shape with endless possibilities for style choices, gadgets, alterations, and themes. Check out the video for a detailed overview of how to create the belt system. 

Creating a conveyor belt is easy, using modifiers and curves you quickly have a whole bunch of them. 

Break it up!

My favorite part is figuring out how to create a seamless loop. The more complex the scene is the more likely I’m to break it up into small sections. You would do yourself and your computer a favor this way. Think about it, every half, third, or quarter can be a new loop and no one needs to know.

If your scene gets too heavy for your computer, just close 2 or 3 loops and work on the one in front of you. 

This makes it way easier to have variations in products over your conveyor belt system. In my case, from rough toffee pebbles to neatly cut pieces with press emblems and ultimately into packaged goods, ready to be delivered.

Hide your tracks! No seriously. If you break up your mini-factory animation into multiple loops, be sure to hide the parts that don’t need to be visible. 

The way I do it here is, boolean the part that needs to be hidden. 

Don’t take my word for it, you should try it for yourself. If you make create something with these techniques, leave a comment down below, or tag me on Instagram @mv.artz.

Product looping over the belt

Like I mentioned at the start, I ran into a deformation problem while distributing the products over the belts. For a client a while ago, I used an array and a curve modifier to distribute the goods over the conveyor system. 

Whenever the product got near a corner it would start deforming and usually, this is not appreciated.

The new and improved method I use still consists of a curve and array modifier. However, I’m not directly deforming the goods anymore. I create a single edge and using one of many instancing options, I distribute the products over that line.

This has three clear added benefits, mainly extra control over the deformation of your product. Second, an easy way to control the amount of product, by subdividing the edge. Lastly, fine control over the distance between objects. When objects have an equal distance from and to each other, looping becomes easy as pie

Randomize with geo nodes

There are several ways to populate this edge with your products. Each has its pros and cons. 

Dupliverts, also know as ‘Vertex Instancing’ are very reliable but allows for a little variation. 

There are a few options to randomize Dupliverts, for example, random material output per instance. However, vertex instancing doesn’t allow the collection to be picked at random, as of now, and to the best of my knowledge.

On the other hand, a particle system offers a wide scale of randomization abilities. Either hair or emitter can be set to distribute from vertices only. With a bit of tweaking, every vertex has one instance. From here the options are all open.

I don’t know if this counts as a real con, but I found that a particle system sometimes a bit of overkill. The number of options a particle system has doesn’t outweigh the simple variations I desire in the end. 

Sometimes this can get a bit overwhelming, especially for beginners.

In blender 2.92, at this point an experimental version, we can use geometry nodes.

Since this is new, I can’t say much about the difficulty in use and the seemingly endless abilities. 

That said, I was able to quickly set up a string of nodes, that let me distribute the products along the edge that follows our curve. Adding an attribute randomize node to the equation gave me the simple set-up I needed, to balance out my randomness and the order of keeping things in a looping motion.

Slow performance and render?

My computer is decent and get’s most of the jobs done, but sometimes when I push it, it gets slow in viewport performance and render speed.

It so happened to be that a lot of duplicates and a bunch of modifiers stacks was a bridge too far for my pc this time.

When I was certain I like my loop animation, check this by previewing your animation, I baked the animation to keyframes. Then exported all instances in that loop to an alembic file.

Now I made a new scene where I deleted all have instance loops and imported the newly created alembic files. This helped a lot when building the BHV for rendering, but also in the viewport performance

As always stay creative!