Pseudorandom/Periodic Noise Texture


Some abstract animations use noise textures to create displacement or other effects. To create a perfect loop this noise must be periodic in time.

A trick that can be used to create such a periodic noise animation is to use an empty object that follows a circular path to animate the texture coordinates [1]. This is not ideal, as you can see the peaks of the displacement follow a circular path.

Is there a better way to create an animated noise texture that changes smoothly and is periodic in time?


If 2D is enough, you might be able to pull something off using sin(time) and cos(time) as the two remaining coordinates of a 4D noise texture. I’m not sure it’s possible to make it seamless as a 3D cylinder lookup and double time lookup at the same time.

The best result would probably be to reimplement noise with nodes, using only the white noise node, by using the formula (e.g. for Perlin noise).

What also might give acceptable results (see for yourself below) for the case of only needing peridicity in time is doing cubic interpolation between multiple noise textures. It produces some amount of damping for non-integer time values (but way less than linear interpolation, which really looks bad).

Here is the node group for that method. Note that the period value needs to be integer to get continuity in time.

periodic.noise.blend (534.1 KB)