In shader nodes or displacement modifier based displacement you can get a seamless loop of noise displacement by using an Empty that is rotating around an around to control the location of the noise texture.
How is the same accomplished when using a noise texture in geometry nodes?
I am not sure what you mean by “seamless loop”, my first answer was similar to RPaladin’s one. I deleted it because I thought it was just going round and round, there is no “seamless looping”.
If you use a vector math node with the add function, it will give the same result as the location value of a mapping node.
This setup will give you a noise pattern that turns around and spreads out then in again in a looping fashion:
To know exactly what you are after you should give an example of how you set it up with material nodes.
Make a simple blend with the material on a plane and the empty and post it here to show us the effect you want. (remember to compress the file.)
With a Speed input of 1, I need 360 frames for a perfect loop.
With a Speed input of 0.5, I need 720 frames for a perfect loop…
With a Speed input of 0.75, I need 481 frames for a perfect loop.
I could not figure out the math needed to deduce 481. I had to just keep trying every frame until I got a perfect loop. What would have been the mathematical approach to discovering 481?
Your number is 360 X 1/speed, right? That gives you 1.333 * 360 = 480, in real numbers, but in floating point numbers (which are not so precise), you must have run into a precision error
What should a moron like me google to be able to do such magic?
I had the dumb idea that if I could construct something interactive where as I made one value bigger (speed) another value would get smaller (frames) and represent them as the heights of 2 boxes then somehow I would gain some kind of intuitive understanding miraculously. I got all my boxes drawn and mouseMove listeners hooked up and then… can’t do a damn thing without actually understanding the math in the first place to make the boxes resize properly,
First let me say, you’re an incredible artist and I aspire to your abilities
That’s a tough question… I’ve memorized a few basic tricks that can usually get me on the right track. For example, if one number is decreasing and one is increasing, I know there’s most likely either an 1 -n or a 1/n somewhere in there. These are the two basic inverters.
Say we have A going 1,2,3, and we want B to go 100, 50, 33. What’s the relationship between A and B? I know it’s probably some variation of 1-n or 1/n. Let’s try 1 / n:
On the left, I put A:
1
2
3
Then add a column of 1/A:
1 1
1 .5
3 .333
Now we multiply that by… something to get the B values. 1 - 100 makes me think the value might be 100. Let’s add a column of 1/A * 100:
1 1 100
1 .5 50
3 .333 33
Here’s some other good tricks. If the relationship of increasing by orders of magnitude- 1,2,3 - 1,10,100, I can assume A is being used as an exponent. If that’s inverted- 1,2,3 - 100,10,1 - I assume the exponent is 1/A. There’s some other things like that I can’t think of off the top of my head, but I like to simplify relationships into “it’s inverted” or “orders of magnitude” something simple that gets me close enough, then I can refine from there
You are not dumb, there are factors that complicate all this. My math is not very good either! It has taken me a while of trial and error to find out what is going on. The fact that you are even trying to work this all out means that you are a “thinker”.
Unfortunately not true. Set your timeline to end at 360 and flick from the first frame to the last, you will see that the loop is not seamless at 360Âş.
Why?
Blender internally thinks in radians not degrees, although the input box of the angle in the vector rotate node is in degrees the “plug in” input is in radians! So for the loop to be seamless at 360 you have to convert the output of the multiply node to radians.
The second thing is that the pattern will be the same at frame 1 and frame 361. Frame 360 is the frame immediately before frame 1. If you want to loop an animation with 360 frames you do not have to worry about that just render from frame 1 to 360 and the animation will loop.
One way to invert the numbers is with the map range node, for an animation of 360 frames map 0-360 to 360-0.
Edit:
Changing the speed:
If you divide the speed by ten (speed value 0.1) you will have to multiply the number of frames by ten to make the animation seamless.
I left my example file with 361 frames so that you can see the first frame and the last are equal patterns. If you set the speed to 0.1 you will need 3601 frames to get the first and last frame equal. (360*10+1).
Again for a seamless animation simply render from frame 0 to 3600.