Consistent Survey

Unidentified equipment of a redundant process.

In the process of making this animation, I came across a pretty interesting discovery about perfect loops.

In previous projects, when I’ve wanted to render a cloud of scribbly lines in embroidery, I would use my automated scribbly line generator (read more here). Because the line is randomly generated from scratch for each frame, there is no fluid movement or animation between frames, all you see is a flickering, noisy cloud of lines. This made me think of ways I could procedurally animate a seamlessly looping cloud of lines – I had no idea how I would do this until playing around with the mechanism I developed for this animation.

The core mech, seen in the tumbling wires above, is a way of turning a defined stitch path into a flexible, fluid spring that can be dragged around from one end. I demo’d this functionality using an embroidery file I made previously of a $100 bill.

In making Consistent Survey, I actually developed a whole sort of contained physics engine from scratch in Processing. The following video shows behind the scenes of it in the earlier stages where you can see where I’ve defined rectangles for circles and strings to collide with. The first phase was getting circles to collide with and roll off of rectangles. I made it so that only the circles fall and move around because collision detection and resolution is made much simpler when the colliding object is always a circle.

Once I had this system in place, the springy lines I was doing before could be fixed from one end to these circles, which could then roll around and tumble on the rectangles in a very tangible way. This video shows the wires being pulled through the track, but what isn’t shown is the circle at the front of each wire dragging it along. It’s these circles that are swept up by the rotating arms and tumbled down slopes and things – the wire is simply dragged along behind it, colliding with the rectangular obstacles.

It’s important to note – there’s not actually multiple wires being generated here. The program displays the state of the system 15 frames prior (which is the length of the loop I was planning). The same technique I used for Tensioned Attaching was implemented here: Start by recording a longer action over several hundred frames. All of these frames can’t be laid out on the 15 we want to stitch, so the 16th frame of action is stitched back on the 1st frame, and this pattern is repeated. The result is an animated chain of objects, where each object ends up where the next consecutive object is after each loop.

To clean this up a bit for Consistent Survey, I added an extra condition that pins the tail end of each wire to where the front end of the wire was 1 loop prior. The result of this is a seamless wire going from one object to the next. You can see this in the final animation, but not in the Tweet above (although you can imagine taking those loose trailing ends and pulling them to meet where the previous wires start). The only break in the seamlessness are the start and end points. You could potentially make these loop as well, but I didn’t have a system in place for that so I decide to make the chain’s beginning and end out of frame.

While I was playing around with this I realized that it can actually achieve what I was trying to do with seamlessly looping clouds of lines. Because the current frame always gets added to the frame 15 frames prior, eventually with enough movement the canvas becomes a mess with lines everywhere. I realized though in the video above, that if I keep moving or animating this one scribbly wire, I can make a whole cloud of wires that is actually animated rather than being random scribbles every frame. It was pretty intuitive also, crafting the specific movement and flow I wanted in the cloud.

I definitely want to play around more with this and see how intricate an action I can get from these automatically looping wires!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s