Still learning expressions, but every time i think i'm getting the hang of them, something always breaks.
I'm trying to make fire with fractal noise among other things, and needed it to loop, or at least run about 5 – 10 minutes.
I put an expression on offset turbulence: so the flames would keep rising upward throughout my video, [0, time*-1000] and that works really well for 30 seconds, but then it stops when Offset Turbulence reaches 0.0, -33867.2
Truly frustrating. I was excited to use an expression thinking that without keyframes, it could run forever.
30 seconds is a poor specimen for forever.
What's the strategy to knowing when this kind of limitation will happen to you, and how can i work around it?
I was hoping i didn't have to fade in and out of a 30 second loop. Is there any way to keep Fractal Noise sliding upward forever?
Any and all help would be greatly appreciated.
Thank you for your time.
You e run into the pixel res limitation there. You can get around this by cycling the evolution and making sure the offset value matches up with that. Do you have cycle evolution turned on?
I can’t test it as not in front of AE right now but pretty sure if you create a key frame at 0 and another at 33867.2 and then apply a cycle loop, it may loop seamlessly?
Copy link to clipboard
As you've noticed, you can only animate a parameter up to its maximum value. You'll want to animate to a match frame in order to create a loop cycle.
If you can get the look you want by animating the Evolution parameter, it's very easy to create the loop cycle (as Angie suggested) as you can enable Cycle Evolution under Evolution Options. With this enabled, you return to a visual match every 360 degrees. Two keyframe and a loopOut() expression allow animations made this way to run forever (or 5 to 10 minutes easy).
With Cycle Evolution enabled, you could use a time expression instead of two keyframes and a loopOut(); however, the max value for Evolution is something like 2,147,483,648. It's also more challenging to sync other layers if going the expression only route.
leather.bird: Is this close to what you mean by "keep Fractal Noise sliding upward forever"?
I don’t think he believed us! 😉
But i'm not understanding what you're doing. Or what's happening here.
If evolution is animating with cycle animation enabled — with no offset (no upward motion) then the Fractal Noise mutates and evolves in a loop, till it comes round again to look the same as when it began.
That part i get. Makes sense.
But with upward motion, then even when that evolution returns to its starting point at the end of the loop, it will have been offset upward and therefore not match up.
At least, that's my understanding of the offset. So i'm not getting what you're suggesting, or doing.
As i said, i'm still very new to this, and i appreciate you trying to help.
It's just this part of my 1st response: You'll want to animate to a match frame in order to create a loop cycle.
I should have added that fractal noise needs to be rendered such that if tiled it does not reveal the edges (this is key to easily creating the match frame).
I only suggested Evolution as it's the easy way to get a loop cycle out of Fractal Noise.
So, my approach requires having Fractal Noise appear in a manner that allows the layer to be tiled without showing the edges and then animating to a match frame.
The tricky thing is that, as best as I have ever been able to tell, Fractal Noise does not generate a pattern that can be tiled without showing the edges. (In Photoshop, the fractal used to for the Clouds Filter and Difference Clouds Filter will generate a patter that hides the edges when tiled if you hold option on Mac or alt on Windows when the filter is applied. Although not directly related to this post, it might be of interest to those who might read this thread.) As such, we're left with having to find a workaround that can be tiled without revealing the edges and animated in a way that creates the illusion of continuous flow.
Here's what I did:
Created a 1920x2160 Comp; applied Fractal Noise to a 1920x2160 Solid; saved the first frame as a PNG; opened a duplicate of the PNG in Photoshop and used the Offset Filter and the Clone Stamp Tool to manually paint a 1920x2160 panel that can be tiled without showing the edges; imported the duplicate PNG back into AE; added it to a new, 1920x1080 Comp such that the duplicate fractal noise source footage is Layer 1; aligned Layer 1 to the top edge of Comp; created a duplicate of Layer 1 to get Layer 2 based on the same source footage; changed the position of Layer 2 such that it appears directly below Layer 1 (even though ti's outside the visible area of the Comp); created a new 1920x1080 solid for layer (this could have been a null, but at 1920x1080 the Layer Handles provide better visual feedback when animating to the match frame); set the 1920x1080 Solid as the parent of the other two layers and hide it's video; set two position keyframes such that the 1920x1080 Solid animates up 2160 pixels set far enough apart such that the Fractal Noise moves as the desired speed; then added a "loopOut()" expression to that position property.
This could probably be done without going to Photoshop as AE has an Offset Effect and a Clone Stamp Tool; however, I'm very practiced in manually painting artwork that can be tiled without showing the edges in PS and, more than anything, Photoshop has keyboard shortcuts for adjusting the brush hardness and size as needed while painting with the Clone Stamp Tool.
Another interesting tid-bit is that Fractal Noise used to render in multiples of 64 in AE. As such, when applied to a 640x640 Solid (or anything that made a multiple of 64x64), it would tile without showing the edges. I forget which version that was, but it was like 10 years ago or something.
Hi Warren, have you tried applying it to a layer that is one of the magic 8-bit numbers in dimensions? This often works to get edge tiling working. So if you make a layer that is close to the size you need but is one of any number that is 1 to the power of 8. So it could be 2048 x 2048 or 1024 x 1024. I can’t check it now but I know it works in Phonotoshop with the noise generation filters.
I should have said any number that is divisible of 1 to the power of 8!
To the power of 8!!! 00001000
I just gave those dimensions a try in AE cc2018 with Fractal Noise. The edges still show.
CC RepeTile has its Blend Borders option and Motion Tile has Mirror Edges, but on a Basic Soft Linear Fractal Noise the result looks a bit like CC Kaleida.
What was the name of the Photoshop KAI Power Tools plug-in that helped create tiles with such amazing results back in the mid 1990s? (At the present moment, I am reminded about how much I've missed the PS+ option that used to work inside of AE so many years ago.)
KPT Projector? Ah memories! BTW 00001000 is not one of those numbers! Her’s a list;
1,2,4, 8,16,32,64,128, 256, 512, 1024, 2048, 4096 etc etc . . . .
I was getting a little too nerdy with the "00001000". That's the 8-bit binary for eight.
Ah, I see! I’m obviously not nerdy enough! 😉
I had a similar problem once. I created a wide comp the same height and 2X wider than my comp, added a solid half the width, applied fractal noise, animated evolution to 4 revolutions in 4 seconds, enabled loop evolution for 4 rotations, added a loopOut() expression to evolution rotation, added motion tile, mirror edges and filled the comp with the seamless fractal noise pattern. That layer was pre-composed and CC Cylinder applied to the pre-comp. The Cylinder was big and rotated slowly, the mirrored edges took care of the seams. A little Bezier Warp fixed the distortion and I had a seamless endless fractal pattern that I could set at any angle. That should work just fine for your application. The only trick would be to make the nested comp big enough. It was way to time-consuming to try and figure where or if the edges of fractal noise repeated.
Copy link to clipboard
Software has limits. So, now you know the constraints of the effect - find a way around it. Here are a few ideas, in no particular order.
If you haven't already, try starting it at the opposite end of this property's limit, instead of zero; you just doubled what it'll give you.
If you read Angie's post carefully, I believe she's actually suggesting using Evolution as well as the Offset Turbulence (which I would probably suggest as well). It's possible you'll be able to find a match frame that would work well enough.
Fire is flickery by nature - it seems like it would be easy enough to hide a quick fade to another layer of this effect. I'd randomize the time somewhat so it doesn't feel uniform if someone watches for a while.
Make a taller layer to put the effect on, and use a combination of Offset Turb + y position movement to give yourself more leeway. It's likely you could then duplicate this, push it later in time, and use a soft mask edge to simply blend the next instance in pretty seamlessly. If you find an amount of time that works well, you could then drop this comp into another and use time remapping to loop it infinitely.
I appreciate that you want to loop The offset. But you Cant loop this without also looping evolution. If evolution is not cycling, then you won’t be able to match your frame. No matter what your offset settings are. So the technique I suggested is to 1st of all make sure that your Evolution settings are looping properly (Using the cycle Option). Then deal with the offset. My suggestion, as I said, is to somehow find matching frames, Keyframe those and then loop these using an expression. My suggestion to find matching frames is to try the extreme values. You may also try other values. I’m going to be on after affects today so I’ll give it a try for you and see if I can’s create a solution. I hope this helps.
By the way, in order to get The offset frames To match. You will also need to deal with the sub settings, these also need to match.
I used a different workaround. You can combine the Fractal Noise Evolution loop with the MotionTile Effect.
The plan is to tile the Fractal Noise by mirroring the edges so you can use the offset of the Motion Tile effect instead of the Fractal. You will get the illusion of an infinitely scrolling texture. This is way more software efficient than raising the value infinitely. It is not generating a perfect result, because you see the edges mirrored, but in your case, you use it for flames anyway, tho it is not too obvious.
Here is what to do:
1. Loop the Fractal Noise evolution (full Evolution)
2. Enable Cycle Evolution
4. Add MotionTile Effect
5. Check Mirror Edges
6. Animate the offset (Because you want the same matching frame, you need to move the offset by 4* your composition size. e.g. Your compsize is 50:50px. Your offset starts at 50:50px -> 50 + 50*4 -> You Offset end is 250px.
I appreciate your post since I'm new and trying to understand the exact issue as you were over a year ago but I don't understand step 6. I did see in a follow up post you said it should be "Center Tile" but when you say "Animate..." can you screenshot a screen that shows the properties along with the expression? also, is loopOut() part of that animate expression for Center Tile?
By "animate" nikv99453903 meant keyframe.
When you place the Motion Tile effect, its Tile Center property defaults to the center of the composition.
nikv99453903's wording on step 6 is a quite clunky, but their advice is essentially to keyframe the Tile Center property first with the default value, and then at 5 * this default value.
Then add a loopOut() expression to this same property.
Example: Let's say your composition is 1920 x 1080, and you want your loop to be 2 seconds long.
When you add Motion Tile to your solid, its Tile Center property is: 960.0, 540.0
So at 0 seconds, add a keyframe for Tile Center at 960.0, 540.0.
Then at 2 seconds add another keyframe for Tile Center at 960.0, 2700.0
Then add the expression loopOut(); to the Tile Center property. (This will make it loop those 2 keyframes forever.)
Copy link to clipboard
Going back through my old posts. A little older, a little wiser.
Now, reading through these responses again, they still don't make any sense.
A graphical representation:
This combination doesn't really make for seamless upward movement, does it?
I was asking about how to do an infinite upward movement, and why the expression maxes out at -33867.2, when clearly the offset turbulence value can keep decreasing.
I think perhaps once the commenters realized they understood the solution and I didn't, they ignored the question and just began conversing amongst themselves about the old days, and creating tiled, static noise patterns in Photoshop. The term match frame was mentioned repeatedly as though this was the magic solution. However google searches for it were futile.
In hindsight, the answer to my original posted question is simply:
No. There is no way to keep Fractal Noise sliding upward forever.
And the workaround was apparently also in my original post.
Fading in and out of a short loop.
I hope this thread was helpful to someone. Certainly not me.