1

I'm trying to make a functioning escalator. I've got an array of stairs with a curve modifier and a bezier circle for the path. When a stair is on the parts of the curve that bend, the stairs rotate and deform with the bend. How can I stop this? Thanx. enter image description here

1 Answers1

3

This answer will describe the creation of a single "tile" of the escalator.

Add a bone with a follow path constraint with Follow Curve checked. I also checked Fixed Position and animated the offset value.

Add a smaller bone (OrientationBone) beneath it and parent it to the original bone. When the bone is ascending the OrientationBone will be beneath it, and when it is ascending it will be above it.

bone setup

Because bone > bone driver relation create a cyclic dependency error in 2.79, I added an empty.

I used a copy location and a copy rotation constraint from the bone to the empty.

Next, add a limit rotation constraint to the empty with all values at 0 and all axes checked. Add a driver to that constraints influence. Use the Y Location of the Bone as a driver variable. Whenever the Y Location is between 0 and 6 (orange in the gif below) in my case, the bone is ascending and the driver should return the value 1 to enable the limit rotation constraint and stop the empty from rotation during the ascent. I achieved this with constant keyframes of the driver.

enter image description here

I added another driver for the descend, which will first check if the bone is descending with the help of the orientation bone. If the Y Location of the OrientationBone is smaller than the Y Location of the Bone, the bone is descending, otherwise the driver should return 0.

enter image description here

Leander
  • 26,725
  • 2
  • 44
  • 105
  • Very interesting. I kind of figured I'd have to use a completely different method. I really appreciate your taking the time to help. – Eric Freeman Jan 04 '19 at 04:14