2.27.2012

MODELLING ARCHITECTURE WITH PRECISION IN BLENDER

This tutorial is a sequel to another one I wrote earlier, called Introduction to architecture modelling with Blender. I will suppose, in this tutorial, that either you read the first one or you are already comfortable with blender. So we won't talk about the basics anymore, but rather let's begin to see how to use blender in a professional way, and how to do real production work with it. This tutorial is also especially oriented towards architects, but it might be interesting too for other people who are interested in doing architecture modelling.

In this tutorial, we will focus on modelling the right way, with total precision. We won't be creating anything. That's for the next tutorial :). We'll take 2D drawings of a house, and model it precisely so it can be used to generate precise 2D views, plans and sections, so we can snob our Revit-loving friends... And of course we will need to do that VERY quickly (production environment, remember?). And we will be using top-of-the-line snap tools that will make you feel like in your favourite CAD program... or, I hope, better than in your favourite CAD program.

Since we are "in family", I might use a couple of specific terms that you maybe don't know if you are not an architect. I'll do my best to avoid that, but if something is unclear to you, just mail me and I ll try to clarify...
1. PREPARE & IMPORT
So, enough talking, let's begin. First we need an architecture project we'll be modelling. I had a look on the Cad Blocks Exchange Network site, and I found the perfect project for us: a 1-storey, 3-bedroom house, uploaded in the floor plans section by someone called B. Goldman... If you are B Goldman, thanks a lot for putting your project there. It'll be perfect for our training:
The 3-bedroom project
Let's begin by observing the project. The drawing is very simple and clean. Not much text, no dimensions, no fancy symbols, etc... This is perfect. Blender is not a CAD program, it is not made for handling thousands of objects like CAD drawings usually have. So we must make sure our drawings are reasonably light before using them in blender. In the future, if your drawings are more detailed than this one, you might need to remove unnecessary elements before using it, otherwise it'll likely be too heavy to manipulate or simply it won't import.

This project was availible on the net as a DWG file, which I simply converted to DXF. DXF format can be "more or less" described as a "present" from Autodesk to the community, it is a "free" and "open" version of the DWG format, and can "officially" contain everything a DWG file contains. The format is "owned" by Autodesk, which "kindly" maintains freely availible documentation, so anyone can freely implement DXF opening and saving functions in programs. So DXF format is today widely used in the open-source and non-autocad worlds, since you don't need to pay Autodesk (at least until now) to implement it. There are several free tools on the internet to convert files from DWG to DXF, such as the OpenDesign converter or ACME CAD Converter (these programs are windows-only, unfortunately).

You can download the dxf file here.

We will be using the new DXF import script to import our 2D project in blender. We have two entries in the blender import menu: DXF (the old, built-in dxf reader) and Autodesk DXF (.dxf) (the new script). The new one can read many more object types, like blocks, mtexts, etc... and is being worked on actively. It can currently read dxf files up to the autocad 2007 version. A complete description of the importer options can be found on the blender wiki.

Importing CAD drawings is always a bit tricky, for the reasons I mentioned above. So, don't be surprised if the importer fails when trying to import a DXF file. Just remember that sometimes you need to do heavy cleaning work on it, but until today there is no DXF file I didn't manage to importing successfully. On the wiki page I linked just here above, you can find several tips to do that.

So let's fire up blender, and import our file. Note the importer has a config menu where we can adjust a couple of settings. But let's keep the defaults settings for now and just press the "import" button after selecting our DXF file. When it's done, we should have our drawing perfectly translated in blender objects:
the DXF file imported in Blender
The conversion is almost perfect. Only some texts didn't import (they are mtexts, turned off by default in the importer) and ellipses in a couple of sanitary pieces. But we won't model the furniture here, so we won't bother with that.
2. SETTING UP THE 2D DRAWINGS
Now let's make a bit of cleaning. After saving your file, always a good thing to do after a successful import, I suggest you to reorganize your screen layout to have the outliner visible, since we'll be using it quite much. Something like in the image above.

Notice that our outliner window, and therefore our blender scene, is filled with hundreds of objects. In a CAD program you wouldn't mind, but in Blender it will be very uncomfortable. So let's join all this in fewer objects. Let's make 5 objects: 1 for the plan and 4 for each of the elevation views. To do that, just select all the objects you want to join and press CTRL+J. For the join command to be availible, one of the selected objects must be active. Just shift-click any of the selected objects to activate it, if needed.

Maybe the DXF importer already grouped some of your objects, according to the layer they belonged to in the DXF file. If it is the case, the easiest way will be to join everything in the scene into one single object, then split it in 5 parts (P key in EditMode), like this:
1. Select all objects in the scene, SHIFT+click on one of them to make it active. Then, CTRL+J will join all meshes into one.
This is a good moment to remove double vertices (enter edit mode, select all then W key), to do a little cleaning.
2. Then, remove all remaining text objects from the scene (they are not meshes, so they were not joined, so it is easy to remove them now) 3. In EditMode, select all the vertices of an elevation view, then P key -> selected to put them in a separate object. Repeat for all views. You can also delete the titleblock that remained there... 4. That's it. Leave only the plan in our first object. We now have 5 different objects, that we can rename directly in the outliner window, by CTRL+clicking on them.
Okay, now we have a much more usable scene, with 5 objects. It might be a good idea to name them something like "2D plan", "2D elev west", etc... so in the outliner they will be grouped together, it'll be easy to find them.

Next step will be the important one. Have you seen how the elevation views are drawn right next to where they are on the plan? This is a very cleaver way to work in CAD, you just rotate your viewport so you always have your current working drawing horizontal, but with the plan correctly aligned on top of it.
In blender, rotating the viewport is a piece of cake, just use the 4 and 6 keys from the numeric pad. But we can do better. Much better. We'll put the elevation views on foot. Do this for each one of them:
1. In EditMode, select a vertex on the ground line 2. Put the cursor on the selected vertex (SHIFT+S, Cursor -> Selection) 3. Back in ObjectMode, Put the object's center on the cursor (SPACE key, Transform, Center Cursor) 4. Then rotate the whole object 90° (or -90°) around X or Y axis, depending on the view (R key, X key, 90)
Do that 4 times, if needed move the elevations closer to the plan, until you get something like this:
The elevations put on their feet
Isn't it nice? Now we'll be able to snap wherever we want.

Now just a last cosmetic operation: When our model will grow, it will become quickly difficult to distinguish these 2d drawings from the model. It would be nice if they had another color. Well, blender has two object tyes that can gain another color: Linked objects and groups. Linking is easy, you would simply make another blend file, and link the objects from this one into it. But here for simplicity, we'll want to keep all objects in the same file. So the simplest way is to make all our 2D drawings part of a new group, that we can call "2d".

All the group operation buttons are on the Object panel (F7):
the F7 (object) buttons panel
Add all your 2d objects to that same group, then using the preferences window, theme settings, find a nice color for the group objects:
colored groups
3. GETTING USED TO BLENDER'S VERTEX SNAP: THE WALLS
Note that until now all this is by no mean specific to blender. It is just very generic way to do in 3D. You just mount your 2D drawing in a way that it is easy to snap to them. Now I'll show you how snapping works in blender, and you'll see that you can work VERY fast with it...

So, put yourself in plan (top) view, put your cursor back to origin (SHIFT+C) to make sure you'll be building at Z=0 level, and let's create a first plane, that will be the base of our walls:
first slab
Now comes the detail that changes everything. Turn vertex snapping on by pressing SHIFT+TAB (or the magnet button on the header bar), and notice that the "Closest" button in the header lights up (like in the image above). This means snap is active. We have three settings, Closest, Center or Median. We'll stick with Closest, which means: the vertex that is closest to our mouse will be snapped to where we indicate. The other ones mean that the object center point or the selection median point will be snapped to where we indicate. Closest is better for us, since we want absolute precision, one vertex exactly on another one.

Snap works typically like this:
1. Select the vertices you'll want to move. 2. Still in editmode, CTRL+select another object you want to snap to. In our case, the 2D plan. You can select only one "other object" at a time. 3. Position your mouse close to the vertex that will be snapped to somewhere else, and press G to move. 4. Press CTRL and move around: Your vertex can be snapped to any vertex of the 2d plan below.
Got it? So let's move our plane to a first wall corner. So we'll be ready to begin.

Until now it doesn't feel very impressive, right? Well the fun part will be right now. The snap function can actually be constrained. This means that while snapping, you can press X, Y, Z or your middle mouse button, or even SHIFT+X, SHIFT+Y, SHIFT+Z to constrain the snapping. If you press X, this means you'll only be snapping to the X coordinate of the snap point.

This is extremely powerful, you'll understand right now:
1. Select the two superior vertices of our plane 2. Press G (move), then Y (constrain to Y axis). 3. press CTRL, and snap to any point on the upper line of our wall 4. See how easy it is? Let's do it again, something different:
1. press CTRL+R to cut our wall in two. 2. Move our newly created vertices, and snap them (X-constrained, of course) to the left line of that vertical wall 3. Select those two superior vertices 4. Extrude them (E key) and, while extruding, snap them to some point up there.
I think you begin to understand how it works, right? If you have a plan lying on the floor, building a plane model on top of it is extremely quick, much quicker than editing the 2D plan and "filling" the walls with faces. So let's build the rest of our walls. No need to worry about cutting the doors and windows openings now, you have seen how easy it is to cut your walls, so we can just draw all the walls first, and cut the openings later.
the base of the walls are built
That's it, it took me 18 minutes to build the whole plan. As you work you'll notice some intelligent behaviours of the snap tool, like for example when you extrude 2 vertices, you don't always need to constrain them, it will do it automatically if the snap points are close...

Now cutting the doors and windows is a piece of cake, just cut the walls, (CTRL+R) then move the newly created vertices, then delete the face that lies on the opening. Unfortunately the CTRL+R function doesn't support snapping yet, otherwise it would spare us the move operation. Surely this will be fixed soon.

For more complicated windows (in the kitchen for example) you'll need to move some vertices one by one since they are not orthogonally aligned.
the floor plan with windows cut.
Well now a big part of our work is done already. Now let's extrude all this vertically.
Still in EditMode, CTRL+click an elevation to be able to snap to it. Then, select all our walls (A key), extrude, constrain vertically (Z key), and snap to a point of an elevation:
rising walls
Easy, isn't it? Now you'll tell me, how do you know how high you must snap? Well, it doesn't matter much, since anyway, the walls won't have the same heights everywhere (because the roofs are cutting them), so we'll need to adjust that later. So now, I just took an easy point, above the doors and windows, so we can work on them, but below the roofs, because we'll have an extra work above there to cut the walls accordingly.

So now, let's close the door and window openings:
1. CTRL+R, and make the first horizontal cut somewhere. 2. With an elevation CTRL+selected, snap (Z-constrained of course) the new horizontal cut to the baseline of a window 3. Do the same a second time, for the upper line 4. Do the same on the other parts of the walls that need it. When we have our first two cuts, we can now snap directly to them instead of the elevation drawing.
5. Now to close the walls: select all vertices of two faces you'll want to bridge 6. Press DEL, then "only faces". This will delete the faces, but leave the vertices selected. 7. Press F then "Skin Edge Loops". This will create faces between our two vertex loops. 8. That's it!
This of course could be done with other methods. We could have extruded our whole walls, without windows, then cut the openings later. But I found this method quicker, principally because of the automatic "Skin Edge Loops" function.

You may have noticed that the newly created faces have a different shading? This is because the skin function set them to "smooth". This is easy to fix, go back in objectMode and press the "setSolid" button on the F9 panel.

Another thing that usually disturbs newcomers to blender, is that your mesh quickly becomes full of cut lines. Actually, there is nothing wrong with that, it's just the "blender way" of showing everything to you. Other applications usually hide the complexity from the user (which we can easily do too, select adjacent faces, press F and Make F-Gon) , but blender users generally don't want anything to be hidden from them. They want total control over every single thing. We too, don't we?

Just make sure your cut lines always form loops, and try to avoid triangles, and you won't have any big problem...
our house with openings done
That's it, it took me around 5 minutes for each elevation, and more 5 for the interior doors. By luck, the exterior doors have the same height of almost all windows, and also the interior doors. This made our work much faster.

But in case you are working on something different, remember that we have always ways to move vertices by numeric value, using absolute or relative coordinates:
1. Relative coordinates:
Select the vertices you want to move, then simply press an axis key (X, Y or Z) and then the value. For example, lowering those 4 vertices by 10cm would be: Z, then -0.10, then enter.
2. Absolute coordinates:
Pressing the N key shows a coordinates screen. There, you can set absolute coordinates. For example, here, since our 4 vertices are plane, their median Z is the exact Z of each of them. So, changing this value to let's say 1.00 will place them exactly at 1.00m above the ground line, which is at Z 0.00.
Okay. Later on, we will need to extrude the wall more, until they intersect the roof. But it will be easier to do that when we'll have our roof in place. So...
4. BUILDING CONSTRUCTION GEOMETRY: THE ROOF
The roof of this house presents an interesting challenge. There are 3D points we'll need to find, like the points where a small roof part encounters a big one, that are not easy to locate only with the elevation drawings. So we'll need to construct temporary geometry, that will help us to find intersection points.

There are a couple of scripts around that can help you with those tasks, but with a bit of thinking we can easily do that with standard blender tools too. Construction geometry is something simple to do, that not only helps you to put vertices at the right places, but also teaches you a lot about spatial geometry.

One important thing is that you must understand well how the roof is made. This is not easy to figure out, so let's go step by step. First, see that our floorplan has an outline, showing the projection of our roof. So let's draw a line over it:
Now take a good look at the images below. We are going to raise those points to their correct height, taken from the elevations, and subdivide a couple of edges to create rooftop points. What we'll try to achieve is to make a surrounding line of the roof profiles.
Notice that on our elevations, the roof is drawn with 3 lines. This is because there is a roof material, probably roof tiles, and a structure beneath, probably wood. We'll choose to build our roof following the top line, and then extrude below. This is more logical, since what is the most important is the exact roof line, not so much the stuff that supports it. So let's do it:
Here we just raise the points to their correct height.
If you used the same house as me, you must have already seen a problem: A same point has different heights on different elevations. This occurs often, and occured much more when people used to make architecture projects 100% in 2D rather than in 3D. You can see here a major advantage of making architecture in 3D: There cannot be differences between views.
So what are we going to do now? Fortunately, we'll be able to fix the error easily. Right now, it is hard to tell which height is the right one. So pick any height for now, and let's start to build the real roof. When we'll begin to get a good roof shape, it'll be obvious to us which height is the right one. Now look at this:
1. Select an edge where there must be a rooftop line 2. Subdivide it
3. Raise the new vertex to the correct height 4. Do the same for all edges where there is a rooftop line
Probably, while doing this, you'll notice many more points which have different heights on each elevation. But you'll see that as you go on in building your roof, the height those points must have gets more and more obvious. For example, you'll obviously want that all horizontal lines are really horizontal. So keep both points of them at the same height.
Some points are harder to find, for example this one:
You see it doesn't appear on any elevation? So how do you place it? That is the kind of thing blender is very handy for:

Once you have your rooftop point, extrude it (E key) and constrain it in YZ plane (SHIFT X key), then snap it to any point of the horizontal line. this way, you are sure your new point is in the same vertical plane as the rooftop point.

When building roofs, as well as anything that is not drawn (or in our case, not correctly drawn) in the 2D drawings, you wil need to decide things yourself. There is one big rule in architecture: What is not drawn is not solved. So, be prepared, you'll need to solve things yourself. This roof is an example of that. You'll need to solve problems, put points yourself at the right place, etc...
So now that our roofprofiles are more or less set up (don't worry if there are still points you are not sure of), let's extrude the rooftop lines a bit:
You see, more problems arising? Look at the main rooftop line: We extruded it, and it should meet exactly the opposite point, don't you think? These are all drawing mistakes from the 2D project. So, We'll need to fix that, choosing either one point or the other. Up to you. So let's already fix everything we can:
Everytime you have a face you're sure of, take 3 or 4 points and make a face (F key). This will help you to see better. The left part is still really messy and will be really hard to solve, so let's go by parts. I decided the correct top point is the left one, soI already adjusted the right one. But there are still problems:
For example, how to find the exact intersection of this rooftop line with the main roof? See that I copied one of the main roof edges exactly under our smaller rooftop line. This way, we have two lines, and we need to find the intersection between the two. Simple! select the rooftop one, use the knife tool (SHIFT K) in "exact line" mode, and, with CTRL pressed, snap to the two points of our "cutting line". Done! we have our point.
Let's do it again somewhere else, to understand better: I drew an horizontal line coming from the "correct" side of the roof, far over there, coming to this side, and we see that again, our point comming from the 2D drawing is too low. it should be higher, since we want our roof pane to be totally plane (lower line parallel to top line). How to find the intersection point? Extrude a vertical line, then cut it with the knife, snapping to the correct roofside line. Now we have our correct point!
The knife tool doesn't always work the way we want, sometimes it is better to put yourself in orthographic view (front, top or side) to obtain an exact cut.

After so much suffering, we should now have something like this:
Almost all points are at the right place, we can begin to connect them with faces. Be careful to build faces nicely, always use the same points for adjacent faces, an if you have a point on an edge, make sure all adjacent faces use that point. The aim is that all edges of your roof, except the borders are shared by exactly two faces. That way, it'll extrude nicely later.

That geometry part is quite hard to do, right? That's where you need a good sense of 3D space. What is above, what is underneath, etc... You can see that working exclusively in 2D makes you easily make errors and miss things, because you don't use that sense of 3D space, and you actually don't understand fully your own project.

There is one little thing that is still not solved, it is a small part of roof between the main house and the garage. It is a bit badly designed, and it is not easy to cover with roof. Try to find a best way to cover it and to join the two roof parts. I did it this way:
Okay, it's done. see that we still have a couple of unused vertices in our roof... It is quite easy to get rid of them, you can select all the faces in face select mode, then, in vertex select mode, invert the selection, then delete vertices. We should also separate the garage roof from the main roof, so we keep our mesh manifold (means: no edge can have more than two adjacent faces). You can see on the image above that the selected edge is shared by 3 faces. Non-manifold meshes give not so good results when extruded, so we should avoid that. So let's separate our roof there. And we can also separate the small triangular roof above the bow-window.

Now the last step is to extrude our roof, which won't be difficult if our meshes are manifold. Always keep in mind this golden rule: Inside edges must be shared by exactly 2 faces (border edges have only one face, obviously) and you'll always build proper meshes.

So le's extrude the roofs. How are we going to make the two layers, the roof layer and the underlying layer? Well, up to you. I think in this case, since the wooden structure layer has exactly the same horizontal projection as the roof layer, we can make two extrusions, exactly the same horizontal size, the lower one thicker. If you are less lazy than me, you can try to make a small "tooth", make the lower layer a bit smaller than the upper one.

So take your roofs one by one, and extrude them twice vertically (Z key), snapping to the elevation drawings:
Okay, now we are done with our roof, and the hardest part is behind us. Now, with all we learned until now, the rest will be a piece of cake!
5. CUTTING MESHES AND FINISHING THE WALLS
So we already brought serious corrections to the project, don't you think? It is very hard to draw in 2D but "think" in 3D. That's why you often see such mistakes in 2D architecture drawings. And since we're doing the contrary, we'll be able, not only to make nice images of our model, but, since it is 100% precise, each point being exactly where it should be, we'll be able to generate perfect 2D drawings out of it. We'll take care of that later.

Now we still have a couple of things to finish, mainly we need to make the walls reach the roofs and be cut exactly by the lower side of the roofs. So, let's begin with pushing the top vertices very high:
1. in wireframe mode, box-select all the upper vertices 2. push them way above the roofs
Now we can cut. We have a small problem with the knife tool, it doesn't allow you to snap to another mesh. So we need to temporarily join (J key) the roofs with the walls. When we're done, we'll separate them again.
Then, we'll have to repeat the method below for every roof pane:
1. Select all faces that cross one or two roof panes, the ones we'll use to cut them. 2. Put yourself in orthographic view, facing the roof panes. With the knife tool, cut the faces, snapping to the lower line of the roofs.
3. The faces are cut! 4. remove the upper part that we don't need anymore.
That's a bit of a boring work to do, but it is not difficult. Just go, pane by pane. Take care, when a face will be cut by two different roof panes, to cut it twice before removing it, so you 'll only remove the smallest possible part.

Repeat until no wall appears above the roofs, then separate the roofs from the walls (select one vertice of a roof, then SPACE bar > Select > Linked vertices, then P key). You'll see a couple of problems, probably, like the holes below. No big deal, we are going to correct this.
Let's isolate our object (/ key) and we'll see that we did quite a good work. There is not much left to correct. Now all we need is to close the upper faces of the wall, connecting vertices to re-form faces.

So hands on, this is the last boring part. take 4 vertices at a time (or 2 facing edges), and make a face of them. When a wall face is missing, it'll probably be easy to rebuild it.

Sometimes making 4-vertices faces (also called quads) is not possible, and we'll have to do some triangles. Try to do the maximux possible with quads...

Of course we have automatic functions to close that big holes, but they won't respect exactly your mesh subdivision. If you do it by hand, you'll get a much cleaner mesh later, if you need to edit something.
Normally you won't encounter many problems. Sometimes, the knife didn't cut exactly where we would want (for example the rooftop lines), so we will sometimes need to make small adjustments. Go out of isolate mode when you want to snap something to the roofs.

Last thing we need to do here is to recreate a flat wall above the bow window. Quite easy, just join left and right sides, then cut it vetically in the middle to create the rooftop edge:
Okay. if you managed to arrive until here alive, I can tell you that you are ready for the big stuff. This whole roof thing was fairly complicated, and there are many situations in it that weren't correctly drawn on the 2D drawings. If you are not used to all this, chance are high that you'll get struck at a moment or another. No need to panic, sometimes the solution is unclear, just pass over and attack another piece, then you'll come back to the problem and maybe you'll see something you can do.
Like always, try to follow your own judgement. For example, look at the small roof here above, I had to adapt it a bit (the 2D plan underneath is not drawn correctly).Do that whenever necessary.

The junction between the main house and the garage is still a problem we'll need to solve. That's a typical point where your creativity is required: Invent a solution! There is an interesting operation here, so let's see it step-by-step:
We want to cut this wall vertically, but it is made of triangles! Vertical cut is not possible! No panic, let's divide that one horizontally... Now we have smaller triangles that we can join in quads! (ALT+J) Now this wall is made of quads again, we can cut!
Finally, I obtained this, which is quite a strange solution, I admit, but the best idea I had to solve that strange corner.

You are probably thinking: "so much effort for doing all this!". Well, one thing is true, blender is not a CAD program. So it doesn't have specific tools made for architecture, we need to use more generic tools.

But there is one big advantage to all this: our wall mesh is highly optimized. It is regularly cut, and made almost entirely out of quads. This means: very easy to edit. That's the reward of doing it by hand. I doubt much that any more automatic method would be able to give you such an optimized result. When you'll need to change something, it will make a huge difference .

We could have used booleans operations too. It would have given us a perfectly precise cut too, without the need to "close" the walls by hand. But everything would have been split into triangles, and our nice geometry would have been quite messed up... Up to you to decide. it it is important for your model...
6. FINISHES
We still need a couple of things. Basically, a base slab, foundations and all the doors and windows.
I'll show a quick way to do a window frame, but I won't do them all because it would make this tutorial very long. Besides, we rarely need so much precision as we did until now when we draw window frames... There is no need to compute volume, and windows change much if you use another material, etc... So it would be almost certainly lost work if you spent much time on them.

Here is a quick way to do a decent one that will look OK in renderings as well as in section drawings:
1. Put yourself in front view, isolate an elevation 2. Add a plane, adjust it to the window size, and cut it on all the lines 3. Once all the lines are made, remove the glass parts, or leave them, if you prefer 4. Extrude everything 5cm, then extrude the exterior border again 5cm.
Okay, that will do it. If you are going to render images of the house, you might want to do something more complete, with glass. All you need to do after that is to move/snap the windows in place.

Now let's do a base. I'll do a concrete slab and a fundation line of arbitrary width of 60cm by 80cm deep. Fundations must be calculated, not estimated like I do here, but let's do it like that anyway otherwise we'll never finish this!
1. Isolate the plan view, and trace the contour 2. Since blender has no offset tool, we need to copy the edges separately, 20cm outside and 40cm inside
3. Join the vertices and do a big "remove doubles", add more fundation lines if you want 4. Extrude the slab 20cm, then the fundation lines 60cm more.
Okay, I think that now, finally, we are done!
7. AND NOW?
But now that we suffered so much for building a 100% precise house, what are we going to do with it? Basically we can do 3 things now:
  • Make renderings
  • Extract 2D Drawings
  • Calculate volumes and quantities
The first one, rendering, is easy. That's what blender is made for. Probably you know how to do it already. But one thing you should understand well, don't do such a precise modelling only for doing rendering! You would loose a lot of time. You never need so much precision when rendering perspective views. It goes much faster to model by eye. Make the main parts to correct scale, but the details, please, don't bother replicating things to the exact centimeter! use your eyes and your sense of proportion, if it's "more or less" ok, at a distance, in perspective, nobody will be able to see the difference. But, if you needed a very precise model for any other reason, it'll be fine for rendering too.

Now the two other things are far more interesting, so let's look at them better.
  • Extracting 2d drawings
We have several ways to extract exact 2D drawings from our model:
  • Export it to almost any engineering or architecture-specific application, that has built-in 2D extraction capabilities (for example Autodesk Architectural Desktop does a fine job). I suggest exporting to OBJ format if your application supports it, otherwise to 3DS.
  • Export our model to Sketchup (export it as 3DS). Sketchup (both free and pro versions) is able to cut through a model and produce a nice 2D drawing of it. But the free version cannot export 2D drawings...
  • Use a very good blender tool called Pantograph. Pantograph just renders a vector drawing of your model. You just need to setup a camera, that can be orthographic, and Pantograph will render it. Then you can save it as an SVG file. The generated file is a 100% accurate vector pojection of your model, so if you setup your camera correctly, the generated image will be totally precise. Pantograph also lets you define a "cutting" material, that can be used to do cross sections in your model.
  • Use a script I made, called CrossSection, that creates cross-section profiles of selected objects at their intersection with a plane. This won't help you to obtain elevation drawings, but works well to get plan and section views. The latest versions of Blender now have a DXF export script, that lets us export our sections to a 2D CAD program.
Here are examples of what you can do with some of the above methods:
These are shapes made with the cross section script.
This is what comes out of sketchup. About the same...
And this is what pantograph can do. Best of all, it can export 2D drawings in SVG format...
  • Calculate volumes and quantities
This is another very interesting advantage of modelling with precision. The volumes and areas are exact. So, we can know exact quantities. I made another little script called Quantites bill, that calculates quantities of selected objects. If the object is closed (and manifold, see above), its volume is calculated. If it is open, its surface. If it is linear (no faces, just edges), the total length of edges is calculated. It ouputs a bill in CSV format that can be imported in a spreadsheet. The result looks like this:
Of course, if this is just for doing a gross estimation, there was no need to model so precisely. With a less precise model, you can obtain a fairly good estimation of quantities too.

Another little script I wrote, called check Integrity, can help you if you need to calculate volumes. It checks if a mesh is perfectly closed and manifold. If not, the problematic edges get selected so you can fix them.

Don't forget, too, that blender has a built-in function to display length of edges and areas of faces. There are two buttons for that on the Mesh button panels.
8. CONCLUSION
So, what can we conclude of all this? I can already hear several of you say "It is much easier and faster to do in Sketchup, Archicad, Revit, whatever."

Yes, I'm sure you are right. Blender is not a CAD program, but a much more generic 3D program. But neverthless, it is quite amazing what a good job we can do, don't you think? We have already several very good tools. All we miss are a couple of "automatic-roof-making-tool" and other "magic-windowmaker" functions...

So, I hope I could demonstrate that blender, even if it is not (at least at the moment) the Best Total Solution for your Architectural Needs, at least it can do a very decent job, and slowly find its path through architecture practice.

Now, far more important than all this, for me, two things emerge from this exercise:
  • Much more important than what tool you use, is the way you model. I've seen many people using very advanced tools like Revit or Archicad making pure modelling mistakes (like for example crossing a concrete beam in a brick wall) and being struck with graphical errors because of that, that they couldn't solve because they were not understanding how the model was being built by the program. So, I sometimes wonder what's the point on using such high-level (and expensive) software. Much more important than that, in my opinion, is your ability to model correctly. If you can model well, you will understand your project well, and you'll be able to solve your problems well, being in Revit or in Blender. Blender is very bare, but it shows your model the way it is built. That is its advantage...
  • Precision is highly time-consuming. Use only when absolutely necessary. Generating 2D drawings from 3D models, even if it is our common dream, is still a very delicate task. It is not something you do very often, so in day to day life you actually rarely need totally precise models. In older times, when architects didn't use computers to draw, they were far less afraid than we are of lack of precision. Your precision depended on your pencil. If you were drawing two pencil lines with 2mm between each other, if those 2mm was a wall drawn at 1:100 scale, well, the thickness of your pencil tip represented an unprecision of about 20cm! And nobody was scared!
Sometimes we should remember that and think that if we draw something very well, but without being too picky on precision, our imprecision will stay "inside acceptable level", we'll save a lot of time and we'll do a very good job.

Well, that's it for today. If you want to have a look at the model made during this tutorial, grab it here. And, since we are now very good at modelling in blender, we are ready for the next one, where we'll try to make architecture projects from scratch directly in Blender.

Cheers
Yorik 

No comments:

Post a Comment