Transformable staircase modelling

Hello, Blenderbrains, have I got another lame question for you.

I’m trying to model a transformable staircase so that I could alter its height and angle quickly when necessary.

Some guesswork tells me it has to do with a correct use of ‘array’ modifier and ‘path’ curve. But that’s where I start being stupid, 'cause I also need all of the stairs to be pointing downward (-Z), which I repeatedly fail to achieve.

What is the correct approach to a problem?

Why do you need to use a path at all? What are you trying to achieve, beyond making the staircase’s angle and height adjustable? Are you also trying to get it to follow a curve? If so, you need to state that more clearly.

Normally, you can just use a single array without any path to do what you describe. The height and width of the object you’re using as a step will normally determine the final slope and length of the entire staircase. You can adjust further by using offsets on whatever axes you want to change the spacing of steps (i.e. to leave a gap between them).

Yep, I need quickly adjustable height/stairs count and angle for a staircase. And I’d also have railings’ angle adjustable as well with as little controls as possible.

As of array, yes, there’s only a need to set an Empty object for offset and move it when and where necessary. Doesn’t help much with railings, though.

Try Archipack addon and create stairs.

Array modifier+ curve modifier will make the stairs go along the path of the curve.

Stairs are pretty simple to throw together, so unless this is for some sort of module kit or addon, I don’t see the point of going to so much trouble. If it IS for a kit or addon, then you should think about using python to do it.

Well, It’s funny to go back to this topic 1,5 year later, but I guess I’ve figured how to do the thing, after all. Indeed you don’t actually need the path, any 2D curve would work, you just have to figure out the shape of the given flight of staircase. And it’s vertical property (steepness) can be governed by an Empty used for Object Offset in Array Modifier. Not exactly what I needed but at least it’s a working approach.

So the workflow is following:

  1. Add/model a staircase object (a single stair).
  2. Add a curve/Bezier circle, or whatever. Make sure it’s 2D.
  3. Make sure pivots/centers of a single stair and a curve occupy the same location.
  4. Make sure you have applied the scale and rotation for both.
  5. Add Empty to the same position where two other objects have their centers; apply scale and rotation too.
  6. Set modifiers for the staircase object: Array first, Relative offset X1.000 or less, if you need some overlapping; Y:0.000, Z:0,000. The goes Curve, using - yes, your added curve - for deformations. Deformation axis is X.
  7. Check the Object offset option and use Empty as an offsetting object.
  8. There ya go: if all those ‘rotation and scale’ applied okay, you have staircases running along the curve, while their relative offset against each other by Z axis is governed by moving Empty vertically.
  9. Moving Empty along X axis increases the distance between stairs.
  10. Moving Empty along Y axis adds some tapering which can be very useful.

I guess Empty can be parented to another curve as well, but it’s a different story.