1

I have a plane which I have applied the build modifier. I'm trying to make the build go to 50th keyframe (without a complete build up of the squares), and then reverse, so the modifier doesn't fully complete the plane. I also added another plane, which has it going into reverse, but the build is colliding and cannot see each individual square.

enter image description here

blender breath
  • 3,737
  • 1
  • 10
  • 40

4 Answers4

6

This (slightly unexpected?) keyframing works for me, for an animation to build to 50% and back, over frames 1-100.

In the Build modifier:

  • At frame 1 - Start Frame:1, Length:99, Reversed:True, Randomize:True
  • All fields keyfamed.
  • At frame 49 - Start Frame:1, Length:99, Reversed:False, Randomize:True
  • Reversed only keyframed.
  • At frame 100, All keyframed, as 49.

I suspect this is a hack.

enter image description here

Robin Betts
  • 76,260
  • 8
  • 77
  • 190
  • 2
    Thank you for your reply Robin. But your modifier builds up, and covers up the whole plane. I've uploaded a rough video so I can show more precisely what I'm after. See how the squares build up but don't become a whole square, then they become less again as if they're looping? https://streamable.com/4nnwno – blender breath Jun 28 '21 at 12:03
  • 1
    @blenderbreath just multiply the length, so the animation doesn't reach the end before reversing. You won't get more reputable source than Robin, I'm afraid :). – Markus von Broady Jul 04 '21 at 15:06
  • @MarkusvonBroady 'Reputable' or not, I still can't get my head round achieving exactly what blenderbreath wants, this way :D – Robin Betts Jul 04 '21 at 17:53
6

You can reverse without using the Reversed option simply by increasing the Start Frame property faster than the current frame number. So you may find using a driver solution more intuitive: max(0, frame-50) *2

Explanation of the formula:

  1. frame is a global variable holding the current frame number - you can drive the field: Start Frame to be the same as the current frame number; this means that each frame becomes the first frame of the modifier, effectively making the object invisible throughout whole animation (because the first frame of Build modifier is empty)
  2. * is a multiplication: by multiplying the frame by 2: frame * 2 you can make the driven field to be twice higher than current frame, e.g. on frame 15 the Start Frame will be 30; this is not very useful as the modifier makes the object invisible before the Start Frame.
  3. (frame-50)*2 substraction is used to offset the animation so that on frame 0 the Start Frame is (0-50)*2 = -50*2 = -100, on frame 25 it's (25-50)*2 = -25*2 = -50 and on frame 50 it's (50-50)*2 = 0 * 2 = 0 and on frame 100 it's (100-50)*2 = 50*2 = 100 This finally shows the animation, in reverse, as the Start Frame starts at a value 100 lower than current frame, but increases twice as fast, so after 100 frames surpasses the current frame. Think of it as two runners holding a tape measure: a slower runner begins at the start, a faster runner begins with a handicap and is put 100 m before the start: so the tape is extended by 100 m at first, but as the faster runner comes closer and closer to the slow runner, the tape retracts to 0 length.
  4. max is a function that returns the biggest of passed values. It's typically used to clamp values, to make sure they don't go below a certain limit. Here by using max(0, x) I make sure to get a value of x but no less than 0. This means that Start Frame will never be below 0. Looking at the runners analogy, imagine that the faster runner doesn't hold the tape from the beginning, it waits for him at the line marking 0 m of the racing track. So now as the slower runner starts the race, the tape extends, but only until the faster runner reaches the 0 m mark, grabs the tape and approaches the slower runner, decreasing the tape length.

Hopefully that clears things up.

Markus von Broady
  • 36,563
  • 3
  • 30
  • 99
4

You need to keyframe only the Reversed property to be unchecked at frame 1 and checked at frame 50 with a constant interpolation in the dope sheet.

enter image description here

Ahmed Ali
  • 563
  • 6
  • 21
2

and here is a geometry nodes solution, which is pretty flexible. You could easily change the frames, fill rate, size of grid etc.

Node tree:

enter image description here

enter image description here

Chris
  • 59,454
  • 6
  • 30
  • 84
  • HI Chris, thank you for the node tree set up, I might use it in the future. I'm still on previous Blender version currently, and get an alert when opening up your file, that some nodes are undefined appearing in red. – blender breath Jul 05 '21 at 07:29
  • @blenderbreath: no problem. You are right, i used version 3.0 alpha for that. But you didn't write that there are version restrictions ;) – Chris Jul 05 '21 at 07:31
  • 1
    Nice. I still managed to not learn geonodes by now, so I need to ask: does this work only for this particular case (squares), or does it recreate the Build modifier? – Markus von Broady Jul 05 '21 at 08:14
  • Thank you! Since geonodes works with instances and not with faces - it cannot recreate the build modifier. But of course you could do the same to every mesh/model, it would work, but if you use planes or whatever instance…your model wouldn’t look perfekt so… – Chris Jul 05 '21 at 08:19
  • 2
    Second Markus' 'Nice' :) Just been playing... You can put a Weld modifier below the Geonodes... – Robin Betts Jul 05 '21 at 09:21