I've got a plane which is displaced by a voronoi texture like this.enter image description here

And know I want to give each vertex a looping animation where the vertex slides up and down on his Z-axis (looping). I want each vertex to have a random animation offset. What's my approach? Python scripting?

Thanks in advance!


There are multiple ways to do it, the simplest I can come up is to set an empty as object in the displace modifier, animate the empty and make the first and last frame the same, then make "cyclic" extrapolation of the animation If you need add randomness, you can consider the noise f-curve modifier

First example with 3 keyframes and the noise modifier

The second example use Make Cyclic f-modifier and only two keyframe

Not sure why in the second example the loop works only twice if someone knows please advice, either it's a bug or it's a matter of mapping (I'm to tired now to debug) example cyclic noise using keyframe

  • $\begingroup$ discard the double frame in the animated gif it is cyclic! $\endgroup$ – diramazioni Mar 16 '16 at 0:26
  • $\begingroup$ If you wish to add more of a random effect, animate your empty in a circular motion, and rotate/scale it about it own axis during that loop to add more variation. The only thing lacking in this example is that it looks like a fast-forward/rewind loop where the circular animation would solve the rewind effect. just make sure that it starts and stops in the same Location/Rotation/Scale and Cyclic works very well. I will post a supporting answer w/ a supporting Blend. $\endgroup$ – Rick Riggs Mar 16 '16 at 1:17
  • $\begingroup$ I'm using a voronoi texture instead of a noise texture but when I animate my empty the interpolation of the vertices is very jagged and not smooth like yours. $\endgroup$ – MishaHahaha Mar 16 '16 at 21:44
  • $\begingroup$ note that I've use a subdivision surface after the displacement. Play also with the strength and ramp color values $\endgroup$ – diramazioni Mar 17 '16 at 15:32

Please don't mark this as the answer - If this helped you, please give diramazioni the credit, and please see my comment as to what is going on here as a response to his post.

This is just to support his initial concept.

enter image description here

  • $\begingroup$ @RickRIggs instead of creating a new answer consider editing existing ones. It's OK to edit if you feel you can enhance someone else's post. $\endgroup$ – user1853 Mar 16 '16 at 18:24

The way I would do it is apply the displace modifier, then hook each vertex to an empty and use a Noise f-curve modifier to displace each empty by a random amount. With a lot of vertices that would take a lot of setting up so maybe someone has a more automatic approach as a solution.

enter image description here

  • $\begingroup$ that's what the object option it's for in the displace modifier, no need to use a hook for each vertex, one empty will do the trick $\endgroup$ – diramazioni Mar 16 '16 at 0:00
  • 1
    $\begingroup$ I think OP wants each vertex to have its own random movement. How would that work with your method? $\endgroup$ – Xtremity Mar 16 '16 at 0:02
  • $\begingroup$ see the example provided below $\endgroup$ – diramazioni Mar 16 '16 at 0:26

The best way is to use Animation Nodes. You have to copy that mesh to a new object, and iterate trought the different vertex adding the result of a vector wiggle, with a different seed according to the index of each vertex.

  • $\begingroup$ Can you provide a working example? $\endgroup$ – hellocatfood May 17 '19 at 17:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.