In this tutorial you will (hopefully) learn how to utilize Tom Hudson's awesome Greeble plugin to support you in the process of creating a large-scale city model. If you haven't done so already, go download it now. Greeble is a mesh modifier, so after installation you will find it in your modifier rollout.

In three parts we will discuss the modelling, texturing, lighting and overall scene setup to create something like the Metropolis model I did a few years ago. You can see it in action as part of the "Jetride" demo animation for BoomerLabs' Foley Studio MAX, or by downloading it from here.

 

The first step will be to create a plane with -say- 25 subdivisions in either axis.
Note that the model we are going to build here is just a small cut-out of a typical downtown area. You will need some more unique tiles of this kind to make up a credible megacity environment. So if you want to handle larger chunks of your cityscape at a time, you might want to go for a higher subdivision level right from the beginning. The higher the amount of subdivisions, the more building blocks and streets you will get per plane.

When preparing the mesh for blanking the street pattern, use EditMesh to select every 3rd or 4th row, at first only horizontal.

If you wish, you can also select two contigous rows at once to make up one wide avenue, as shown in the example.

Unselected areas form the lots for our building blocks.

Since streets usually aren't as broad as the blocks they enclose, we need to narrow them a little. Do a non-uniform scale in y-direction down to approx. 60% of the original width.

You can delete the selected faces afterwards, because we don't need them for our greeble work. The streets themselves will be mapped on a separate plane much later.

Now do the same procedure for the streets in y-direction: select a few rows, not necessarily continous stripes, rather let some of them end when they cross an existing street - narrow them to about 60% in x-direction.

After deleting those faces, too, we end up with something that already resembles a street map, but this strictly right-angled pattern is maybe yet a bit too rigid - even for an american city. ;-)

So just move some vertices and you're already getting much closer to a realistic street maze.
Chamfering faces (like shown in the screenshot) will disable them for growing greeble structures on it. Greeble only accepts triangular and rectangular faces. So abstain from using too many "rounded" street corners.

Before we start with the buildings, it is essential to assign a Multi/Sub-Object material to the object - for several reasons.

These submaterials do not need to be anywhere near photoreal. In fact it is best to have just some well distinguishable colors to ease the viewport work.

It's a great help in general when you are modeling, because as you extrude/bevel/greeble you are often working with quite complex face selections, which you maybe want to quickly access again in a later stage. Assigning unique Material IDs during the modeling process is much easier and reliable than working with named selection sets (which are a pain in the ass, if you want my opinion). When you are working in shaded mode (ideally with "edged faces" turned on). the Multi-Sub-material will provide you with an easy visual feedback on which Material IDs are applied to a surface. Last not least it's also one of the key steps for easily assigning texture coordinates to sub-selection sets (we'll discuss this in part 2 of the tutorial).

Make sure that you assign the Multi/Sub-Object material to the ENTIRE object (not just a face-subselection, because you would then get an M/S-material within another M/S-material).


As you can see, all you then have to do is to select faces and assign your desired ID to them. This ID corresponds to the IDs in the Multi/Sub-Material. In this case we assigned the "Base" material to the current face selection. Other faces already received ID5, which represents the lawns on some empty places, where we are not going to plant greeble structures. You can of course use much more IDs/sub-mats, just as how it fits your needs.
 

 

 

Since greeble-generated buildings are covering the full area of each quad or triangle they are planted on, whe have to get some spaces between the ground faces first. It would just look unrealistic, if a building block would stand wall against wall and had no little alleyways and backyards in between.
To achieve this, add Greeble to a subselection, disable "widgets", set min. and max. height to 0 and just increase the taper value to about 20. This way we receive an outline for every individual face.

 

 

 

If you previously enabled "select tops" for the greeble modifier, the sub-selection of the actual "building foundations" will be passed on to the EditMesh modifier we are working with now.

Additionally to this selection we also need the base faces, which we left out before (those, which did not receive an outline). Assign ID 2 to all of them, since this will be the material for the 1st floor that is going to be added next.

 

 

 

Now apply Greeble and as before only use "panels", no "widgets". Depending on your scene scale, the values from this example might or might not work. Just tweak it until it looks reasonable. Do not forget to use material ID 2 also here (Greeble defaults to a different ID).
If you want to edit individual buildings of your finished greeble city as "element" units, it is now the time to "Keep original geometry", as it will allow for detaching them individually from the base object w/o leaving holes later.

 

 

 

Here you can see quite well, how the outline operation from a few minutes ago has helped us to create sidewalks and little alleyways to the backyards that were intentionally left open.

 

 

 
Since "select tops" was active in the preceeding greeble modifier, we can now easily alter all "roofs" of our buildings to use ID 4 (which is the dedicated roof material).
Afterwards you should deselect all smaller faces, because they will look unrealistic when we farther going to extrude them or even add another greeble level. As a rule of thumb you should leave only those faces selected, which are reasonably large and nearly quadratic.
 

 

 
Only faces which are now left over will receive an additional "floor" by extruding them. I thought I'd lower them a bit before doing this, so that the overall size increase would be counterbalanced.
You can ditch this step if you want. It sure isn't essential.
 

 

 
Assign material ID 2 (= 2nd floor material) and extrude the faces. You could also use Greeble instead of an extrusion, but it splits up some of the faces, and that won't make them suitable for the next step.
 

 

 
Now we are adding the actual building tops to our sub-selection by adding our 3rd greeble modifier for today. :-)
This greeble step can have ID 2 or 4 - you decide. We are again only creating "panels", but this time they act as hipped roofs by using some height and an increased taper value. I thought I'd assign Material ID 2 to it, and apply the roof material to the top faces only.
 

 

 
As a last step we can now add some "widgets". Don't ask me, why I didn't do this in the previous step already... guess I'm getting old. But then again: having a separate modifier in the stack for each step makes it all easier to reproduce. ;-)
This layer is supposed to add chimneys, air conditioning units, maybe antennas or whatever type of clutter you find on roofs of urban buildings. In order to save some polygon budget I was only using the simple box type widget.

That's nearly all there is about the modeling part of our ground level.

As mentioned at the beginning, you will have to repeat this procedure for generating at least a few unique "street maps", so that you end up with enough tiles for making up a much larger "downtown area".

Lazy as I am, I just cloned the existing city quarter several times to have a preliminary surrounding.

Of course you can also quickly alter the face of these "city quarters" by mirroring or rotating them, deleting certain building blocks and place some of the individual skyscraper models there.


© Johannes Schlörb 2002 | Questions or complaints? (Please understand that there won't be a second or third part of this tutorial! Sorry!)