Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  ObiSolver.Lateupdate() bad performance
#23
(16-08-2021, 10:22 AM)josemendez Wrote: You could use two ropes, or abuse the fact that self-collisions will ignore pairs of particles that intersect at rest. This prevents particles that overlap (such as when you have high-resolution ropes) from colliding with each other and causing a mess.

The rest position of particles is stored in the restPositions array in the solver. For ropes, these are initialized assuming the rope is completely straight. If for some reason you wanted specific particles in a rope to ignore self-collisions with each other, you could programmatically set their rest positions so that certain particles overlap.

New issue; when extending the rope/lasso length from the beginning the restPositions hack breaks and collision starts happening again.

I tried with the two-rope solution, but stitching together the loop and the rope so that bending constraints remain makes the physics go wonky. 

Tried stitching like this;

   

          (o)--------(o)---------(o)--------(o)---------(o)
           !          !                                  |
(o)-------(o)--------(o)          This is the loop rope  |
           !          !                                  |
          (o)--------(o)---------(o)--------(o)---------(o)


where it's a stitched loop (not an actual loop made in the blueprint edit mode).

Edit: Looks like I need some way of constantly disabling self-collision for a specific particle to fix this.
Reply


Messages In This Thread
RE: ObiSolver.Lateupdate() bad performance - by TheMunk - 16-08-2021, 03:19 PM