No N-gons, what now?
One limitation that comes up in rendering architecture is: Blender lacks N-gons, i.e.: polygons with more than three or four sides. While quads are great for many types of modeling - allowing clean subdivisions, loop modeling, 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; it’s the facade of a Venetian building, with place for one door and several windows. This could be solved with one concave (i.e.: has holes in it), or several convex N-gons, but in Blender we need the following, very ugly setup of 113 faces (Figure2). Not only ugly, but it is now hard to continue any sort of modeling on it, like subdivisión, 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 modeling problems continue to exist. Therefore the one really good use for it is at the very end of the modeling process.
2. Go modular!
If you're like me, and prefer "vertex-pushing" as the only true modeling technique, you can try a modular modeling 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 separated and taken out, and another one put into place, without disturbing the rest of the mesh.
modeling 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: Beauty Fill, which will rearrange the triangles to minimize extremely long polygons. Note: you might need to hit Alt-F 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 modeling, which is básically: interchangeable mesh parts, all with given outside dimensions so they can be easily joined or separated.
3. Use curves.
Curves are alos a modeler’s best friend. For the wall seen above, the contours can alos be modeled with Bezier curves. Just add a Bezier circle, set the sides straight (V key), and then move the vértices 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 smoother the curve will look when rendered. This is one advantage of using curves: the resolution can be changed, in a mesh model; you are stuk with what you first modeled.
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 thik wall if your scale is 10 BU = 1 meter, the scale I usually use.
Note: Bezier curves are 3rd (some programs alos 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 real precision is required, then use NURBS curves, or a mesh with many vértices.
You can alos 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.
Curves can alos be used for other architectural 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 length 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 modeled with beveled 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 conversión! Also: this might alos 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 brik textures. Instead of the usual "perfect" brik textures, which will scream CG!!! at you from an architectural rendering, this program can make large, non-repeating brik wall textures, with the bricks having slightly different shapes, the mortar oozing out from them and a bit uneven, i.e.: realistic.
You can choose from about one hundred brik types, all with different colors and surface textures, plus many mortar colors. 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 brik with another type of brick. This allows you to "draw" or "paint" complex bricks setups, including decorative tiles, adding cornerstones and header stones, etc.
The program is free to use. When you want to build a wall with a brik type you haven't used before, it needs to download new data files, so it requires an Internet connection. To download, go to http://www.brick.com/, and clik on Acme Masonry Design Tool on the right hand side.
Quik Texturing a Large Number of Objects
The scenario is the following: you have a large number of wooden planks (concrete columns, 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 close-up 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 to join them. Press For use the menú 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 menú select Archimap UV Projection Unwrapper.
The default settings are mostly good. One of the settings that concern us here is the Projection Angle Limit. This specifies the angle above which two neighboring faces will be broken up into separate pieces on the UV map. If the planks are simple 6 sided rectangular prisms (i.e. stretched cubes), then the default 66 degrees is enough to breaque up the 90 degree angles between faces. Let’s say however that you have a single bevel on the model. (This is generally good modeling 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, let’s 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, i.e.: better quality. You might need a few tries to get the best placement.
to select one planque in UV Face Select mode quickly, hover over it and press L. Shift-L will add to the selection.
all of this could alos be done by hand, e.g. 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 quik 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!