Blender 3D: Noob to Pro/Building a House
Applicable Blender version: 2.67. |
In this tutorial, you will learn how to make a simple toy-like house with a fence around it. You will learn how to use array modifiers to replicate the palings of the fence, saving you from duplicating them one by one.
This tutorial is based on Bart Veldhuizen's "Building a House" from Tutorial #01 published by NaN in 1999 which is also available in a PDF at http://download.blender.org/documentation/BlenderTutorialGuide1.tar.gz (a tar.gz containing BlenderTutorialGuide1.pdf) or http://download.blender.org/documentation/BlenderTutorialGuide1.zip (a ZIP file containing the same PDF).
Permission was asked to use it and Ton Roosendaal said "Be assured that everything that was produced by NaN now is open and free content for everyone to reuse, including the tutorial “Building a House”."
Setting the Scene
editStart a new document ( CTRL + N ). Split the view into four views as at right, by pressing ALT + CTRL + Q . This gives you a standard set of views: top, front, side and camera, the first three orthographic and the last one in perspective. You can switch back to the single 3D view at any time by pressing ALT + CTRL + Q again.
Leave the default cube, it will be the walls of the house.
Make the Roof
editEnsure you are in object mode ( TAB switches between object and edit mode)
Now, in the Front view window (lower left)
Press SHIFT + D to duplicate the cube, grab mode is automatically selected, press Z to restrict the move to the up-down axis and move the cube to rest on top of the original (pressing CTRL while moving will snap it to the grid and make it easier to position accurately.) Press ENTER when it is in place.
You can see how useful this four-paned window is; it shows you exactly what's going on.
Note: It helps to simply grab one of the arrows, press Z and then press 2 on the key pad, this will move the block 2 units in the z direction. the standard starting cube is 2 units tall.
Make sure you are duplicating the cube in Object mode, not Edit mode, so the roof ends up as a separate object. |
The top cube is going to become the roof and needs to be given a triangular cross-section.
Select the top cube (if it is not already selected) by clicking RMB on it
Press TAB to go into Edit Mode (check the box in the middle of the 3D window header)
Press A to deselect all the vertices.
In the top view, select the top four ( RMB the first one and SHIFT + RMB the rest). You can check in the other views that only those four are selected.
Note: another way to do this is to have "limit selection to visible" turned off, and then press the B for, border select, and make a box around the top vertices. (it helps to view it from one of the sides, by pressing either the 1 or 3 keys)
Another Note: Or, with 'limit selection to visible" turned on, press C for circle select and turn the mouse key to make the circle large enough to enclose all four vertices before you press LMB .
Make the Apex of the Roof
editNow press S for scaling and X to limit the scaling to the X-axis (left to right). You could try to move the mouse back and forth to bring the top vertices together, but you will have a hard time lining them up exactly, so it's best to just type in 0KEY (zero) followed by ENTER to set scaling to zero.
Now it looks like there are only 2 vertices where there were 4, but in fact there are still 4, even though 2 of them are occupying exactly the same positions as the other 2. With these 4 still selected, bring up the vertex specials menu with W and select “Remove Doubles”. You should see a message briefly flash up at the top right saying “Removed 2 vertices”. Now there really are only 2 vertices where there previously were 4.
“Remove Doubles” is a handy function to use after complicated mesh edits. It helps reduce complexity in your mesh structure. |
Form the Eaves
editThe roof needs to project over the walls of the house to form the eaves. To do this, we will scale it, but only along the X- and Y-axes, not the Z, so it doesn’t become taller.
Select all the vertices in the roof object by pressing A once or twice.
Press S to scale, followed by SHIFT + Z to scale uniformly along all axes except Z, and scale to about 1.1. Confirm the operation with LMB or ENTER in the usual way.
Naming the Roof and House Objects
editIn a complex project with lots of objects, it can be helpful to keep them straight by giving them names. This is less of an issue in a simple tutorial like this one, but for practice, let’s give names to your objects anyway.
Go to the Object context in the Properties window, and at the top you should see an editable field containing the name of the currently-selected object. The walls of the house should be called “Cube”, and the roof should be called “Cube.001” (note the automatic addition of a numeric suffix to keep the names unique). Try changing these to, say, “House” and “Roof” respectively.
Object Name Versus Mesh Name
editIf you look in the Mesh Data context , you will also see a name like “Cube” or “Cube.001”. This is a separate name for the object-type-specific data (the mesh data, in this case), quite independent of the object name. Don’t worry about this name for now; you will learn about its significance later.
Colouring the House
editThe roof now needs to be given a different colour to the default grey. Select the Materials Context in the Object Properties window. In the list at the top, you should see a single entry, called “Material” (the name of the initial default material). Below that is an editable field containing the name, and immediately to its right should be a small box with the number “2” in it. This number indicates that the same material is being used in two places—in this case, we know the other place is the object representing the walls of the house. Click on this “2”, and that will force a new copy of the material to be made (leaving the house walls with the original); the number will disappear, and the material name will change to “Material.001” to be different from the original.
Change this material name to “RoofRed”, to make it clearer what it is for. Next, find the panel “Diffuse” further down, showing a swatch of the diffuse (non-reflective) colour, which is initially white. Click on this to bring up a colour picker, and choose some suitable shade of red for the roof. (Notice that when using shades of red, the white to black slider on the right actually creates shades of brown from the red.) As you do this, the 3D view should instantly update to show your new colour being applied to the roof of the house. If you want to exit the colour picker and leave the colour unchanged, press ESC ; otherwise, to confirm your choice, simply move the mouse outside the picker window, and it will close, leaving your last-chosen colour in effect.
Follow a similar procedure to choose the colour for the house walls: click the “House” object with RMB in one of the 3D views, go to the Materials Context in Object Properties, change the material name from “Material” to something more appropriate (here I’m choosing “HouseSandy” because I’m going to give the house walls a sandy-yellow colour), click on the colour swatch in the “Diffuse” panel and choose a suitable colour for this material. Noob Note: I have found it very useful, when I re-name anything, to type my new name in ALL CAPS. This makes it easier for me to pick out what I have done.
Your house should look like this now.
Make a Chimney
editGo into Object mode, if you're not already in it. ( TAB flips between object and edit mode.)
Go to the Front view (lower left window).
Click LMB to position the 3D cursor on the right-hand side of the roof, this will select the spot where the chimney will be created.
Press SHIFT + A to Add → Mesh → Cube from the popup menu — a bit large, isn't it?
Scale it along the X and Y ( S , SHIFT + Z ) to about 0.2.
Now grab it ( G , X ) and move it into position looking at the front view (lower left window). (Feel free to use the mouse wheel to zoom in the view to make things easier to see.)
When this is correct, move it into position along the Y axis ( G , Y ) looking at the top view (upper left window).
You can check the side view (lower right window) and the camera view (upper right window) to see that it looks OK.
Name and Colour the Chimney
editIn the Object context in the Object Properties window, change the name of the chimney object to "Chimney".
Next in the Materials Context in the Object Properties window, you will notice there are no buttons, and there is an icon , and next to that a button with the word "New" in it. You can now choose to have the chimney a different colour to the roof or the house or reuse one of these colours.
If you want a new colour, the "New" button, and it will create a new material with a default name and settings. You can rename this and give it an appropriate colour.
If you want to reuse the same colour, you can click on the icon and select from the available materials, namely "RoofRed" and "HouseSandy".
Adding a Window
editMake the Window Frame
editBe in Object mode.
Using the front and top views, click LMB to place the 3D cursor where you want the window to go: use the top view to place it against the front wall, and the front view to place it a little to the left and up from the centre of the wall. (Of course, it’s easy enough to reposition the window after you’ve created it, so exact initial placement is not critical.)
In the front view (lower left) add a plane: SHIFT + A Mesh → Plane). This will initially be laying flat, facing upwards instead of forwards; to fix this, just rotate it 90° about the X-axis: R X 9KEY 0KEY ENTER .
Scale S it down to 0.4, and press ENTER
To give it a rectangular shape, scale the plane by about 0.8 along the X-axis S X 0KEY .KEY 8KEY .
Move it into position ( G ), using the top and front view, on the left hand side of the house a little higher than midway.
Be in the Side View window (lower right).
Move the plane along the Y-axis ( G , Y ) until it is just in front of the house. You may want to zoom in ( MW ) to see better.
Now, still in Side View,
Switch to Edit mode ( TAB )
Extrude the plane towards the house ( E , -0.07) until it is embedded in the wall.
Make the Window Sill
editTo make this box into a window frame will require a larger view: move the mouse into the Side View window and zoom in with the mouse wheel.
Deselect all ( A ) and select the outer (leftmost in the right view) vertices using box select ( B ).
Press E and immediately (without moving the mouse) press ESC . This will extrude, but leave the newly-created vertices on top of the previous ones.
Scale the newly created vertices by 0.9 ( S 0KEY .KEY 9KEY ENTER ).
Extrude again inwards to most of the depth of the box about -.03 to -.05 along the Y axis, depending on how you have your window into the wall( E , Y , -.03, ENTER ).
This screenshot shows a side view in wireframe mode (use Z to switch wireframe mode on and off).
The outer panel of the window that you just made cannot be inside the wall, you will see this best on the side view. (if the outer face of the window pane is inside the wall you either won't see any paint/texture you apply, or it will half show up.) |
Name and Colour the Window Frame Object
editChange the name of the window object, as you previously did for the rest of the house pieces. It will be initially called “Plane” (because that is the kind of mesh object you started with); change it to “WindowFrame”. Also give it a new material, and make it white. Change the material name to “WindowFrame”.
Make the Window Glass
editThe glass of the window has to have a different material from the frame. There are two ways to achieve this: make them separate objects, or make them the same object, with different materials assigned to different faces. We will do the latter.
Deselect all ( A )
Be in Edit mode .
Switch into Face select mode ( CTRL + TAB -> faces) select mode (you've been in Vertex select mode up to now)
RMB on the face in the center of the window frame, to select it.
In the Materials Context, click the "+" button next to the list of materials, and where that was previously showing just the “WindowFrame” material, you should see a new blank item appear. The rest of the window will go blank, but the “New” button will appear; click this to create a new material. Give it a colour reminiscent of glass; I chose to colour it light blue (“87ceeb” SkyBlue).
Now to connect the new material to just that one face, press the Assign button just under the material list.
The material Assign, Select and Deselect buttons only appear in Edit mode. |
Patience, Grasshopper. A simple blue rectangle may not look very much like glass. But don’t worry: in later lessons, as your skills improve, you will learn how to make a material that looks like real glass. |
Note: If you do decide to make the windows with real glass material, as explained in previous lessons, make sure you use the materials on both faces in the front and back of the window. Also use loop cuts or knife to cut out a hole in the wall in place of the window. And add a point light inside the house.
Adding a Door
editAdd the door using the same method:
Be in Object mode
Deselect all,
Create a plane, rotating it to face forward as necessary ( R X 9KEY 0KEY ENTER ) to align it with the front wall of the house.
Scale the plane down by .7 and then again by .5 along the X axis.
Move it into position using Front view and then move it against the wall of the house in Side view.
Change the Object name to “Door”. Create a new material for it; change the material’s name to “Door” and choose an appropriate colour for it.
Building the Fence
editThe fence will consist of long sequences of identical palings. Creating them one by one would be a long, tedious process—which is something the computer, not a human, should do, right? In fact, even creating just one paling and making duplicate copies would be a long, tedious process. Which is where the magic of modifiers comes in.
Blender’s array modifier lets you make any number of copies of a single object, all neatly arranged in a row or in various other ways. Being a modifier, the copying only happens at render time, so there is still only a single object to edit while modelling: change that, and the change is automatically propagated to all the copies.
Make a Paling
editBe in object mode, with nothing else selected.
Add a plane, orient it vertically ( R X 90 ENTER ), scaled to 0.4 and then 0.1 along the X axis in Front view.
Switch to edit mode. Ensure you are in vertex select mode ( CTRL + TAB -> "vertex"), in case you were still in face-select mode from making the window (above).
To give it some thickness, go into Side view and extrude it to 0.05.
The pointed top is made by going back into Front view,
Selecting the top vertices and extruding them by 0.07 (along the Z axis is selected automatically),
Scaling them to 0 along the X axis and then removing the doubled vertices ( W , "Remove Doubles": it should say "Removed 2 vertices").
In Top view move the paling to the intersection of two grid lines at a suitable distance from the house.
In Front view again, check that the bottom of the paling is level with the bottom of the house.
Change the name of the object and the mesh to "Paling", create a new material for it called "Paling" and make the colour white.
Duplicate the Paling
editBe in Front view, as the flat face of the paling is along the X axis and it is easier to create the front fence first.
Change to Object mode. Select the paling. Find the Modifiers Context in the Object Properties window. Click the “Add Modifier” button, and in the menu that pops up, select “Array”. You should see a second copy of the paling appear next to the first.
Look at the checkboxes: “Relative Offset” should be checked, “Constant Offset” and “Object Offset” should not be checked. Under “Relative Offset”, there are values for X, Y and Z; these are the distances between copies, relative to the dimensions of the object. Change the X value to something like -2 (the negative value causes the duplicated paling to appear on the other side, away from the gap we want to leave in front of the door). Now increase the number under the popup that says “Fixed Count”, and watch the line of duplicates lengthen until it reaches the point that you want to be the corner of the fence line—a count of about 12 did it for me.
Now type ALT + D to make a duplicate of the row of palings, followed by X to constrain its movement to the X-axis (parallel to the row of palings). Move the duplicate row to the end of the existing row so it looks like a continuation of it. Now type R Z -90 ENTER to rotate it so it lies parallel to the side of the house. Increase the array count for this row to something like 24 so it extends all the way past the side of the house to a suitable corner point.
Again, type ALT + D to duplicate this second row, this time followed by Y to constrain its movement parallel to the side of the house. Move the duplicate so its looks like a continuation of the same row. Rotate it parallel to the back of the house by typing R Z -90 ENTER . Adjust its array count as necessary to get the right length.
Once more, type ALT + D to duplicate this third row, followed by X to constrain its movement parallel to the back of the house. Move the duplicate to the end of the row, and rotate it to be parallel to the side of the house with R Z -90 ENTER . Give it the same count you did to the array on the other side, so its length will be the same.
One last time: ALT + D to duplicate, Y to ensure it only moves parallel to the side of the house, move to the end of the row, rotate into position with R Z -90 ENTER . You’ll probably find it’s so long it runs into the original row of palings you started with on the other side of the front of the house; reduce its array count to something like 8 and you should end up with a nice gap in front of the door.
Noob Note: I encountered a problem when rendering the fence. It became grainy, and when I say grainy, there are random clusters of black all over every rendered post. Some had few of this 'grain' while others were almost black. I have environment lighting at 1 and it's still goofed up. Would this be due to hand-sizing them instead of putting in all of the above values?
Noob Answer: I don't think hand sizing would make any difference. The first thing I would do is go back into edit mode on the original paling and select all vertices. Then I would hit 'W' and click remove doubles. After that, recalculate the normals by holding 'Ctrl' and hitting 'N'. Those operations typically fix common rendering issues for me, hopefully it will work for you too.
Alternate Noob Solution: I encountered this problem and it turns out it is caused by having more than one copy of the fence in the exact same place. Try moving the affected fence pieces, to find the duplicate then delete it. Remove doubles did not work for my instance of the problem.
Make the Horizontal Bars (Left Side)
editThe fence needs horizontal bars to hold the palings in place: be in Front view
LMB below the middle of the left-hand fence.
Create a plane, rotating it to the vertical as necessary ( R X 90 ENTER ) and scale it to the length of the fence.
Scale it again to 0.05 along the Z axis and move it into position. ( if you keep CTRL pressed while you move it, it will snap to the grid.)
Go into Edit mode ( TAB )
In Side view move it so it is against the back of the fence and extrude it by -0.04 along the Y axis.
Go into Object mode ( TAB ). Give the horizontal bar the same material you previously created for the palings.
Duplicate it ( ALT + D ) and move it (keeping CTRL pressed) along the Z axis ( Z ) to make the bottom bar.
Make the Horizontal Bars (Right Side)
editTo make the bars on the right-hand part of the fence: In Front view, select both the horizontal bars you just created: RMB on one, then SHIFT + RMB on the other (you may need to zoom in to be able to select them without accidentally including the rest of the fence). Duplicate them with ALT + D . Move your duplicates along the X-axis X until they are horizontally centred around middle of the right-hand fence; now scale them horizontally S X until they are the right size.
You could have done the bars one by one, but it’s quicker to do them both at once, don’t you think?
Put the Horizontal Bars Around The House
editSelect the two horizontal bars you created above for the front fence (make sure you don’t select anything else, like the palings). Press ALT + D to make a duplicate, then R Z to rotate the duplicate about the Z-axis, type 90 for the angle and press ENTER to confirm the rotation. In the top view, move the duplicate ( G ) you just made so it’s against the side fence. Keep scaling it along the Y-axis ( S Y ) and/or moving it along the Y-axis ( G Y ) until it’s the right length and position.
Having done the side of the house, press ALT + D to make another duplicate of the horizontal bars, and R Z 90 ENTER to rotate it into the right alignment for the back fence. In the top view, move ( G ) it against the palings. Now keep scaling and moving it along the X-axis until it has the right length and position.
Having done the back of the house, do the other side: another duplicate of the bars, rotate 90° around the Z-axis, move against the palings, move and scale until they’re the proper length in the right position.
Again, another duplicate, rotate and move/scale into position against the palings on the other side of the front of the house.
Your house should now look like this.
The Ground Plane and a Path
editMake the Ground
editIn Top view put the 3D cursor somewhere near the middle of the plot, (click LMB )
Create a plane
Be in camera view (bottom right-hand window)
Scale it to extend just past the boundaries of what the camera sees (10.0 seems a good number).
Go back into Object mode and change its (object, mesh) name to "Ground",
create a new material for it, rename it "Grass" and select a suitable green from the colour selector ("00cd00" green3).
Check in Front view that it is level with the bottom of the house and fence and move it (along the Z axis) if necessary.
Make the Path
editFor the path: Go into Top view, create a plane.
Scale it to fit the gap in the front fence with some space on either side and position it just outside the fence.
Check, in Front view, that it lines up with the door and is level with the bottom of the house.
Scale it along the X axis to the same width as the door.
Be in Top view, Select the two vertices closest to the fence, and extrude E away from the house Y to make a suitable width for the footpath outside the fence.
Of those four vertices just outside the fence, select the left two and extrude a suitable distance to the left, and then the right two and extrude a suitable distance to the right, to make the path passing the house.
Give the Path Some Thickness
editThe path is still just a flat plane. Let’s give it some thickness, so it rises slightly above the ground.
Go to Object mode. Make sure the path is still selected. Go to the Modifiers Context , click Add Modifiers, and look for Solidify. The default thickness (the top-left editable field) is 0.01; change this to -0.01 so the path protrudes above the ground rather than into it.
Improve the Lighting
editIf you were to try to render now, you will probably find that most of your beautiful house is lost in gloomy shadow. To fix this, let’s add a bit more light to the scene.
In the top view, find the existing default Lamp object. Duplicate it a couple of times, and position your copies around the house to give it a more even lighting.
Check the Camera View
editBefore doing the render, check your camera is properly positioned to capture the beauty of your work. In the camera view (top-right quadrant of the split view), you should see something like this; note the passepartout (darkened area) outside the rectangle denoting the visible area of the scene that will be rendered. If you RMB on the rectangle, you can reposition the camera from side to side or up and down with G , or do G Z Z to move it closer to or further away from the scene.
Pro tip : To adjust camera view, select camera view by 0 , then Ctrl + F to enter "Fly" mode. Then, use FPS control to move the camera (WASD keys to move around, mouse to change direction and Q or E to acsend or decsend.
Final Render
editNow hit F12 , and hopefully you should see something like this!