What Sling Drift Actually Is
Sling drift is that slow, barely-noticeable sliding or stretching of a simulated rope, cable, or cloth-like rig element over time during playback. You bake the animation, go grab coffee, come back, and the end frame doesn't match where the start frame should be. The object has migrated. This happens most commonly in Maya nCloth and nHair setups, and also in Houdini dopeweb sims when boundary conditions aren't locked down properly. It comes down to numerical integration error compounding across frames. Every solver step introduces a tiny positional deviation. When you're dealing with a long chain of cached geometry — say, a 500-frame crane cable swing — those deviations add up. The constraint solver keeps nudging vertices back toward valid positions, but each nudge isn't perfect. Over time the mesh slowly translates laterally from where physics says it should be. That translation is drift. I once spent an entire day troubleshooting a rigid body chain that appeared to slowly rotate on its own axis during a fly-by shot. Turns out the collision margin was set to 0.02 instead of 0.0, and every solver iteration was pushing the proxy geometry outward by a fraction of a unit. Twenty frames in it looked fine. By frame 200 the whole rig had drifted three meters off screen. That one cost me a re-render. I switched to zero-margin collisions and enabled continuous collision detection for that chain. Problem solved.
How to Reduce or Eliminate It
The first thing I check is the solver substeps. Default is usually one. Bumping it to four or eight cuts drift significantly for any sim longer than about 60 frames. It costs CPU time linearly, but it's cheaper than re-simulating the same thing five times because the result looks wrong. Locking anchor points is the second lever. If a sling is attached to a fixed joint at one end, make sure that joint's velocity is actually set to zero in the simulation space. A common mistake is keyframing the joint's transform while the sim still reads the bind-pose velocity, which creates a micro-movement at the anchor that compounds over the full sim. I use a point constrain with weight keyframing rather than baking motion onto the joint itself — it keeps the sim cleanly anchored. Third, increase the constraint iterations on the solver node. Default is often 10. Going to 30 or 50 makes the solution tighter per frame, which directly reduces positional drift. Again, this is CPU time, but on a modern workstation it's a small tradeoff compared to the alternative.
When Sling Drift Is Already in Your Cache
If you've already baked a sim and the drift is baked in, you can't undo it from the solver side. Your options are limited. The most reliable workaround I've found is to isolate the drifted segment — cut the cache at the frame where the error becomes visually noticeable — and re-sim just that section with corrected parameters. The un-drifted portion stays as-is. This saves you from resimming the entire 800-frame shot. For subtle drift that you can't easily cut around, I occasionally export the cache, apply a vertex-level offset corrective in a DVE or blend shape layer, and reimport. It's manual, but it only takes five to ten minutes for a moderate-length sim.Get the Full Details

Things That Make It Worse
Long simulation times are the main culprit. A 50-frame sim will show almost no visible drift. A 600-frame sim without tight parameters will look like it's crawling. High stretch tolerance on nCloth settings also accelerates it — the solver allows more positional error before correcting, which means each correction round leaves more residual movement. Another gotcha: exporting and reimporting cache files between software packages. Alembic (.abc) export/import introduces floating-point rounding at the write stage, and that alone can add measurable drift on top of what the native solver produces. I always keep my sims in their native format until the final export stage.
A Counter-Intuitive Thing Most People Miss
Increasing the grid resolution on the collision proxy doesn't always reduce drift, and sometimes it makes it worse. Higher resolution means more vertices, which means more constraints the solver has to satisfy per frame. If your iteration count stays the same, the solver is spread thinner across more constraints and each one gets less correction energy. The net effect can be increased drift despite the more detailed mesh. I learned this the hard way on a production where I upsized the proxy from low to medium density and the drift doubled instead of halving. Dropping the iterations back up to 50 fixed it, but it's not obvious why. Sometimes you need a long sim with loose constraints and minimal substeps for performance reasons — client review dailies, viewport playback, or real-time engine previews. In those cases drift is expected and you just need to be aware of it. Set a tolerance threshold: if the drift is under two percent of the object's total length across the full sim duration, it won't register on camera for most shots. Anything above that needs correction before final render. There's no silver bullet here. Drift is a fundamental property of iterative constraint solving, not a bug you can turn off. The best approach is to keep sims as short as possible, lock your anchors, run enough substeps, and verify against a known-good state at the end of every bake.