Tips and Tricks for Architectural Rendering in Blender


No N-gons, what now?

One limitation that comes up in rendering architecture is: Blender lacks N-gons, ie: polygons with more than three or four sides. While quads are great for many types of modelling - allowing clean subdivisions, loop modelling, etc. -, large, complex flat surfaces are easier to handle as one single polygon instead of dozens of small triangles/quadrilaterals. For example, see the wall on the first image. The outline looks harmless enough, its the facade of a Venetian building, with place for one door and several windows. This could be solved with one concave (ie: has holes in it), or several convex N-gons, but in Blender we need the following, very ugly setup of 113 faces (Figure1 and 2). Not only ugly, but it is now hard to continue any sort of modelling on it, like subdivision, adding more detail, beveling some corners. Solution?

F-gons are fake N-gons. Basically, you select the faces you want, hit F and select Make F-Gon. From now Blender will represent it as one face in face select mode. It is now easier to select the whole wall. However, this is just a cosmetic change, the above mentioned modelling problems continue to exist. Therefore the one really good use for it is at the very end of the modelling process.

1. F-gons

F-gons are fake N-gons. Basically, you select the faces you want, hit F and select Make F-Gon. From now Blender will represent it as one face in face select mode. It is now easier to select the whole wall. However, this is just a cosmetic change, the above mentioned modelling problems continue to exist. Therefore the one really good use for it is at the very end of the modelling process.

2. Go modular!

If you're like me, and prefer "vertex-pushing" as the only true modelling technique, you can try a modular modelling approach. Basically, divide the building into sections, both in height and width, along strategic lines. IE: if the windows are spaced one every two meters, then one section would be two meters wide, and would contain one window. The height of the sections can be one floor (or smaller if there is more detail). See Figure 3. Notice not only that the model is cleaner, but each and every window can be seperated and taken out, and another one put into place, without disturbing the rest of the mesh.

Quick tip: modelling one section: Add a plane, and move the corners to the proper positions (always, ALWAYS use snap to grid, or type exact numbers by hand). In the same mesh, add the outlines of the holes, inside the plane. Select all, and hit Shift-F, Fill. This creates the necessary triangles. Now hit Alt-F: Beaty Fill, which will rearrange the triangles to minimize extremely long polygons. Note: you might need to hit Alt-F this several times one after another for the optimum result. As a final step, convert as many triangles to quads as possible with Select faces => Alt-J. Repeat for all sections.

This type of modularity is especially useful for large buildings, you can pre-model several window, door types, and then simply duplicate them (Shift-D) and move them around. The exact sizes and the Snap to Grid option ensure they will match up at the edges. When done with the mesh, remove the duplicates (in the W-key menu). And remember to extrude the wall to the proper width!

Many other types of models can benefit from modular modelling, which is basically: interchangeable mesh parts, all with given outside dimensions so they can be easily joined or seperated.

3. Use curves.

Curves are also a modeller's best friend. For the wall seen above, the contours can also be modelled with Bezier curves. Just add a Bezier circle, set the sides straight (V key), and then move the vertices around to the proper places. Add new curves inside the same object for the holes you need. You will see that Blender automatically fills in the shape, and knows which part is solid, and where the holes are. In the Edit buttons, Curve and Surface panel, the DefResolU button determines how many straight segments will make up one curve segment. The higher the number, the more smooth the curve will look when rendered. This is one advantage of using curves: the resolution can be changed, in a mesh model, you are stuck with what you first modelled.

Note: Bezier curves are 3rd (some programs also use 5th or 7th) order functions. This means that no matter how many control points you have or how well their handles are placed, a Bezier curve will never be a perfect circle. You'll probably not notice it on a rendering, for archi-viz Bezier is just fine. But if eal precision is required, then use NURBS curves, or a mesh with many vertices.

Don't forget to set a width for the wall. The Extrude button sets the width of the extrusion IN BOTH directions. IE: a value of 1.0 will extrude the curve by 1 BlenderUnit (BU) both ways, which makes a 20 cm thick wall if your scale is 10 BU = 1 meter, the scale I usually use.

You can also bevel the edges a bit, no wall has a perfect, sharp edge. The Bevel depth button sets the width of the bevel, this is added on top of the extrusion. So to have the same 20 cm wall with 0.5 cm bevels you need Extrude = 0.95 and Bevel depth = 0.05. Set the BevResolution to 2 or 3, that is usually enough.

Bevelled curves: Curves can also be used for other architecturel details, like railings, rails, gutters, fillets, trims, window and door frames, pipes, wires, ropes, and anything else that is long and has a constant cross-section. This needs two curves: one that gives the legth or path of the object (aka directrix, rail curve, path curve, etc.) the other is the cross-section (aka generating curve). The cross-section has to be added to the first curve as a BevOb (bevel object). Figure 6 shows some of the objects that were modelled with bevelled curves in this Venetian scene. The curve at the lower left is in edit mode, you can see it is a simple square. Its complex cross section is the Bezier curve object called Trim1.

Note1: watch the DefResolution of all the curves you use in the scene. The more complex trims in this picture have as many as 20 Bezier curve segments, which multiplied with the default resolution value of 6 is too high, and can boost your render times through the roof. It will not make a difference in quality if you reduce this number to 3 for smaller objects. On the other hand, the path curves might need a higher value if it has large smooth curves in it.

Note2: when the model is done, it can be converted to a mesh (Alt-C) for further detail work, like bevels, some random noise, etc. Remember this is a one way conversion! Also: this might also be needed for other outside renderers if the curve objects aren't exported well with the export script(s).


Program tip: ACME Online

This is a very useful little program. It can be used for one thing only, but at that, it is the best: making brick textures. Instead of the usual "perfect" brick textures, which will scream CG!!! at you from an architectural rendering, this program can make large, non-repeating brick wall textures, with the bricks having slightly different shapes, the mortar oozing out from them and a bit uneven, ie: realistic.

You can choose from about one hundred brick types, all with different colours and surface textures, plus many mortar colours. Coursing types (how the bricks are stacked): stack, running or third. When you have selected everything, it will render the texture for you. The size can be defined by the user, some very high-res textures I use are 60 bricks wide by 20 high (resolution of 15488 * 1680 pixels). This will cover large walls without the viewer seeing any repetition in the texture, since the program places slightly different bricks - of the given type - randomly.

This is not all though, as you can replace a whole row or just one brick with another type of brick. This allows you to "draw" or "paint" complex bricks setups, inlcuding decorative tiles, adding cornerstones and header stones, etc.

The program is free to use. When you want to build a wall with a brick type you haven't used before, it needs to download new data files, so it requires an internet connection. To download, go to, and click on Acme Masonry Design Tool on the right hand side.

Quick Texturing a Large Number of Objects

The scenario is the following: you have a large number of wooden planks (concrete coloumns, etc.), which you want to texture quickly. You don't want the texture to repeat on the planks. A Python script bundled with Blender will come in very handy: "Archimap UV Projection Unwrapper". First we will need ONE texture. Try to go as high res as possible. Note that the texture should contain only wood material, if it is of more than one plank, it shouldn't have gaps between the planks, as that would create unnecessary problems using this script. Here I use a closeup of one wooden beam. This will actually be used for many planks. How? Notice that the texture has many fine, detailed lines, these will be enough for at least ten different planks.

Getting the model ready. Model the planks, and make sure they are one mesh object. If not, select them all, and Alt-J join them. Press F or use the menu to change to UV Face Select mode. Select about ten planks. In another window, open the UV/Image editor. In the Image menu, load the texture. In the UVs menu select Archimap UV Projection Unwrapper.

The following window pops up:

The deafult settings are mostly good. One of the settings that concerns us here is the Projection Angle Limit. This specifies the angle above which two neighbouring faces will be broken up into seperate pieces on the UV map. If the planks are simple 6 sided rectangular prisms (ie stretched cubes), then the default 66 degrees is enough to break up the 90 degree angles between faces. Lets say however that you have a single bevel on the model. (This is generally good modelling practice.) Here the faces are at 45 degree angles to each other. Using the default setting will produce some weird, unwanted shapes (Figure 10, yellow arrows). This is bad for several reasons, for example these thin faces will not be parallel to the wood grain, but some will run across them. But the real problem is that these shapes will lead to a non-ideal placement on the UV texture map. Instead set the angle limit to less than 45 degrees, lets say 30. See the new placement on Figure 11, the left hand side.

The new placement is better, the faces are all parallel to the wood grain, and the UV "islands" are closely placed. However the top half of the image isn't used. Selecting a bit less planks, in my case 9 instead of 10, will lead to a better placement that uses the whole image - meaning that the faces are assigned a larger part of the image, ie: better quality. You might need a few tries to get the best placement. Quick tip: to select one plank in UV Face Select mode quickly, hover over it and press L. Shift-L will add to the selection.

NOTE: all of this could also be done by hand, eg. the UV map on the left of Image 11 could be manually stretched to cover the whole image. The reason for all this experimentation on the number of planks to texture is to automate the process with the above mentioned script. If you have a lot of objects, this type of quick texturing can be done in a few seconds, and will spare you potentially hours of manual UV map creation.

And here we are! A number of planks textured with random wood textures in - with some practice - less than a minute!