Continued from 3d Singh’s Rope Tutorial, Verlet

011-rope-solver-tutorial-eevee.png

Intro

The high-level idea: our previous solver iterates on the constraints 10+ times for one Δt (change in time). That Δt is the frame time of the animation, eg 1/24 sec. We’ll change it today so that Δt can be divided into sub-frame times, and change for each iteration of the solver.

XPBD math and visual demo.

image.png

In nodes, the main change: Simulation group Delta Time gets divided by 10, so the gravity and constraints can run that many times per frame in the Repeat group.

011-rope-solver-tutorial-xbpd.mp4

The result looks jerkier than yesterday.

image.png

I wonder if re-adding the repeat around the constraints would help.

011-rope-solver-tutorial-xbpd-2.mp4

With 10 sub-frame iterations for gravity × 2 repeats for the constraints.

011-rope-solver-tutorial-xbpd-5.mp4

Ditto × 5 repeats for the constraints. Interesting that a more knot-like ordering is maintained, which looks like it makes it unstable, so it bounces longer.

image.png

Made them tubes instead of beads.

image.png

Trying a nice Cycles render for fun… it is taking 18+ seconds per frame. (2020 M1 MacBook Pro)

011-rope-solver-tutorial-workbench.mp4

Compare Workbench

011-rope-solver-tutorial-cycles.mp4

vs Cycles.

011-rope-solver-tutorial-eevee.mp4

Oh, Eevee is fast. 1.5s per frame.