BUILD PROCEDURAL TOWERS
Paul Roberts teaches us how to utilise the Railclone Tower macro for our city scenes
Towers are the bread and butter of city renders. From looming skyscrapers to small residential blocks of flats, they’re everywhere. Thankfully for us, many of them follow a similar design principle.
The tripartite pattern – based on the classical column – divides the building’s height into one or more bottom floors (the base), repeated middle floors (the shaft), and one or more top floors (the capital). Within these divisions, the building can be further subdivided into vertical and horizontal mullions, corners and an infill that’s solid, glazed or a combination of both.
Modelling these types of buildings isn’t difficult, but it can be time-consuming. Traditional modelling techniques make it tricky to go back and make adjustments when needed.
In this step-by-step tutorial, we demonstrate an alternative approach that uses a new Tower macro in Railclone to generate entire buildings by automatically distributing just a few easy-to-model components. This way if you want to make changes, all you need to do is amend the parts and the whole building will be updated.
The macro is efficient too. A Segment is instanced each time it’s repeated, so you can add as much detail as you want to your buildings without having to worry about memory overheads.
In addition to the facade, the technique allows you to add a roof, scatter clutter on top of it, create a simple interior, and distribute furniture inside. It can be used for detailed foreground buildings, but it’s ideal if you need to quickly fill in the background of a scene.
01 where to Find the Macro
We’ll start by taking a look at the macro’s interface. Open the scene files that accompany this tutorial, select the existing Railclone object and then open the Style Editor. This version has some additional note groups added to make it easier to identify the inputs. If you’d prefer to start from a blank file, create a new Railclone object and open the Style Editor. From the Macros panel, go to Buildings and drag the Tower macro to the construction view.
02 the Macro interface
The macro looks like a normal Railclone generator, but with many more inputs. If you right-click on the macro and select Macro>edit you’ll see that it was created by combining several L1S and A2S generators into a simplified singlenode interface specifically designed to create buildings. This is the benefit of macros – having to create and understand this graph would be a real headache! Go back to the main view and select the macro, and in the Properties panel you will find parameters to edit the height of the tower, the spacing between mullions and much more.
03 Define a Building’s Footprint
Create a spline to define the building’s footprint. The vertex type is important – a corner or bezier-corner vertex will create a hard bend; any other vertex type will enable you to create a curved facade without adding corner Segments. If you close the spline, the macro will create a complete building with a roof. If the spline is open, it will only create a facade (like a Hollywood film set). This can be useful to fill in the background of a scene or to place buildings behind the camera where they’re needed to appear in reflections.
04 the Main inputs
As mentioned in the introduction, this macro assumes the building is divided into three parts: Ground, Default, and Top. The Ground and Top inputs are only one Segment high each. The Default input repeats Segments vertically depending on the number of stories specified in the properties. Each section has five possible inputs: a Corner which places a Segment on each vertex, a regularly spaced Evenly input for mullions, a Default input for the window or wall, plus Start and End inputs that are used to place a Segment on the first and last vertex when using open splines.
05 Model the Parts
For a building divided into three different parts, the minimum you’ll need to model is a corner, mullion, and window object for each section (nine Segments in total). There are just a few rules that need to be remembered when modelling geometry for this macro. Firstly, the geometry should be modelled and aligned to lay flat on the world’s XY axes; secondly the Y size should be identical for all Segments within
the same section; thirdly the pivot should be aligned to the bottomleft corner on the XY plane; and finally on the Z-axis the pivot defines how the wall is aligned in relation to the spline.
06 import the geometry
When creating styles that require a lot of Segments, importing them one at a time can be a tedious process. Fortunately, geometry can be batch-imported. To do this, create a single Segment node, go to Properties and set Alignment>y and Alignment>z to Pivot to force Railclone to use the pivots set in the previous step. Right-click on the Segment node and select Clone Multiple. An object selector window will open. Pick all of the building’s geometry items and click Clone. Each selected item will be imported to a new Segment with a corresponding name.
07 create the ground Floor
With the geometry imported, it’s a simple case of connecting the Segments to the Generator. Let’s start at the bottom. Wire the ground-corner-1, ground-evenly-1 and ground-default-1 Segments to the inputs of the same name. You’ll now see the ground floor created on the spline. Edit the spacing between the mullions using the Evenly Distance property. By default, the macro uses Adaptive mode to add an additional wall element only when there is space to do so. You can also change this to Count mode and specify exactly how many times a wall Segment is repeated between mullions.
08 repeat the Middle Floors
Wire default-corner-1, defaultevenly-1, and default-facade-1 to the inputs with the same name. The repeating mid-section of the building will now be automatically created, starting above the existing ground floor. To increase or decrease the number of floors, edit the Stories property. Note too, that there are separate Evenly distances for the three sections of the building. If you want all the vertical elements to align, you’ll need to ensure that they use the same values. The separate parameters allow you to dial in different configurations for the top and bottom floor if required.
09 Finish with top Floor
To complete the facade, add the top floor by wiring top-corner-1, top-evenly-1 and top-facade-1
to the inputs of the same name. With this simple step, the facade is complete, and for many purposes that may be enough. You can easily edit the number of floors, change the spacing between mullions, and change the architecture itself simply by editing the source geometry. You can also use path shapes of any size or shape, even curved splines, to quickly experiment with different building designs. Let’s not stop there though, this macro can do a lot more!
10 Keep the rain out
To add a roof you’ll need to model a flat section of geometry. This can be as simple as a plane, or as complex as you need for your render. The macro will automatically tile this object to form a rectangle large enough to cover the entire building. The tiled geometry is then sliced by the spline to remove any excess outside the building area. Because the Segments will be sliced at the perimeter, I wouldn’t recommend trying to include air conditioning, elevator heads or other roof clutter in this geometry. We’ll add that in a later step.
11 wire up the roof
Create a new Segment for the roof and use the default settings. Pick the roof geometry created in the previous step and wire the node to the macro’s Roof Surface input. The roof is now finished and can be toggled on and off as required from the macro’s settings. There’s also a parameter that enables you to offset the roof on the Z-axis that can be useful to help it meet the adjacent facade geometry correctly. If necessary, you can also change the alignment of the roof by rotating the whole Railclone object and then re-selecting the spline.
12 ADD a cornice or railing
The macro also allows you to add a cornice or other decorative elements to the top of the building. To add a cornice, create a repeatable length of geometry, remembering to set the Z-axis position, and use it in a new Segment node wired to the Cornice Default input. If, however, you would like to create something more sophisticated (like a railing), you can use the Cornice Evenly, Cornice Start and Cornice End inputs. In the Properties panel you’ll find separate Evenly Distance and Z Position Adjustment properties for the Cornice.
13 ADD roof clutter
On the roofs of tall buildings you’ll often find air conditioning, communications towers, satellite dishes and all manner of other clutter. To add this to our building, import each model as a new Segment, making sure that you disable the Deform>slice option. Wire these to a new Randomise operator and wire the operator to the Roof Furniture input. Your roof will now contain a lot of clutter, too much in fact. To reduce the amount, wire an empty Segment with a Fixed Size to the Randomise operator to add gaps, and then adjust the Probability values until you get a more balanced mix of items.
14 Model interiors
To model geometry to create the interior, you should create a U-shaped mesh that is exactly the same height as the facade section it is intended to sit behind. For our tripartite tower you will need at least three – one for the ground floor, one for the mid floors, and one for the top. You can even create additional variations with extra details like doors, picture frames, fire extinguishers or more on the back wall. Make sure that the Pivot is aligned correctly on the Z-axis so that the facade and the interior jigsaw neatly together.
15 wire and randomise interiors
Create a new Segment for each interior and set their Alignment>y and Alignment>z properties to pivot, to ensure that they align with the facade correctly. Wire the Segments to the relevant inputs in the macro. If you have created multiple interior models you can create some variety by wiring them to the macro via a Randomise node. Don’t forget to adjust the probabilities to get a convincing distribution. For example, you might want more blank sections of wall than doors.
16 Furnish the tower
We now have an interior, but it doesn’t look like anyone has moved in yet. To help these rooms look populated you can add furniture to the interior. You can use any furniture models but try to keep the polygon count minimal and don’t forget to adjust the pivots. Create a new Segment for each model, set the Y and Z alignment to Pivot and wire them to the macro’s furniture inputs. There’s a separate input for each section of the building, so you can use different furniture at the street level, in the main tower, and in the penthouse!
17 create Facade Variations
Instead of using the same geometry for every piece of the facade, you can add visual interest by randomising the Segments. Just create several different variations that are the same size and wire them to the Facade inputs via a Randomise node. You could, for example, add different window configurations, and a Juliet or inset balcony. Do the same for the ground floor, adding facade elements like shop signs and other details in addition to different window layouts.
18 Model Props to ADD More randomness
On top of the existing facade variations, you can make the building look even more lived-in by adding and randomising props. In this example, we’ll create curtains and blinds for the windows. These should be created in several variations ranging from fully open to fully closed. When modelling these, make sure that you align the pivot with the existing facade components so that all the objects will be located correctly. You can do the same thing for the ground floor and top floor if necessary.
19 combine, compose and randomise operators
To add the blinds and curtains to the building we use the Compose operator. Wire this between the existing facade elements and the macro. Set the Compose operator’s mode to Grouped. In this mode, the pivot of the first Segment attached is used for alignment, and then all subsequent Segment pivots are aligned to the same position. Add all the blinds as Segments, wire them to a Random operator, and then wire the Random operator to the Compose operator’s second input. You can attach as many Segments to the Compose operator as you need.
20 create Patterns on the X-axis
So far so good, but not many architects would design such a chaotic facade! You’re more likely to see the different window configurations organised into a pattern. Use Sequence operators to create this effect. Just replace the existing random node wired to the macro’s Default input with a Sequence operator and wire the Segments in the order you’d like them to appear along the spline. If you want a Segment to appear more than once, just increase the Counter value found in the Sequence operator’s properties. Once the pattern is finished, it loops back to the beginning and starts again.
21 Make Patterns on the y-axis
By default, the Sequence operator creates a pattern along the array’s X-axis, but it’s also possible to create a pattern on the Y-axis. To do this, change the Sequence operator’s Increment At property to Y. By using multiple Sequence operators wired in series, it is possible to create patterns on both axes at the same time. In the render, we used this technique to create two floors of offices before the facade switches to residential floors with a pattern repeating on both axes, but you should experiment to see how many interesting designs you can generate.
22 limit By Material id
When you create a large area containing multiple buildings, you might draw the city grid in a single spline or more likely, import the paths from another source. The macro allows you to choose which sub-splines should generate a building using Material IDS. To try it, enable the Limit by ID option and specify the IDS. There are options to create the building if the material ID is equal to, less than, greater than, and not equal to this value.
23 toggle elements on or OFF
The macro enables you to use the same design for the foreground and background of the scene by including the option to selectively remove elements of the building. For example, in the foreground you might want to use the full capabilities of the macro, but in the background the furniture and interiors can be disabled. Conversely, you can use the same controls to temporarily display only the interior, which can be really useful if you want to use Forest Pack to scatter items inside the building or you want an uncluttered view for placing lights and other objects.
24 create Variations
That wraps up the features of this macro. It’s an advanced node, but by the end of this tutorial, you should have a sufficient understanding to be able to create several common tower styles simply by adding your own geometry. You will also be able to randomise and sequence architectural elements, add props and even furniture using Railclone’s built-in operators. The accompanying render shows three types of building created using this technique, but many, many more are possible. Experiment, and have fun! •
author Paul roberts Paul is an environment artist, with over 15 years’ 3D teaching experience. He’s currently sharing his love of parametric workflows as training manager for itoo Software. www.itoosoft.com