Creating a feedback loop
Transcript
00:00
- So the next thing we're going to do is add something called a feedback loop in. Now what we have at the moment is basically our portrait gets displaced and then gets displaced again. And on every single frame of our timeline that is running down here, it will do the same job except our noise is slightly different every single time. But what happens if you want to take this original image, manipulate it, and then manipulate the manipulated image instead on every single frame, we need some kind of loop that kind of inserts itself.
00:32
So what we're going to do next is add something called a feedback loop. To do this, we're going to actually add a new top. So we're going to press tab and we're going to add in feedback, which is actually just down here, or type in feedback, press enter, that'll do the same job, feedback. And we're going to put it over here. Now, at the moment, it is complaining because it says, what should I feedback to begin with? Well, the first thing we want to start the feedback loop with is the original image.
01:01
So I'm actually going to take this original portrait image and move this over here, and I'm going to take my portrait. The output will go into the input of the feedback loop. Now, my feedback loop is what I want to actually distort in the long term. So my feedback loop is the thing that I want to take this displaced image and displace this again and again and again and again, rather than starting always with this portrait. Portrait is the thing that I start with, but I want to not just end with that.
01:33
So what we're going to do instead is take this feedback loop, and instead I can right click on this wire, I can disconnect it, which will break everything, and I'm going to put this feedback loop into my displacement. Number one, we get basically the same thing. Now the reason we get the same thing is there isn't a connection back. There isn't anything that says displace two is the thing that I want to displace and add this loop in.
01:59
We've got the start of the loop of our feedback loop, but not the end of it. Now what I'm going to add next is something called a null. Now a null is basically do nothing at all. Now, why would you add a do nothing at all? So let's just do it first. We're going to press tab and we're going to type in null. Now null is essentially just don't do anything, but it gives us a way to kind of insert stuff between the start and the end of our loop. So for instance, if we imagine this being the end of our loop, we can add some stuff between displace two and maybe do something even extra with it.
02:35
Maybe add a third displacement in here if we wanted to. But we're going to treat this null one as the end of our loop. So we're going to take displace two, pass it into null one, and what we'll get is if I change the display tag from this one and put it onto here, is kind of what we had from before. Now what we can do is take this null one, I'm just going to move it up here, and I want this to kind of go back around and around and around and around and around on every single frame.
03:06
So to do this, I'm going to take my null one, and if I click on feedback right now, you'll notice it has this thing in here called target top. Top means texture operator. So what should be the start of my feedback loop? Well, we want it to be the end of this loop every single time. So when I've done this, when I run it again, I want it to be null one, not my original portrait. I want us to kind of feed back on itself. So what we're going to do in feedback one is I'm going to type in which one I want.
03:39
So this is called null one. I'm going to type in null one. Null one. And what we'll get as soon as we do this is something very quickly happens. It kind of goes to gray. But if I click this pulse on feedback, so I'm selecting feedback, and click pulse. You'll notice if I keep clicking this, this will do some displacement, but it's displacement it so unbelievably quickly that it kind of just goes to gray.
04:08
And that's because it kind of almost like evens out all of this displacement over time. It's doing it very slightly differently every single time. So the gray looks slightly different every single time I click, but there's something that's a bit of a problem here. Now the problem is this displacement here and here are way too strong again. Because we're displacing the displacement every single time. When we had our original portrait loop, that was fine because we had the same image that we started with.
04:37
On our feedback loop we have a displaced image that's already been displaced twice. So we are doing it again and again and again even more aggressively as if we added more and more onto here. So we just need to tone down this displacement. So on displace one, I'm going to take this displaced weight, make it 0.01 in both directions, and on displace two, it's currently 0.01. I'm going to make this 0.001 on both directions as well on displaced weight.
05:13
So basically I'm toning this down even more. It's a thousandth of what it started with originally, but nothing's really changed and that's because this feedback loop is still running. If we go back to feedback and press pulse, we'll get something that looks very different now. So we are using this feedback loop to get this kind of displaced effect every single time. It looks very different now, and if I click it again, we're going to get something that looks a little bit different every single time.
05:44
So I don't know what I'm going to get here, which is a good thing. This is where generative art is really, really powerful because I haven't really, I have no control over this anymore. This thing on the left right now looks very different every single time I press pulse. And that's partly because of the noise is different and the noise on these both things are different every single time. But what we've got now is the idea of generative art properly.
06:10
We have the properly idea of like we have no idea what we're going to get every single time. If I press pulse every single time, we're going to get something different. I have no real final control over this. We're kind of at the mercy of the actual code that underlies this. So this is how we can make something like generative art, but let's talk about how we make this a little bit nicer.