arkavo-org / arkavo-org/VRMMetalKit
SpringBone: applyVelocityCorrection keeps push-out-manufactured outward velocity — joints coast 4-8cm after hard contact
- Dominant language
- Swift
- Stars
- 6
- Forks
- 2
- Avg merge
- 18h 51m
- Merged PRs (30d)
- 26
Description
**Problem**
applyVelocityCorrection() zeroes only inward normal velocity (if vn < 0.0), so the outward Verlet velocity that a collision push-out manufactures survives the next substep. The joint coasts outward for multiple frames.
**Observed drift**
During segment-collision testing (Task 4), hard contact against hand-held objects or cloth folds created 4-8cm fixture drift in waist-length chains — joints drifting visibly away from the contact surface for 0.1–0.2s after push-out.
**Pre-existing, affects every collider**
This is not introduced by fitClothCollisionToMesh — it's a general issue with how Verlet velocity is handled post-collision. Discovered incidentally while testing segment collision; applies to sphere, capsule, and plane colliders today.
**Reference**
Related to #381 cloth-collision fidelity; discovered during validation gate 6.3 (oracle measurement) and gate 6.4 (visual inspection).
Contributor guide
Research direction
Start by locating applyVelocityCorrection() in the SpringBone collision code and trace how Verlet velocity is updated after push-out for sphere, capsule, and plane colliders. Reproduce the segment-collision scenario from Task 4, using validation gates 6.3 and 6.4 as references; done means hard contacts no longer leave joints coasting outward for multiple frames.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- computer-graphics
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100