Modeling A Modern Interior Scene In Blender
In this tutorial we will be modeling an interior scene from a reference photo. It is written for the complete beginner, you'll learn how to setup a background image and how to match the camera to it, as we follow a very simple workflow for building up the scene with a variety of basic modeling techniques that will give you a very good basis on how to approach any kind of modeling.
I would like to thank Flickr user “scarletgreen” for the reference photos we will be using. She has some pretty nice architectural photos, so if you are into architecture you should definitely stop by her profile.
Additional Files/ Plugins:
First of all, make sure you are using the latest stable release of Blender, which you can freely download from blender.org. I'm writing this tutorial with version 2.62, so if by the time you are reading this there is a newer version, keep in mind that it might have some slight changes but you should be good to go.
Note: You can also download daily builds, which include up to date improvements in Blender. However, if you are using Blender for production I don't recommend you to do so, they are not stable. If you just want to try out new features, go grab them.
We will be modeling from a reference photo so let's begin by setting it up as a background image. Go ahead and open up a new scene in blender and delete the cube and the lamp from the default scene by pressing 'Shift' + 'Right click' to select them both, and pressing 'X' delete them.
You should only have the camera left in the scene which is what we want. You may have noticed that by default it is translated and rotated in 3d space, we need to clear those transformations. There is a couple of ways you can go about it. If you press 'N' to bring up the 'Properties panel', under the 'Transform' tab, you can see the numeric inputs for the location, rotation and scale of the current selected object, and if you change the location and rotation values to 0, you'll see the camera moving to the center of the 3d space with no rotation.
The other way of doing this, is to select the camera and press 'Alt' + 'G' to clear the location, and 'Alt' + 'R' to clear the rotation, you can double check that it cleared it in the 'Properties panel' as we saw before.
Let's rotate the camera so it's facing forward. You can either select it and type 90 in the X axis rotation input in the properties panel, or you can select it, press 'R' to enter rotation mode, then 'X' to constraint the rotation to the X axis, and type 90 to rotate it 90 degrees and press 'enter' to confirm.
Now that we have our camera in a good position let's set up our reference photo. Press 'N' to open up the properties panel and scroll down to the 'Background Images' tab. Enable background images by checking on the mark box next to the name and then click on 'Add Image'. Make sure 'Image' is selected and then click 'Open' to locate the reference photo 1.
In order to actually see the photo as a background image press 0 on your Numpad to change to a camera view, and now you should see it. The problem now is that if you toggle between different orthographic views (by pressing 1, 3 or 7 on your Numpad), you'll see the background image in everyone of them. So to stop Blender from doing it, change the 'Axis' of display to 'Camera'.
Now if you take a look to the image you can see that the proportions are a little bit weird. That is because it is being stretched to the camera resolution and therefore changing its aspect ratio. So let's go to the 'Properties editor' > 'Render' and under the 'Dimensions' tab, set the resolution of the camera to match the resolution of the image, in this case: X = 1280 and Y = 857. You'll see the camera updating it's dimensions in the 3d viewport and the image should look good now.
The next step is to match the picture's horizon with our scene horizon. In the picture below the red line represents the picture's horizon and the green one represents the scene horizon which is a little bit difficult to see because it's a very subtle line. Press 0 on your Numpad to jump into camera view and identify those lines. If you want to be very precise you can take the picture to an image editor and draw the lines like I did and then load it as the background image.
Now, in order to match both lines, we need to shift the camera vertically. So, while in camera view, select the camera, and go to the 'Properties editor' > 'Object data' and under the 'Lens' tab change the Y value for the 'Shift'. It seems that 0.02 works fine for me.
Only a couple of tweaks more to get a better match with the background image. Go ahead and create a cube by pressing 'Shift' + 'A' and in the 'Add' pop up menu go to 'Mesh' > 'Cube'. We will use it to try to match it with the back wall. Let's separate the cube from the camera, select it, and move it eight units (or whatever you want) in the Y Axis by pressing 'G' + 'Y' and typing in 8.
Press 0 on your Numpad to jump into camera view, and then 'Z' to change the shading of the viewport to wireframe so you can see the background image. What we need to do is to scale the cube so it's back face matches the back wall from the photo. So go ahead and do so by pressing 'S' to scale, and 'G' to move it until it you get it as precise as you want it to be. The scaling amount will depend on the distance between the cube and the camera.
Note: If you are working with real world units, you'll have to do it kind of backwards. Get the cube to the real dimension (of the wall in this case) and then move it away from the camera until it matches the photo.
To match the side walls as well, we'll need to select the camera, rotate and move it until it matches. Both transforms will be very subtle, so go ahead and press 'R' + 'Z' to rotate in the Z Axis and then 'G' + 'X' to move it in the X Axis until it matches. Spend as much time as you need to get a good match because it will help you with the modeling.
Once you are happy with the matching, we are ready to start blocking out the scene. I like to do this because it gives you a better overall understanding of the whole scene and speeds you up later down the road as you start modeling. For the moment, press 'Tab' to go into edit mode, 'Faces' from the 3d viewport header to go into face select mode, and select the face that's closer to the camera. Now delete it by pressing 'X' > 'Faces' so you are able to see inside the cube.
While in camera view, go into edit mode by pressing 'Tab' if you are not already. Let's start making some cuts to start defining the walls. To do so, we are going to use a tool called 'Loop cut and slice' which you can access by pressing 'Ctrl' + 'R' or by hitting the space bar and typing in 'Loop cut and slice'. Once you are in use of the tool you'll see a purple loop depending on which face you are over with the mouse, if you left click on any face you'll be able to move the loop you just created, confirm where you want it by left clicking again.
If you are moving the loop and then right click instead of left click, it will snap to the middle. Now go ahead and make some cuts that will help you block the walls. You can make as many cuts as you need but is better if you keep it simple, you don't need too much detail by now.
Select the faces that correspond to the windows and the door and delete them ('X' > 'Faces'). Then go into edge select mode by pressing 'Ctrl' + 'Tab' > 'Edges' and start extruding the edges that will define the rest of the scene, and by that I mean those parts of the scene that we didn't fit in our initial cube: The rest of the back wall, the ceiling, the left wall, etc (the orange faces in the picture below). To extrude, simply press 'E' with the edges selected and start moving the new geometry. You can constraint the movement to any Axis as if you were moving an entire object.
Until now, we have used the perspective view for most of the work we have done. But to get more control of what we are doing, we will need to work with the orthographic views as well. You can arrange your own layout with different views, you can also work in one viewport using hotkeys to toggle between views, whatever works better for you. If you are a fan of the four view viewport that you find in most of the other 3d softwares, you can press 'Ctrl' + 'Alt' + 'Q' to enter into a 'Quad view' (while having the mouse over the 3d viewport). You'll get the same viewport divided into the camera (perspective) view, and the top, front and right (orthographic) views.
Now, before we can start blocking out the other objects, I need you to learn about snapping two different objects, one in top of the other. This will help us with objects that are on the floor, or attached to the walls, etc, so we can get an exact position without needing to tweak too much in every view. It will speed us up down the road. Si first of all you'll need to turn on the snapping by pressing 'Shift' + 'Tab', or by clicking the little magnet icon on the 3d viewport header.
Once you've turned the snapping on, set the snap element to 'Face' and the snap target to 'Active'. In the 3d viewport header, next to those options you'll see two icons, make sure the first one, 'Align rotation with the snapping target' is selected, and the second one, 'Project individual elements on the surface of another objects' is deselected.
You just told Blender to snap the active object (using the origin as reference), to the face of another object and to match it's rotation. The way the rotation matching works is that Blender aligns the objects local Z Axis (img. 2) with the normal of the face you are snapping it to (img. 1). This is very important for you to understand so make a couple of tests until you feel comfortable with it.
We are going to use this kind of snapping to position our objects while we block them out. We will be snapping to the walls, floor and ceiling so let's start by checking the normals on that object. To do so, select it, press 'Tab' to go into edit mode and then 'N' to open your properties panel. Scroll down to the 'Mesh Display' tab, and under 'Normals' check 'Faces'. You'll see a little blue line coming out from the center of each face indicating the direction of each normal.
In my case, and probably in yours as well, the normals are pointing out, but in order for the snapping to work correctly we need to flip them. To do so, press 'A' to select all the faces, then 'W' to bring the 'Specials' pop out menu, and select 'Flip normals'. Now the normals are pointing in, and we are good to go.
Now we are prepared to start blocking out the different elements of the scene. Let's chose the simpler object, that is probably the box on the back wall. Create a cube and press '/' on your Numpad to go into local view, which means that you're only going to see the objects or components you have selected. If you take a closer look to the picture you'll see that the box has a very subtle indention in the front face, so let's do that.
Select the top face, press 'E' to extrude, 'Right click' to leave the extrusion in the same place, and then 'S' to scale it a little bit in. Finally extrude it down to make the indention. In this stage there's no detail needed, we only need a rough idea what it is, the most important thing is the proportions and the location.
The next move is to set up the origin. As you saw before, Blender uses the origin of the object as a reference point to do the snapping, in this case we need to set it on the face that's opposite to the face which we used in step 21. Select that face and press 'Shift' + 'S' to bring the 'Snap' pop up menu and select 'Cursor to selected'. The 3d cursor will snap to the center of the face. Now go into object mode and press 'Shift' + 'Ctrl' + 'Alt' + 'C' to bring the 'Set origin' pop up menu and select 'Origin to 3d cursor'. That's it you've your object snap ready. I'll say it again make sure you really dominate this process, you'll need it a lot and I'm going to assume from now on that you know how to use it.
Press '/' again on your Numpad to go into global view so you are able to see everything in the scene. Then press 0 on your Numpad to go into camera view and select the box with the indention. Activate the snapping options and set it to what I showed you on step 18 (Faces/Active/Align rotation). Now if you press 'G' to move the box you should see it snapping to the different faces as you move it. The indention should be facing in at any time. Try to match it's center with the center of the box in the picture.
Obviously the size of the box is our next concern. Press 'S' to scale it until it matches the box from the picture. Be careful here, if you only use the camera view as reference, you might get the illusion that the proportions are right but they probably aren't. If you press 7 on your Numpad to go into top view you'll see that the box is too thick. To correct it, split the viewport into a camera and a top view so you can see both angles, and then press 'S' + 'Z' + 'Z' (We pressed 'Z' twice to lock the transform to the local Z axis of the object). Once you scale it you should get a pretty decent match with the reference picture.
This might be a good moment to start naming our objects. You've probably heard this a couple of times but I'm going to say it anyway. Naming is incredibly important in any 3d scene, you'll keep things organize on big scenes, if you sell a model to a client they will probably won't be happy if all they see in the outliner is “cube.001”. If you get into rigging or some other stuff where you start parenting objects, naming will be incredibly important. You get the point, get used to name objects, period.
As always there are several ways of naming objects in Blender. If you press 'N' to open up the properties panel, under the 'Item' tab you'll get a box where you can change rename the current selected object. You can also go to the 'Outliner' which you'll see if you still have Blender's default layout, and you can either Right click > 'Rename' or you can 'Ctrl' + Left click on it, both ways will get the job done. There's even another way, under the 'Properties editor' > 'Object' you'll get another box to rename the object. That's probably more ways than what you need, but there you go. I'll name it 'block_box'.
Let's keep it simple and continue with the pot for the plant in the back. This time we'll use a cylinder to block it. Go ahead and create one, press 'F6' to bring the last operation menu, in this case the creation of the cylinder, and set the vertices to something lower, I'll set it to 10. Then I'll rename it 'block_pot'. Repeat the workflow we used with the little box, play a little bit with extrusions and loop cuts to shape it roughly, and set the origin to the base of the pot. Then locate and scale it using both camera and top view. You should feel comfortable with this process by now.
Until now we have used the snap tool ('Shift' + 'Tab'), extrude tool ('E') and loop cut tool ('Ctrl' + 'R') to do some basic modeling. Now go ahead and use them to block the rest of the objects. Play with them, you are not going to break anything. I wont show you how to block the rest of the objects because it's pretty much the same process. Don't be afraid of moving some vertices in case you want to do some basic shaping, let's say for the chairs for example. By the end of it you should get a scene that looks pretty much like the image below. I've attached a .blend file with the scene blocked out if you want to follow along from this point.
With the important elements blocked out we can go ahead and start detailing each object. One of the basics of modeling is that there are no 100% sharp edges in real life. So what we need to do is to apply a little bevel to the edges of the objects. You will get a much realistic model and will help you get a nice reflection on everyone of them when you start illuminating the scene. So in order to create this effect, let's go back to our little box on the back wall and select it. Go to 'Properties editor' > 'Objects Modifiers' > 'Add Modifier' > 'Bevel'. Make sure 'Limit Method' is 'None' and set the 'Width' to something you like, in my case 0.005 looks fine.
One thing I like to do at this point is to start assigning a material to the objects that are “done”. Just as a visual guide to what I still need to work with: gray objects are still blocks, colored objects are finished. Our little box is pretty much done, as it is far from the camera it doesn't need too much detail. So with the box still selected go to 'Properties editor' > 'Material' and click 'New'. Rename your material on the little text box, I'll rename it “done_material” and under the 'Diffuse' tab, change the color to something you like. The box is complete, now you can change it's name from “block_box” to “box”.
So that's the workflow I'll be using on every object from now on: Modeling (+bevel if necessary) > Material (as visual guide) > Rename. I'm not going to tell you to apply a material and rename the objects in every step, but note that I will be doing it. As you may know, there are several ways of doing any task in 3d, it's a manner of personal workflow. So if you prefer another way of doing something, by all means go ahead with it.
Let's continue with the walls, floor and ceiling. They are all in one single object, and obviously don't need any extra modeling as they are just planes. But what we can do is to apply the bevel so they are not completely sharp. Now, go ahead and apply a bevel modifier to it as we did with the box. The problem we have with this is that the bevel modifier, with the current settings, is going to bevel every single edge of the object, which we don't need. Therefore, adding faces to the scene (making it heavier) and in more complex objects, it could give some very weird results as you start combining modifiers.
We need a way to tell the bevel modifier to affect only certain edges. If you change the 'Limit Method' to 'Angle' on the modifier options, you'll get a slider box. Blender is asking you to set the angle that two meeting faces need to form in order to apply the bevel. If the angle is lower than the angle you set, the bevel will not apply. In our case, setting the 'Angle' to 89 will do the work.
But what if you want to tell Blender which specific edges to bevel?. We can do that with the third 'Limit Method': 'Weight'. This method allows you to hand pick the edges you want bevel. So go ahead and set it to 'Weight', you'll see the bevel we got by setting it to 'Angle' disappears. Press 'Tab' to go into edit mode and 'Shift' select all the edges you want to bevel.
Whit all the edges selected, press 'N' to open up the properties panel, and under the 'Transform' tab, you'll see a slider box named 'Mean Bevel Weight'. Set it to 1, and take a look at your model, you should see the beveling taking effect on the edges you selected. If for some reason you deselected them or you want to check which bevels are set to be bevel, you can go under the 'Mesh Display' tab in the properties panel and check 'Bevel Weights'. The edges with bevel weights are highlighted with orange.
Note: If you are coming from using another 3d software you might find this beveling process a little bit weird. The reason is that by the time I'm writing this tutorial, the currently stable version of Blender (2.62) doesn't support N-gongs and therefore it doesn't have a bevel modeling tool. But the good news is that main update on Blender's next release (2.63) is Bmesh, which is basically N-gongs support and a bunch of new modeling tools, one of them being the bevel modeling tool.
Let's go ahead and continue with the TV cabinet on the left. By now, the faces that form it belong to the walls object and we need to separate them. Press 'Tab' to go into edit mode and 'Shift' select the faces that form the cabinet. Press 'P' to bring the 'Separate' pop out menu and click 'Selection'. This will give you a new object only containing the faces you selected. It will also keep the bevel modifier on both objects.
Now select the TV cabinet object and make sure you rename it because it probably has some weird name as result of the separation. The detailing of the cabinet is pretty simple, press '0' on your Numpad to go into camera view and while in wireframe shading ('Z') use the photo reference to make as many loop cuts ('Ctrl' + 'R') as you need to define the holes in the cabinet, extrude those faces to make the holes, and then bevel the edges. You should have no problem with any of these tools by now.
Next thing we are going to tackle: the windows. They are all the same so we are only going to model one and then we'll duplicate it. I blocked them out as a cube, so if you did it the same way, start by making a loop cut that will define the width of the first window, and then delete all of the extra faces from our block. Repeat the process we did with the cabinet, using the reference photo, make some loop cuts, and extrusions to make the holes of the window.
Now we need to model the actual window frame. We don't have a good reference of it, but we can assume that it is just like every other window frame. Select all the inner faces in both the bottom and the top part of the window and hit 'E' to extrude. Then right click to leave the faces in the same spot. Press 'S' + 'X' to scale along the X axis to define the thickness of the frame. 'E' + Right click again, and then press 'Alt' + 'S' to scale along the normals to form the frame. Check on the side views to make sure it has nice proportions.
Let's make the little indentations on the frame. Press 'Ctrl' + 'R' to access the loop cut toll and position your mouse over the inner faces of the frame until you see the purple line. Scroll up on your mouse wheel until you have four of those lines and then left click to apply the loop cuts.
In order to make the indentations we need to select the faces we are going to extrude in. So select them on the top part of the window, press 'E' + Right click, then 'Alt' + 'S' to scale them in, and find a nice thickness for the indentations. Repeat the process on the bottom part of the window, and finally apply some bevel to the entire thing.
Note: If you are getting some weird results with the scaling, make sure your pivot point is set to 'Median Point'. You can find this options next to the shading modes on the 3d viewport header.
Now that we have our window modeled it's time for us to duplicate it. For that we are going to use the 'Array Modifier'. So go ahead and select the window, go to 'Properties editor' > 'Object Modifiers' > 'Add Modifier' > 'Array'. Make sure the 'Fixed type' is set to 'Fixed count' and under 'Relative offset' set the X value to 0 and the Y value to -1. You should see a duplicated model of the window right next to the one we modeled. Also set the 'Count' to the number of duplicates you need, 6 is working for me.
Let's continue with the chairs. That chair was designed by Verner Panton, he was a very influential designer of the 20th-century, so if you need more reference photos a Google search will give you a lot of material to work with. We are going to remodel the entire chair from scratch, and then we will substitute the blocked ones with the new one. First of all create a cube, erase 3 of it's side faces, and extrude one edge to make it look like a very simplified chair. Set the origin to the base, we'll need it there for the substitution.
From now on the process is very repetitive. You'll need to create more geometry with loop cuts and give it shape by moving vertices. Modeling is all about tweaking and tweaking, you can start by recreating the profile curves of the chair and progress from there.
As you keep adding detail, the mesh starts to get more dense, so be careful not to add more then what you really need. I could write a whole tutorial on modeling organic forms but that's not the point on this one, but I can say that is a matter of experience, so be patient and always compare to reference photos to get a nice form.
Once you are happy with the model, it is time to give it some thickness and make it smoother. For the thickness we are going to use a modifier called 'Solidify'. Select the chair and go to 'Properties editor' > 'Object Modifiers' > 'Add Modifier' > 'Solidify'. Set the 'Thickness' to something that looks good depending on the size of your model. For me 0.005 works fine.
Now for the smoothing we need another modifier. Go to 'Properties editor' > 'Object Modifiers' > 'Add Modifier' > 'Subdivision Surface'. You can change the amount of times the model is smoothed on the viewport in the 'View' slider input. Be careful with that, as the scene can get very heavy to work with.
Now it is time for us to substitute the blocked chair models with the finished one. We could just simply erase all of the old models and duplicate the new one as many times as we need, but we are going to do it in a much more practical way that will help you deal with bigger scenes. Let me explain you something first, in Blender, every object has it's own "object data", and one of the things this "data" takes care of, is the information of the shape of that object. Kind of like the "shape node" if you are a Maya user. The nice thing about this is that several objects can share the same object data, meaning that their shapes are going to be identical. If you change something about one model, the changes will apply to all of the other objects with the same object data.
If you are feeling lost stay with me for a moment, you will understand it better once we apply these concepts. By now, select the finished model of the chair and go to 'Properties editor' > 'Object Data', there you have the chair's data, saved under the name you see in the text input box in the beginning of the list. Change that name to something more specific like "Panton chair".
All you need to do now is to change the object data of the blocked chair models with the finished one. So select one of the blocks and go into it's object data, on the left of the text input box there is a little triangle icon, and if you click it you'll get a list of the objects data that exists in the scene. From the list, select "Panton chair" and you should see how the blocked model transforms into the finished chair. All you need to do next is to apply the Solidify and Subdivision Surface modifiers and you are good to go.
This process takes the origin as reference in both models, so it is very important that you set it to the base of both objects before you do it. This way you will make sure that the new model appears exactly in the same spot as the blocked one.
Another thing for you to be careful about is the scaling. If you scaled one of the models in object mode you are probably getting weird result when you change it's object data. So press 'N' to open up the properties panel and check the scale on the 'Transform' tab, if it is set to something different than 1 in any of the three axis, you'll need to apply the scaling. To do so, press 'Ctrl' + 'A', and on the 'Apply' pop up menu select 'Scale'. If you check again on the properties panel, the scale should be set to 1 and you shouldn't have any scale problems anymore.
Let's continue working, this time with the lamps. Select the one in the back, and delete the geometry that forms the wire, leave only the sphere and the base of the lamp. Apply a 'Subdivision Surface' modifier to smooth things out If you want, add some edge loops on the base so you can get some sharper edges.
Using extrusions work with the geometry from the top of the sphere to model a basic support for the sphere, a simple hole where it will be hanging. Now, select the vertex on the bottom of the sphere, duplicate it pressing 'Shift' + 'D', and move it to the center of the hole you just created for the lamp support.
Press 'P' and then click on 'Selection' to separate that single vertex into a new object. Just as faces and edges, vertices can be extruded. So go ahead and extrude it to form the wires and once you do it, apply a 'Subdivision Surface' modifier to it.
Note: You might want to put a couple of vertices very close to each other to get a sharper transition.
Now let's convert those edges into a curve. So select the wires object and press 'Alt' + 'C', then in the 'Convert to' pop up menu, select 'Curve from Mesh'. If you take a look at the Outliner, the object now has a curve icon next to it's name. I could have done this with curves from the beginning but I feel more comfortable this way, so if you feel that using curves you'll get a better result go ahead and experiment with them. Again, a matter of personal workflow.
Now let's give some body to those curves. Go into the 'Properties editor' > 'Object data' and you'll see that things are different around here. This menu is object sensitive, so it will change depending on the type of object you have selected. Into the 'Shape' tab, set the 'Fill” to 'Full'. Scroll down to the 'Geometry' tab and under 'Bevel', change the 'Depth' to something around 0.1, and the 'Resolution' to 2. You'll see that the curves are now tubes.
Once we have our wires, we are going to convert them back to a mesh. So repeat the process, press 'Alt' + 'C', then in the 'Convert to' pop up menu, select 'Mesh from Curve'. Finally 'Shift' select the wires and the lamp and press 'Ctrl' + 'J' to join them into a single object.
I'm going to stop the tutorial at this point, I think you are able to finish the scene by your own using the tools you've learned here, and I don't want it to get too repetitive as I would be using the same techniques. So jump into it, there is a bunch of detail you can add to the scene. I hope you had fun following this tutorial, if you have any question whatsoever please do not hesitate on contacting me. Have a good one.
- Create A 3D Floor Plan Model From An Architectural Schematic In Blender
- Model, Texture, and Render a Photo-realistic Kitchen in Blender and Yafaray
- Create And Render A Still Life Scene In Blender Using Cycles