3
$\begingroup$

For a project I need to model a railing that follows a spiral staircase. I wanted to use a curve for this, but the poles always stand perpendicular to the curve. I want them to stand straight. (I used a random curve for the tests below.)

enter image description here

I had found a promising workaround using "instancing" (see: https://blenderartists.org/t/how-to-use-array-modifer-curve-to-create-landscape-and-fence/1202336). However, this seems to only work for perfectly symmetrical objects like round pillars because it doesn't seem to rotate the objects at all, making them all face the same way. I have to use a base model that requires alignment with the path in the Z-axis. (I realise I'm better off doing the handrail seperately)

enter image description here

Any help will be sincerely appreciated. If anyone knows of any solutions or addons please let me know, because the lack of options in Blender's array modifier is growing more and more frustrating..

$\endgroup$
  • $\begingroup$ if you're not afraid to get into Animation Nodes, they have an option to place objects along a path, you'll have complete control on what else to do with the objects. $\endgroup$ – Frederik Steinmetz Aug 14 at 8:00
  • $\begingroup$ @FrederikSteinmetz you're talking about the addon? $\endgroup$ – TomTr Aug 14 at 8:22
  • $\begingroup$ it was possible in 2.7 with Dupliframe and you could give a Limit Rotation constraint on the Z axis, but I'm not sure it's possible in 2.8 $\endgroup$ – moonboots Aug 14 at 9:36
  • $\begingroup$ blender.stackexchange.com/questions/152476/… $\endgroup$ – no-can-do Aug 14 at 11:21
  • $\begingroup$ @ no-can-do, I'm not sure that's what TomTr wants, he wants the duplications to rotate on the Z axis along the curve, it doesn't seem to be the case with Lemon's solution $\endgroup$ – moonboots Aug 14 at 13:41
3
$\begingroup$

Vanilla Blender can do it perfectly fine! I found a bug which we can abuse to get the wanted effect ;)

The setup is incredible simple as well. Just make your curve with your array and curve modifier like normal. Then it obviously is not looking like what we would want, but then notice what happens if you scale the curve object in object mode.

To get the wanted effect, just scale the curve in object mode along the z axis to 100 or 1000 of its height. Then go into edit mode and reduce the height by scaling with 0.01/0.001 respectively. This is the result:

enter image description here

EDIT:
In my first test Tilt needed to always be 0.0, but further testing showed, you sometimes need sligthly different Tilt values, but I'm not sure why. That will solve your deformation issue though.
If you only use flat bezier handles (scaled to 0 on the z axis) a tilt of 0.0 everywhere is perfectly fine.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I upvoted your reply because it is an interesting hack, but I won't accept it as an answer (yet) since this solution also drastically deforms the higher objects in the array. $\endgroup$ – TomTr Aug 14 at 9:10
  • $\begingroup$ I updated my answer so you should be able to make it work. $\endgroup$ – HenrikD Aug 14 at 10:01
  • $\begingroup$ btw, the best answer might be to ditch Curves completely and go with array, vertex weight edit and displace, but as explicitly stated you want curves, this is as close as it gets. $\endgroup$ – HenrikD Aug 16 at 9:31
0
$\begingroup$

This was done using vanilla Blender (vers 2.77a). (Blend file below)

Hint - save EVERY stage of your work as a separate file until it's done.

Detail -

Add a tower. (vertical cylinder)

Make a spiral curve. This will be the outer edge of the ramp so it's circumference has to be larger than the tower's.

Duplicate the curve and store it in layer 10 (?) for safety.

Add a curve -> circle and scale it to be the same diameter as the spiral.

Add a vertical cylinder (6 sides) and scale it down to the diameter needed for the vertical railing poles. Scale it up high enough to span the tower's height, plus a few feet.

Array the pole around the curve so it also fills it.

Duplicate the spiral curve and bevel it with a curve->rectangle. (A plane without a face and converted to a curve with ALT-C will do the same thing)

You should see square ducting spiraling around the tower with the arrayed poles protruding up through the ducting.

Use the Boolean modifier on the poles, naming the 'ducting' as the object. Experiment with all 3 options to see which cuts the poles so they form a spiraled guard-railing around the tower, albeit as yet, disconnected. ("union" did it for me)

Duplicate the spiral curve again and bevel it with a circle this time. (6 sides) This will make the horizontal cylindrical railing for the top and bottom of the poles. Convert that to mesh and duplicate it, raise or lower the copy to sit at the other end of the poles.

The ramp -

Duplicate the spiral again and convert that to mesh (ALT-C). In Edit mode select all vertices and extrude (E), scale the new vertices inward so they penetrate the tower.

Note - Disable the scaling Z axis with SH-Z so the ramp remains horizontal when scaled inward.

Adjust the ramp's height to match the bottom of the poles and lower railing.

When all is scaled and positioned correctly, the result should be as in the 1st pic above.

It would probably pay to parent all components to the tower, and after, disable their selection in the Outliner, so they don't get inadvertently selected. Move the tower to drag it about as a single model.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.