Copy link to clipboard
Copied
For most effects with a "phase angle", all I have to do to seamlessly loop them over a given time interval is just place a keyframe with at phase angle 0 at the beginning and then a keyframe at the end that's just any whole integer of the phase angle (for example, I can do this with Motion Tile to repeatedly shift an image across the screen). However, when I attempt to do the same thing with the Wave Warp effect, it doesn't line up at all! (This is after setting it to a wave speed of 0.) I noticed that I instead had to set the phase angle to o 256 degrees to get it to line up properly (or any whole number multiple of 256 for more loops). I'm not quite sure why this is. I'm not sure if this is consistent across layers or not, as I've got the feeling it might be dependent on the actual width or height of the layer.
So how can I make wave warp loop seamlessly?
Copy link to clipboard
Copied
I'm not clear what you are saying. The exact repeats are dependent on the Wave Width, which is user controlled and the phase is merely an offset for the underlying formula. Of course for a sine wave it will have something to do with the equivalent angles to multiples of Pi. It's not a linear function. Additionally of course there may be an uneven fractional number of waves depending on how you set the width. Similar logic applies to other wave types. There's nothing wrong here. You just need to understand the math and eitehr tweak your values accordingly or create a smart expression for it.
Mylenium
Copy link to clipboard
Copied
Hi JohnT,
So how can I make wave warp loop seamlessly?
Did you get this working according to your needs? How did you do this?
Thanks,
Kevin
Copy link to clipboard
Copied
I just had to stick with what I said in my original post (using multiples of 256 degrees for the phase angle). It seems to be independent of the other parameters of the wave warp function; no matter what layer I apply it to or whatever other parameters I change, for some reason 256 seems to correspond to a phase change of 2*Pi for the wave (hence creating the loop).
Maybe this is an issue with CC 2014.0 that isn't present in other versions (not sure). Perhaps that's why there's this confusion.
Copy link to clipboard
Copied
johnt53984649 wrote
So how can I make wave warp loop seamlessly?
it loops automatically using 'Wave Speed'
Is there some reason you're using key frames & a loop out?
Either way Mylenium gave you the correct answer.
It's the math. Luckily, the effect does the math for you if you use 'Wave Speed'.
There's no keyframing or Loop Outs necessary
Copy link to clipboard
Copied
Gutterfish wrote
Is there some reason you're using key frames & a loop out?
If I need to make 10 or 30 seconds or any other length of the video file, which is a perfect loop. It is not possible to do using only "Wave Speed" parameter.
Parameter "Phase" value *256 - AMAZING! It really works! Thank You johnt53984649
Copy link to clipboard
Copied
Once again, I'm not sure why that is, and I think that there are situations where you may have to add or subtract one degree after doing the multiplication, but that's just what I observed. If anybody can actually explain the mathematics behind it, I'd love to know.
Copy link to clipboard
Copied
If you use loopOut() on an animation that has only 2 keyframes the first and last frame must be identical. For example, if you loop rotation and set the first keyframe to 0º and the second keyframe to 360º the loop will be perfect. If the distance between the first and second keyframe is 10 frames so the motion is 36º per frame then you might think that you should set the second keyframe at 9 frames and set the value to 234º, but that won't work. The first and last frame must be exactly the same for Loop to work. That is how Java works and if you really think about it, it makes sense.
255 (the perfect value if the keyframes are 10 frames apart and the comp frame rate is 29.97) works because that's the value they chose. There's nothing magical about it. It is entirely possible that no consideration was ever made when picking that number.
If you set up Wave Warp so the Wave Speed is zero and the Wave Width is the same as your layer width you can get a seamless single wave to loop perfectly if you simply set a keyframe at 0 and another at 256 and add the loopOut() expression. It's kind of a waste of time though because you can get the exact same animation if you turn off the Phase Animation and simply adjust the speed.
I would have to see the project and fully understand what you are trying to accomplish to figure out why you would try and loop the phase. I can get exactly the same animation by setting wave width to 1920, speed to -3 and leaving phase alone as I get by setting wave width to 1920, speed to 0, and animating phase from 0º to 257º over 10 frames. Here's everything I modified to get exactly the same motion with Wave Warp:
Both layers are perfectly aligned and the motion is exactly the same. I'm not going to take the time to test it but it would not surprise me to find that you need a different phase value with different widths layers or different frame rates.
Copy link to clipboard
Copied
The reason I would want to loop the phase is because I'm developing compositions of a fixed length that need to loop seamlessly with themselves (so the first and last frame need to be identical, with the last frame not rendered). Hence if I want direct control over how many times the wave occurs, animating the phase parameter is by far the easiest way to achieve that.
Copy link to clipboard
Copied
D
If you need a single complete wave to move over 10 seconds then all you need is a way to easily match the first and last frame of a comp that is 10 seconds and 1 frame long.
Try this:
If you want multiple cycles in your 10-second loop just count the number of times you get a mostly black frame. It should be easy and precise. No need for a loopOut() expression or anything else. It should only take you about 2 minutes to set up a perfect loop. I personally don't see any reason to have more than one complete wave cycle in a loop, but if that is what you want it's really easy to do. This took me about 2 minutes to create:
It loops perfectly 4 times in 10 seconds.
Copy link to clipboard
Copied
Those 2 minutes counts a lot on workflow. We need to accept the rough-old Wave Warp lacks of Cycle Phase and Revolutions settings.
Copy link to clipboard
Copied
Thank you! It works out!
Copy link to clipboard
Copied
Thank !
Great methode 🤓 🖖
Copy link to clipboard
Copied
love you
Copy link to clipboard
Copied
https://www.youtube.com/watch?v=AbY7V6bJITA
This video best explains it around 2:30-3:00 in. Hope this helps 🙂
Copy link to clipboard
Copied
The key is to use a bit of math to figure out what to set the Wave Speed at. Keep your Phase angle at 0 and don't use any keyframing. Set Wave Height/Width/Direction to whatever you want and change as desired.
Step 1: figure out the duration of time (IN SECONDS) you want to loop seamlessly within. If you want the animation to loop seamlessly within the length of your composition or the length of your work area, figure out how many seconds long your composition or work area is. This could mean converting hours/minutes to seconds which you can do easily with the help of google and/or a calculator. **(if the last two digits in the timecode of the desired duration of the loop aren't 00, jump to the red asterisk section below)**.
Step 2: figure out the wave speed by dividing the number of times you want the animation to loop by the duration of time you want the animation to loop seamlessly within (IN SECONDS). Type that value into the Wave Speed up to four decimal points to get it as accurate as possible so the loop is seamless. For example, if you want the animation to loop twice over the course of 15 seconds, the math would be: 2/15=1.3333 so your Wave Speed should be 1.3333. Fiddle with the number of times you want the animation to loop in this equation in order to adjust the speed of the animation while keeping the loop seamless.
Step 3: Check your work and you should be good to go!
**the last two digits of your timecode are in FRAMES, NOT HUNDREDTHS OF SECONDS so you must convert the frames to seconds. To figure out how many seconds the last two digits of your timecode equates to, divide the value of the last two digits of your timecode by the fps of your composition. Add this to the rest of the desired duration in which you want the loop to occur (in seconds) and continue with Step 2 above.
EXAMPLE:
You want the wave warp animation to loop seamlessly within your work area. The duration of your work area is 00:00:14:24 (AKA 14 seconds and 24 frames), according to your timecode. You want the animation to loop 5 times within that time. You are working in 30fps. The math would be as follows:
Frames to seconds: 24frames/30fps = 0.8 seconds
Total duration of work area in seconds: 14 seconds + 0.8 seconds = 14.8 seconds
Wave Speed: 5loops/14.8seconds = 0.3378
Copy link to clipboard
Copied
Essentially, divide the number of loops you want (x) (must be a whole number for seamless loops!) by the length of time (in seconds) you want the loop to occur in (t) to get your Wave Speed (W) and play with the # of loops you want (x) in order to change the speed of the animation.
W = x/t
Copy link to clipboard
Copied
Found your post after googling the same problem you encountered.
Boggles my mind how complicated all the replies made it seem.
To all who find this, OPs answer is this: One complete, loopable cycle of the Phase parameter is 256 degrees, not 360 or "1" cycle.
So 2 loops = 512, 4 loops = 1024 etc.