I implemented the step 2, based on Blender sources:
https://playground.babylonjs.com/#YF8D42#1
I added the same two sliders than in Blender:
I did not implement the part which check that we don’t cross object boundaries (left as an exercice for the reader ;)), but it still does work well:
[EDIT] Fixed the PG [/EDIT]