Creating a Bonnet Hipped Roof with RailClone in 3ds Max
We recently had a question about how to go about creating a roof with bonnet hips using RailClone, it was an interesting problem that we felt be useful for other users, so we’ve recorded our answer as a short tutorial. This technique can also be completed with the free Lite version of RailClone, so if you’ve not tried it before, this might be the excuse you need.
Because the hip and valley tiles bend around the corners and connect neatly to the rows of both pitches of the roof, it’s not really possible to use our usual technique of creating clipping splines for each roof plane. Instead, you can solve it slightly differently, by treating each row as a separate 1D array that wraps around the perimeter of the roof in an unbroken loop - here’s how to set it up:
- First of all, you’ll need to create a spline for each row of tiles that wraps around the entire roof. There are a number of ways you could do this, but in this scene, the easiest way is to simply select all of the edges that define the hips and valleys, and then use the Edit Poly Object’s Connect tool to create an edge loop for each row.
- With the new edges still selected, click on Create Shape from Selection. Change the Shape Type to Linear, and click OK.
- Now that you have the splines you need, create a tile from a simple box primitive. Set the height of the tile so that it spans two rows. That will allow each course to overlap.
- Clone the tile and set the width to slightly more than the height. We will use this as the hip tile, and because it bends around the corners, you will need to add some vertical edge loops.
- Clone this tile to create a third tile that we can use for the valleys.
- For the hip tile, you may want to add a face below the tile that can be used to add a concrete infill. If you download the scene files for this tutorial you will find example geometry that you can use to follow along.
- Now we have our tile geometry, let’s create the RailClone style itself. Add a new RailClone object and open the Style Editor.
- Add a new L1S Generator and attach a Spline node. In the Spline node’s properties, pick the path from the scene that we created earlier.
- Add a new Segment node and select the tile geometry from the scene. Go to the Deform properties and disable Slice. Wire the Segment to the Default input.
- Use the segment’s Fixed Y Rotation to rotate the tiles to match the angle of the roof. You will notice as the tiles turn that they lift off the roof planes. To fix this, change the Y and ZAlignment to Pivot.
- If you find that some of the rows rotate incorrectly, then it is because the splines are running in different directions. Unfortunately, this often happens when using the Poly Object’s Create Splines tool, but it’s easy to fix. Just select the incorrect sub-splines, right-click and select Reverse. Problem solved!
- Add some Left and Right Padding to add spacing between the tiles.
- Go to the Generator’s properties and change the Default Mode to Adaptive. In this mode, the geometry will be subtly scaled so that only whole tiles fit on each row, with no slicing.
- Clone the existing Segment and use it to pick the hip tile from the scene. Wire it to the Corner input.
- Select the Generator and go to the Corner settings. Increase the Fillet Amount value until the tile deforms smoothly around the corner. For even better deformation, you may also want to increase the Curve Steps property found in the Style Rollout.
- Once the corners are deforming correctly we will need to reshape the tile so that it has that distinctive bonnet hip shape. Select the source geometry and add a Box FFD modifier. Set the number of points to 2x5x2, then use the Control Points to pull up the centre of the front of the tile until it overlaps on the hip correctly. By modelling this and being able to see the results live, you can save a lot of time instead of relying on trial and error.
- This solves the hips, but what about the valleys? We will need to use a different tile for these areas and to do that, we turn to the Conditional Operator.
- Wire a Conditional Operator to the Corner input and wire the Hip segment to the True input.
- Clone the Hip segment and use it to select the Valley geometry from the scene.
- Wire the Valley segment to the False input.
- Now to get it to use the hip on the external corners and the valley on the internal corners you need to enable Vertex > Angle in the Conditional operator and use a value of 180 degrees. Make sure Check Wide Angle is enabled, otherwise it will only check between 0 and 180 degrees, rather than the full 360. Finally, change the Condition drop-down to Less. You now have a different tile for each corner type. All that remains is to reshape the valley.
- Select the valley source geometry and just like we did for the Hip, add a Box FFD modifier. Set the number of points to 2x5x2 then use the control points to pull down the centre of the back of the tile until it overlaps in the valley correctly.
- And we’re done, the only other thing I did in my sample scene was to add UVW XForm modifiers to randomly offset the bitmaps on the U and V axes and a little transform randomisation to add more variety.
This is a nice example of a tutorial that was made from a users request. Remember if you’ve got a question you’d like to see explained in a short tutorial, just let us know on the forum or the comments below this video. Thanks, and stay tuned for more coming soon!