Today I’m sharing another blender tutorial by Lech from chocofur.com. This time the focus is on modeling with Blender based on a photo, or photos. I’m familiar with this method in SketchUp. Never tried this in 3dsmax, and I think for all of you pondering about Blender, this is interesting. Let me know what you think?
This article is long! be ready for it 😉
Let’s start with…
Step 1 – Perspective Lines
To match the perspective in Blender, we first need to create some guide lines in a 2D application. I’ll be using Photoshop but this can be also done in Gimp. We start by creating “horizon line” defining on what height was the camera placed while taking the photo. This line can be found by looking at the picture and finding all the horizontal lines (window mullions, and doorposts for example) going parallel to the picture upper and bottom edges.
Now we’ll extend floor, walls and ceiling edges so they cross the horizon line. They should always meet in one or two joint points. You can also try extending the lines of other elements like tables, doors and windows. Using different colors will help you not to get lost in all this line work later in Blender.
Step 2 – Importing line work to Blender
Create a new scene and in 3D view press N button. Find Background Images toolbar on the right panel that popped out. Check the box, click Add Image button and then Open button to add the background image. As image axis choose Camera.
Next, set the 3D view to Front Ortho (Num1 by default) and add camera by pressing Shift + A. Go to the Render options and change the camera’s resolution to the exactly same one, as in the picture we’ve imported to the background. In our case, if you’ve downloaded the line work picture from this tutorial, the resolution would be: 960 x 638.
Step 3 – Camera placement
Now the hard part begins. Usually when matching 3D camera to photography you can check the EXIF data that camera leaves in graphic file. This data includes all the information about camera model,, lens, exposure etc. Unfortunately in our example we have to do everything manually…
Start with moving your camera slightly back and upwards from the scene center. Create a cube, scale it down and roughly check how it matches our default camera settings. Try editing the cube so its left and right faces would be roughly aligned with the green floor lines of the background picture. Copy the object and move it upwards trying to match the ceiling lines.
As you can see, our camera perspective looks totally different to the one from the background picture. Press dot on your keyboard and with your 3D cursor centered to the scene (Shift + C), select your camera and try rotating it slightly to the right..Edit your modified cubes so they look more aligned to the background.
Always rotate your camera, not 3D objects as it will become a nightmare to edit them later. Now they are perfectly aligned to the global X,Y,Z axes and try to avoid changing this at any stage of your work.
Step 4 – Camera lens options
As you’ve probably noticed, there can’t be much done just by rotating the camera and changing its position. Now we need to edit the focal lens and look for the value that would work best in our example. I’d personally recommend sticking to some of the industry standard lens values like 80, 50, 32, 28 or 24 as it gives us much bigger possibility of finding the correct one.
After working with the scene for a few more moments I’ve reached another limitation – although adapting the lens of our 3D camera to the one from the picture gets us closer, I have forgotten about one, very important thing – architectural pictures are very often manipulated in 2D applications for correcting their perspective. For more explanation, I suggest quickly going through this website.
As the shift lenses used for perspective correction are usually quite expensive, most photographers fix this issue in Photoshop. This makes our work even harder as we don’t actually know how the original picture looked like. However, Blender gives us cool tools to solve this problem. Select your camera and under the Focal Lens parameter, you’ll find Shift values. This enables us to remove both horizontal and vertical distortion.
Step 5 – Countless attempts
Equipped with the tools, Blender provides, we now need to try many different camera shift value/position/rotation variants. It’s actually easier said than to be done, but even for me, it took over 30 minutes to get the result I was satisfied with. Keep in mind that you may need to add another pieces of geometry to gain more guide points for your camera. Eventually, the settings I’ve used for the camera lens were:
Focal Length: 24, Shift X: -0.130, Shift Y: 0.080
As you can see, I’ve not only added the cube in the place where table is located, but I’ve also cut the window openings and doorways. All of these newly created guides allow me to better match the perspective.
Remember, you don’t need to match your camera in 100% as long as it’s only a still picture. Some minor differences will always occur and what matters is the final effect!
The process of matching 3D camera and photography was never an easy topic, but I’m sure you’ll finally get there after practicing. For more insights, you can download a blend file ending this part of the tutorial. Just log in to your free, chocofur account in the upper navigation bar.
The modeling topic has been divided into two, separate parts. In Basic Modeling I’ll try to explain fundamental methods of creating interior geometry elements such as walls, stairs, windows etc. I won’t be able to precisely describe every single model you find on the reference photography as the whole tutorial would become unreadable. However, by following the basic principles I really hope you’d be able to create everything necessary by yourselves. So, let’s get started!
Step 1 – Basic Scene elements
With our camera set up and some basic scene elements added, we can now progress to refining the geometry. I start by creating the staircase – actually it’s now pretty straightforward as we can just model sticking to the picture’s perspective. To make sure your stairway steps have similar sizes, try refining them more both in top and front view. Remember – our aim is not to re-create the picture in 110% but have a nice, final effect.
The lower steps were created from a plane mesh, extruded up and forward. The upper is just a cube mesh,, aligned by scaling and matching with the planks visible on the picture.
As you can see, With basic scene elements added, we no longer need the perspective guidelines. For better display you can also use Display -> Wire option under the Object Properties tab. I also suggest creating some basic materials and applying them to scene models (light brown for wood in our example). Just by adding and basic editing a few cubes, I’ve created wall on the left, part of the handrail and a doorway base under the staircase.
Step 2 – Working in Edit Mode
If the previous step wasn’t totally clear for you – don’t worry (and be happy). Here we gonna focus much more on ways of editing the geometry in Blender.
The best way of presenting different modeling tools will be creating a table model standing on the left. Let’s start with hiding all the other scene elements. Select cube representing the table and hit Shift + H. This will hide everything except of selected object. To unhide, press Alt + H These shortcuts work both in Object and Edit Modes. Press Tab to enter Edit Mode and switch to Wireframe view. Using Ctrl + R shortcut, create new edge loops matching the table shape.
Delete two front, non existing faces and select three bottom edges. Press E button and extrude them upwards, locking the vertical axis by pressing Z. To align the newly created faces height, press Shift + Tab to enable snapping tool. Change mode from “Increment” to “Vertex”, press G button to move selected edges, and hit Z again to lock the vertical axis. Move your mouse cursor to the left, upper corner of the newly created facet – it will automatically snap to the desired height.
AXES AND SNAPPING
Working with axes and snapping tool in Blender can speed up your workflow significantly. Axes allow editing objects in defined spaces which helps avoiding difficulties in later stages of work (bent faces, randomly placed vertices etc.). Each transformation (Rotating, Scaling, Grabbing) can be performed in X, Y, Z or two axes at the same time. For example, select any object, press S button and then Y to lock the scaling only to the Y axis. You can also transform objects in two axes simultaneously. Press G after selecting the object and then Shift + Z. This way we exclude Z axis from transformation.
Snapping can be enabled by pressing Shift + Tab shortcut or by clicking the magnet icon in bottom toolbar of the 3d view. Right to the magnet icon we can choose both snapping elements (Ctrl + Shift + Tab shortcut) as well as the snapping points.
Let’s leave the camera view for a moment and focus on the newly created faces (press Num dot for zooming to selected object). First we need to remove doubled vertices at the snapping points. The quickest way of doing this is selecting the whole model by hitting A button, then pressing W for Specials Menu and choosing Remove Doubles. We still need to fill the empty space under the table top.. Hold Alt key and right click on one of the edges to select the opening outline and press F to fill it.
Let’s return to camera view by pressing Num 0 key and create sink opening. Add new edge loops surrounding the opening and delete newly created face Alt + Right click to select the outline, E + Z to extrude four new faces vertically and F for closing the element.
This way we’re able to create simple shapes representing furniture pieces you’d probably have to build every time doing interior visualizations. It would be nice to add some extra details but first we need to learn little more about other modeling tools Blender has to offer.
Step 3 – Using Bevel tool
Bevel is a great tool for quickly adding subtle finishing to non-subdivision geometry. What the tool does is rounding the edges of your models so they look more natural and not so razor – sharp as a default, newly created cube for instance.
Bevel can be used both as a modifier added in Object Mode or a tool in Edit Mode (you find it after .pressing B under Specials menu). The choice actually depends on your needs – sometimes it’s good to have the ability to tweak the edge roundness level in every modeling stage – this is when a modifier would be a good option. On the other hand, there are situations where you just need to add some details to your geometry and this is when working in Edit Mode gives best results.
Bevel tool can be also used to split your edges into two or more parts. This trick will be very useful to us when learning subdivision modeling techniques in the next tutorial part.
Before we start finalizing our table, we need to split the table top from the bottom elements first. Let’s select our object and isolate selection by pressing / on the Numpad (this is another way of hiding/revealing objects in your 3D viewport). Switch to front view and enter Edit Mode. In vertex selection mode, select two top rows of vertices and press Y button to separate them from the unselected geometry.
What we’ll do now is “closing” the geometry volume so it has no “empty” faces. This is a bit boresome but necessary process if we want bevel tool to work properly. I don’t recommend filling the faces automatically just by by selecting the openings (Alt + right click) and pressing F key as this will very often generate some geometry issues. Instead, spend a few seconds simply selecting the edges and pressing F key for filling the spaces between them. This is also a good chance to practice extruding and using snap tool we’ve learned in the previous part.
Now continue and use the same techniques to close the volume of the bottom part of our furniture. Remember about the sink hole we need to keep in order to model additional details later. When finished, out two table parts should look more or less like this:
When you prepare geometry correctly, using Bevel tools is pretty easy and straightforward. Try adding a Bevel Modifier yourself and test different settings or enter Edit Mode, select all geometry and press Ctrl + B. By moving your mouse you can adjust the size of edge roundness and by scrolling your mouse wheel you define the edge subdivision number. Be sure not to set the edge rounding radius too big – use Bevel tool to create a subtle lines that would actually appear on real furniture.
This is how a finalized table used in our scene should look like:
As mentioned in the beginning of this tutorial part,, my intention was not to describe every single element’ modelling process but focus on the main methods and techniques used when creating basic interior furniture models. With knowledge I tried to present you should be now able to continue yourself and create objects like: walls, ceilings, missing construction elements, windows or detailed kitchen furniture.
On this stage of scene modeling it’s also important to keep an eye on tiny details which may not seem important at all,, but will have a big impact for the final look of our interior. These are for example: floor strips, window and door handles, etc. Before starting subdivision modeling, our scene should look like this:
I think it would be good to shortly sum up all the information before we close this part.
Simple modeling techniques shown in this tutorial can be basically used for the following purposes:
- creating objects such as walls, ceilings, doorways or windows
- construction objects like staircases, handrails and construction elements
- technical objects that don’t require very much details and have straight,, even shapes
- basic furniture like kitchen table tops or hoods
When using Bevel tool for finalizing your models, remember about this few rules:
- objects should have closed volumes which means no empty or open faces
- avoid doubled edges or vertices except within a single, geometrical mesh
- use Ctrl + N after selecting all of your faces to re-calculate object’s normals
- reset the scale of your objects by pressing Ctrl + A and choosing either Scale, Rotation or both
I think what should be also added is to never get discouraged if you don’t manage to create the model you want, trying for the first time. Modeling and 3D graphics in general require some experience and practice before you get more intuitive and comfortable with building stuff around. What I would personally do would be picking up some random, not complicated objects around me and try re-creating them in Blender
A blend file with our current scene progress can be downloaded after logging to your free, chocofur account in the upper navigation bar.
Subdivision Modeling I
Subdivision modeling is little bit more advanced and universal technique of creating 3D models and that’s why I’ve decided to cover it separately. There are many objects around us which have curved, organic and uneven shapes. Let’s take vases from our sample picture – they consists almost only of very smooth, round surfaces with no straight, technical lines like the kitchen table from previous tutorial part. This is why we need a bit different approach to modeling and I’ll try to describe its basic principles below.
Step 1 – Shading types
Shading type defines the way Blender will display our 3D object both in 3D viewport and during the rendering. Flat Shading type was used by us in the previous chapter and works best with simple, not very detailed objects. Rounded edges are small enough so we don’t actually see their angularity which is the main drawback of this shading mode. The other alternative is “smooth” shading, but it makes straight, technical geometry looks buggy.
There are two ways of solving this problem. First is adding an Edge Split| Modifier – what it does is splitting your model into different parts, (still within one object) depending on the face angles. This may work for non important, second plan details in your scene you probably need to build up quickly, however it shouldn’t be used on bigger, more visible or important objects.
Second way is a bit slower but much more reliable and it’s about adding new edge loops close to the existing geometry edges – this is what we actually call “Subdivision Modeling”. The biggest advantage of this method is the fact that every model created this way will keep its actual shape, even if we add Subdivision Surface Modifier (which is not always working with Edge Crease technique and that’s the reason I won’t be covering it in my tutorial). Preparing your models this way also ensures that they will always work correctly, no matter in what 3D software you’re going to use them (after exporting to obj format for example).
Subdivision Surface will be described more briefly in the next step, but I’d suggest spending just a few minutes on trying different geometry and shading types yourself. While in Edit Mode you can also assign different shading types to individually selected faces so your model has both Flat and Smooth Shading. However, keep in mind that changing the shading type later in Object Mode will overwrite all the changes you did.
Matcaps are pretty new feature added to Blender. They allow you to change between different shading previews available for selected objects. Just press N while in 3D View and under the Shading tab switch on the Matcap option (you must be in Standard Shading mode). You can currently choose from 24 different shading algorithms.
After going through the previous chapter you may ask yourself – why not just use Bevel tool to round the edges and then turn the Smooth Shading on? The problem is that Bevel tool changes original positions of the starting and ending vertices of your selected edge. Even with Smooth Shading, applied, we still need to add additional edge loops that would fix the shading issues.
With all the basics described. let’s now get deeper into learning “Subdivision Modeling” techniques. As I mentioned few paragraphs earlier, I still recommend trying and testing described techniques yourselves. You can use the most simple geometry types such as the ones I’m showing in my examples, or try creating some basic furniture models and see how they behave with different shading types and modifiers applied.
Step 2 – Sink modeling
Let’s continue with our table model we’ve started in the previous part. Center your 3D cursor over the sink opening and add a default cube. Scale it so it fits the hole and delete the upper face. In Object Mode, add Subdivision Modifier with at least 2 or 3 view subdivision levels.
Go to Edit Mode, add 2 new edge loops (Ctrl + R and mouse scroll for defining the loop amount). Accept with Enter and scale them in one axis towards the cube borders . Repeat on the other sides of your model.
With table model unhidden, I’ve adjusted shape of the sink so it fits the geometry better. It was also too deep so I had to change that. Now, without leaving the Edit Mode, select the upper edges and extrude them once outwards (just press S and scale outwards after extruding) and once downwards to create the rim. Add one more edge loop so the upper part of our sink doesn’t intersect with the table.
This is our very basic, subdivision ready shape but we still need to tweak it. As you’ve probably noticed, what Subdivision Modifier actually does is generating new edge loops between our existing edges and loops we create in Edit Mode. If the surface is curved, the distance between vertices or edges defines how smooth or sharp the curvature will look like.
To explain it a bit better let’s simply continue with our sink model. As you’ can see, now it looks too even and technical which doesn’t correspond to how real sinks look like. Let’s start changing this by selecting our bottom faces and scaling them down in Y and X axes.
By pressing Ctrl + R add a new edge loop running along the side faces. Without deselecting it, press Alt + S to activate Shrink/Flatten tool. Adjust newly created loop so it gives the sink nice curvature visible in the side view.
By adding new edge loop and shrinking it we’ve changed our mesh topology, especially in the corners. To fix this, select three bottom faces and scale them in one axis, so the edge loops running around the corners look more even. Repeat this for the other pair of edge loops.
In the next few steps I will be still working on the sink geometry – this includes an overall shape as well as keeping the topology even enough so Subdivision Modifier generates nice looking mesh. At this point it would be also good to enable Smooth Shading as it gives us a better preview on rounded surfaces. You can follow my steps shown in the next picture but I would suggest using them more as a modeling reference and trying your own ways of creating the sink. You should already know some of the modeling techniques and it’s a good opportunity to test them.
Step 3 – Pipe opening and mesh cleanup
In this step we will be adding sink strainer opening in the bottom of our sink. One way of doing this could be using Boolean Modifier, however this usually generates messy meshes and should be avoided for precise modeling. The modifier is briefly described in the last part of my tutorial,. Now, let’s focus how we can cut round, precise opening the easiest and most proper way.
As I mentioned earlier, what Subdivision Modifier actually does is generating new faces and edge loops between the ones already created in Edit mode while Subdivision Level defines the amount of newly created geometry. If we “apply” the modifier, all of the new faces and edge loops will be available for us to edit when we switch back to Edit Mode. Since our current model looks pretty simple, we definitely need to apply Subdivision Modifier with Subdivision Level set to 1.
After applying Subdivision Modifier, your object may have quite a lot of new edge loops generated. Some of these are necessary for a proper model look while others could be removed for better performance. This is especially important when creating models that will be distributed around the scene hundreds or thousand times for example: chairs in conference room. I would like to show you few quick ways for optimizing your 3D models and having a nice looking, clean meshes.
Method one: Merging Faces
This is the most simple yet sometimes very effective way of optimizing your geometry. Since version 2.6 Blender supports N-vertical surfaces, however, I personally recommend keeping your geometry only quads and triangle based. By this you’ll avoid many issues occurring especially in subdivision modeling. Keep also in mind that your quad surface has to be non-convex in order to avoid shading problems.
Method two: Using Merge Tool
Please note that this method works only on flat surfaces – merging vertices on rounded faces will produce shading and smoothing errors.
Method three: Collapsing edge rings
A great and fast way of optimizing your geometry, especially when you need to avoid big curvature changes.
Method four: Deleting Edge Loops
Another great way of reducing unwanted geometry. You only have to be careful with deleting edge loops on subdivision applied models as not all of them would be “closed” ones. Closed edge loop means it has no starting or ending point and goes through the entire geometry – however if your model has many of these generated next to each other, you should definitely remove some of them.
Cleaning up the mesh geometry may by a bit time consuming especially when you apply the Subdivision Modifier with high Subdivision Levels like 3 or above. What I recommend is always applying Subdivision Level 1, optimizing the geometry and then, if needed, adding and applying the modifier again.
Above you can see the result of spending few minutes in order to optimize and tweak the sink geometry a little bit. With this we also close this tutorial part.
Subdivision Modeling II
In this part we’ll continue modeling sink and some other scene elements. You will learn a bit more about proper subdivision modeling and I will also show you how to create more complex furniture pieces basing on the photography and correct camera placement. Let’s move on!
Step 1 – Sink strainer
Creating a dust strainer for our sink will be a good chance of reviewing everything I’ve showed you in previous tutorial parts. We start with a basic circle mesh and all we do is just extruding and scaling. It is good to have some reference pictures as usually the result based on the existing element looks more realistic, but you can also try doing it spontaneously.
The strainer consists of two elements – the outer part covering the pipe exit and the middle metal part. Center the cursor by selecting proper edge loop and pressing Shift + S. Choose – Cursor to Selected, add basic circle and follow the steps below:
Here’s another thing you should know about Subdivision Modeling. I’ve already described the differences in flat and smooth shading, using Bevel etc. What I didn’t cover were 2 types of edge loops you use for defining your geometry. With Subdivision Surface Modifier, a single edge loop defines your model’s geometry. However, the way Smooth Shading works with models like this is not always correct which can be seen on the left cube below. What we need to do is adding another edge loop between model’s actual edge, and the loop we’ve added for defining the shape. This second edge loop is responsible for correct shading only.
It is also important to know that during geometry optimization, all merging operations should be applied outside the range of two edge loops described above. Again, the reasons are shading issues appearing when triangle faces aren’t separated from the edge loop defining the shape of the model. Separating them with additional “shading” edge loop always fixes the problem.
Step 2 – Tap modeling
So with all the knowledge we already have, there shouldn’t be any problems with creating objects like simple tap. The only thing you may wonder about is how to create a curved pipe element. We will use Spin tool for that and you can access it by pressing T button in 3D viewport.
Basic tap model is ready so let’s now try creating something more advanced. The other tap on my reference picture has a spring element which is a good example for learning another modeling technique. Follow the steps below to learn how you can model spring elements in Blender.
Again we start with creating simple circle mesh with 6 vertices. What we will use now is the Screw Modifier. Add it to the circle and change the “Screw” value to 10. You’ll notice how the model extrudes upwards. Enter Edit Mode and move the circle equally along X and Y axes. You’ll notice how the element starts looking bit better. What we need to do now is rotating the circle either in X or Y axes. Additionaly, rotate the circle 45 degree in Z axis so it’s positioned symmetrically towards 3D Cursor. Adjust the Screw value a bit more so the spring segment looks decent and change the Steps value to 8. This will prevent our model having too many faces.
Now with the basic shape ready, let’s add Array Modifier. What it does is duplicating any geometry the way we define it in the modifier settings. Let’s duplicate our spring several times.
So far so good but we still need to bent the spring around the tap. Actually, it doesn’t have its pipe element ready either. To create it, we’ll use Curve Object. Press Shift + A and add Nurbs Curve. Enter Edit Mode and by pressing E button Extrude its ending so we can adjust the curvature more precisely. Try forming the curve by editing its points so it looks similar to the background camera reference picture. It is also important to enable Endpoint U option under Active Spline tab, so our shape would be generated starting and ending vertices.
Now we can create the shape of the pipe. By editing curve’s settings in the properties window, we can define its thickness and tweak the complexity of its geometry. Start with changing the Fill setting from Half to Full so that our curve would generate full, circular mesh. With changing Preview U setting you’ll increase the density of geometry generated by the curve. To add thickness, change Depth parameter under the Bevel options. You must also increase the Resolution so the mesh looks more smooth.
Let’s now try wrapping our spring model on the newly added pipe. Add a Curve Modifier to the object and be sure it’s listed below the Array Modifier. Click on the Object text space and choose the curve we’ve edited minute ago. Now, don’t be afraid if your spring models goes wild – try moving it closer to the curve. If you see no improvement, try changing Deformation Axis from default X to any other available. After a few seconds of moving your spring in 3D space you should be able to find a correct spot where it has to be placed to cover the curved pipe perfectly.
The pipe and spring are ready, but what’s missing is actually the rest of the tap model. Create it quickly either basing on reference pictures or your imagination, using all techniques from this and previous tutorial parts. Below, you can see modeling steps with short descriptions.
Step 3 – Barstool modeling
Creating the white barstool standing on the left in our reference picture will be the final test of all the techniques you should have learned so far.
Sometimes you may come across nice looking furniture piece and would love to have it in your 3D models database. However, finding the author and blueprints may be very difficult and that’s why it’s important to know the techniques of modeling using photo references only. Final model may not be perfectly precise but it’s not a problem as long as it looks good in general.
In our example, camera is already matched so let’s start with adding simple plane object. Press G, exclude the Z axis (Shift + Z) from the operation and move the plane till it matches the barstool position on the reference picture. Scale the plane in X and Y axes so it fits the bottom metal elements of the stool. Now extrude the plane upwards and scale it again so the newly created shape follows the metal parts of the chair. Duplicate the upper plane and extrude one of its edges, matching the seat element on the reference.
We start with modeling the seating part. Move the whole object a bit left so it matches the reference better. Separate the seat from the bottom part of the stool and add Subdivision Modifier. Set Subdivision Level to 2, enter Edit Mode and add two vertical edge loops. Scale them in X Axis to quickly define basic seat shape. Next, add few horizontal edge loops and model the seat element by scaling and moving, basing on the background reference. You can change the camera view to Perspective / Orthogonal or Side View to make sure if the seat has correct, good looking shape. Remember to preform all the transformations in Global X, Y and Z axes. This will help you avoiding any unsimilarities in the model.
Apply the Subdivision Modifier with Level 1 and enter Edit Mode to check newly generated loops. Delete one half of the mesh so we can duplicate and mirror it later. Let’s focus on one of the corners and improve its topology. Follow the steps below and notice how you can use the Knife tool for editing your geometry. Repeat these steps yourself on the opposite corner of the seat.
Now, with the corners nicely done we’ll learn how to quickly mirror objects in Edit Mode. Mirroring can be also applied in Object Mode using Mirror Modifier but I personally don’t like doing it this way. The modifier is easy to use and you can try it yourself in other situation.
The shape is slowly getting there and what’s still missing is the thickness. Similar to mirroring, we can either solve this in Edit or Object Mode. There’s Solidify Modifier available, but I’ll apply my changes in Edit Mode. Just follow the steps below:
What I’ve purposefully omitted was some profile adjustments our seat definitely needs. Right now it looks straight and plane – this would be very uncomfortable to seat on. Editing geometry with many vertices can be troublesome but Blender gives us another amazing tool which is Proportional Editing. By pressing O in Edit Mode you can now preform all your transformations not only on the selected Vertex / Edge / Face, but also make the surrounding geometry follow the transformation. The result is similar to editing geometry with Subdivision Modifier added, however with Proportional Editing you’re working on actual geometry which is not generated but already available in Edit Mode.
Proportional editing is an option available in Edit Mode, (just press “O”) allowing you to modify the mesh in more “organic” way. What happens is that while editing selected elements ie. vertices, the others placed nearby will follow the transformation. You can quickly change the “falloff” radius by scrolling your mouse, as well as the transformation types (smooth, sharp, linear etc.)
Let’s continue and create metal legs. Select base shape we started with and center 3D Cursor on its bottom plane. Add a circle with only 6 vertices, rotate and scale down to the proper size. Start extruding and using the same techniques as with sink model, spin the ending of the element to achieve the desired curvature. Extrude upwards and repeat the process on the other side.
Now we need to bend the metal element in other axis. Align it to the base shape and center 3D Cursor on top of one of the pipes. Spin the vertices using Screw tool again. Adjust the shape and use scaling to flatten the newly created vertices in X axis. Extrude and select the straight mesh segment. Change the view to the side and activate Proportional Editing. All you need to do now is aligning the geometry to the seat. Repeat the whole process on the other side.
Final steps with our metal elements were just mirroring, adding foot holder and plastic covers on the ground. All of these are very quick to create so I won’t be describing the process. It was a looong way getting here but you can be proud of yourself if you followed all the steps carefully. I’m pretty sure that from now on, with some practice you’ll be able to create your own, beautiful furniture models!
Let’s sum up all the information before finishing the modeling part of the entire tutorial. Modeling and subdivision modeling ale very large topics and of course I wasn’t able to cover all methods, techniques and problems. You may want to check Part 10 of this tutorial for few more useful tricks on modeling. Simple modeling techniques described in Part 2 were good for basic, technical objects like walls, ceilings, simple stairways etc. Subdivision modeling is different to that and should be mostly used for:
- creating precise shapes with many curvatures
- detailed and well exposed objects that need proper geometry
- furniture elements like chairs, stools etc.
- models you may need to export and use in other software
As I mentioned earlier many times, the key to your success in 3D graphics is constant practice and looking for new opportunities to developing your skills. It is very likely that your first attempts in creating subdivision ready 3D models may not be as successful as you’ve imagined, but never get discouraged only because of that. No one was ever born a 3D artist or modeler and I’m sure if others can develop the skills and techniques, you can also do it!
Models you find in 3d scene aren’t 100% accurrate to those in the tutorial as I was creating them separately. It was not possible to make them identically, but the methods were the same A blend file with our current scene progress can be downloaded after logging in to your free, chocofur account in the upper navigation bar.
Building amazing 3D models is just a part of making digital scenes look real. Models without textures are the same as having black and white picture of a beautiful painting – you may see the shapes and forms, but have no information on the colors. In 3D environment, before you apply texture to the model,, you need to create UV mapping which will define the way of displaying any image file you”d like to view on the actual 3D surface.
To quickly give you the basic understanding what’s UV mapping all about, try imagining a candy wrapped in a paper. This paper will probably have some kind of label and graphic imprinted. You can imagine how hard would it be to print the graphics on the paper while being wrapped on the candy – what you’d normally do would be “unwrapping” the paper so it;s plain and straight and printing the graphics only then.
In short, this is exactly what UV mapping is all about. Before you put a texture on any object in 3D space you must make its geometry perfectly plane. This is because texture images are just a flat, surfaces and every 3D shape has to be transitioned to two dimensions as well. It may seem a bit confusing but try recalling geometry classes you had in school. You probably did an excessive with building a paper cube model and drawing its “mesh” before cutting out? This is another example of how UV mapping works.
With all that being said I’m sure you’ll now follow the techniques I’m using in Blender to UV map 3D models so they display various textures correctly. Before we continue I’d like to mention that again, I won’t be covering how to UV map all the scene elements as it would take too much time. Instead, I’m focusing on the main techniques and these can be easily implemented in almost every environment or element.
The fastest way to start will be just adding the most simple objects and trying to UV map them. Create basic cube and enter Edit Mode. Select all the faces and hit “U” button. An UV Mapping list will pop up and you can see many different mapping methods available in Blender. Select the first one from the top which is Unwrap. As you see, nothing changes in 3D viewport since our UV map will be displayed in other working space. Open UV/Image Editor and see how your newly generated UV map looks like.
There are many UV mapping methods but I’d like to cover only the ones I use most often. After finishing this tutorial part I strongly recommend you to trying them all by yourself. Let me now describe one of the easiest and most commonly used UV mapping methods.
Step 1 – Project from view
Project From View is very easy and fast method of mapping your geometry. What it does is “projecting” the current viewport situation to UV/Image Editor. No matter if you’re in Perspective or Orthogonal View, Top, Side or random camera position – Project From View will always map what’s visible in Edit Mode.
Create a simple cube and enter Edit Mode. Rotate your viewport in Perspective mode to any location, select all geometry and press U button. Choose Project From View and see how your UV/Image Editor updates. Now, switch to Top View and repeat the operation again. See the updated UV Editor.
What’s important to know from the very beginning is that all UV mapping operations are applied only to the geometry elements selected in Edit Mode. Unselected faces won’t be affected by UV mapping operation and this gives us an opportunity of mixing different UV mapping methods – we can apply Project From View on some of the faces and Unwrap the others.
Let’s now UV map something relatively simple – ground, floor plane in our interior. Hide all elements and leave the floor only. Switch to Top View and enter Edit Mode. Press U and choose Project From View. Let’s see the update in UV/Image Editor and check if anything changes after loading the image texture. As you can see below, our UV mapping has slightly deformed and that’s because the projection was done for default, squared size map layout. For instance if we had 4096 x 4096 texture map, no deformation would appear. To fix this issue, just Project From View again.
Everything seems to be correct but it would be nice to have a preview of our mapping and texture in 3D viewport. To do so, we need to create a basic Cycles diffuse shader. Add Image Texture node, connect it as a color input and load the wooden texture file. After that, you just need to change the Viewport Shading mode to Texture.
As you can see, wooden planks are way too big and we need to scale them down. You already know 3 basic transformation types: (S)caling, (R)otating and (G)rabbing – all of these work in UV/Image Editor as well so simply scale up our UV map so it looks correct in the viewport.
Another thing worth mentioning here – I personally prefer doing all UV mapping operations on the actual image texture that will be applied on the final model,. To preform UV map scaling beyond texture’s 2D layout borders you’ll need a tileable one. You can either download the floor texture used above or use some of the textures included within our free model samples. Just log in to your chocofur account in the upper navigation bar and browse the free files.
Step 2 – Unwrapping
In this step I’ll describe another very common and probably most recommended method of UV mapping which is Unwrapping. This is the method most closely related to the candy and box examples described in the introduction to this tutorial part. Since candy paper isn’t this hard to map as a plane object (we could even use Project From View method), for box model we’d need to specify where exactly should it be “cut” so the geometry can be unfolded and flattened to 2D surface.
As you know from the previous step, we can only UV map geometry selected in Edit Mode. This can be very helpful in Unwrapping more complex shapes as we can simply select the parts we need, hide them after Unwrapping and continue with the rest of geometry. Take look at the example below:
Another way of Unwrapping is adding seams to the geometry. This method precisely specifies where the mesh should be cut though by the Unwrap tool. The main advantage of adding seams is that whenever you decide to Unwrap the model again it will preserve its previous UV mapping. This won’t unfortunately occur if we just Unwrap the model by selecting the faces as in the previous example…
Step 3 – Tips and tricks
1. CORRECT OBJECT SCALE
Very often the UV mapping result will be different to the actual geometry visible in 3D View. One of the main reasons is scaling and rotation transformations applied to the model in Object Mode. To fix the problem just select your geometry in Object Mode and press Ctrl + A. Now choose “Scale” or “Rotation and Scale”. By this you’re resetting the transformation of your geometry and the UV mapping should work fine now. If deformations still occur, resetting the UV mapping may be also helpful. While in Edit Mode, select all the geometry, press U and select Reset.
2. PACKING AND BORDERS
Sometimes it is necessary to keep all the UV elements within the texture space in UV/Image Editor. This is required for example while preparing models for game or real time preview engines. To quickly “pack” all your UV elements, keeping their actual scale and size relations, just select all and press Alt + P shortcut. You can also define the “border” size separating each UV element. Check the default Toolbar (T key in 3D View).
3. CONFORMAL / ANGLE BASED UNWRAPPING
There are two Unwrapping methods – Conformal and Angle Based. First one works best with technical shapes like tables, chairs etc. Angle based method is recommended for organic types of models. You can switch between them on the fly after applying the Unwrap in Edit Mode. To access both unwrapping methods just press F6 in 3D View or find the right tab in the Toolbar hidden on the left (press T in 3D View).
4. EVEN UV SIZES
When using Unwrap mapping method, it is really important to keep the scale of all your UV maps uniform. To do this, select all elements while you’re in UV/Image Editor and press Alt + A shortcut This will automatically apply uniform sizes and proportions to all geometry faces.
Step 4 – Other mapping techniques
Here I would like to quickly describe two other UV mapping techniques I personally use. One of them is Box Projection method. What it does is kind of automatic unwrapping basing on the model’s X, Y and Z axes. It’s also similar to applying Project From View on the selected faces but from top and sides simultaneously. The results are pretty good, especially on the objects that aren’t this much exposed to the camera and we don’t want to spend too much time on mapping them precisely.
Second and similar method is Smart UV Projection. The difference lies in generating the UV mapping basing on the differences in model’s face angles. You can also use it for not this important, background objects.
Step 5 – Paimio Chair mapping
Let’s now try UV mapping one of the free models available in chocofur store. I’ve chosen Paimio Chair as we will learn one more technique which wasn’t described yet – pinning and aligning in UV/Image Editor. I will focus on describing the main furniture element which is a bent seat. All the other parts can be mapped exactly the same way.
Start with adding seams along the main edges, separating the seat surfaces from the sides. Repeat on the openings in the upper part of the mesh. If you switch to Face Select mode and hit L button pointing your mouse cursor at any surface – you’ll select the geometry separated by seams. Use this to select two main surfaces and Unwrap them. Next, add additional seams on the remaining side elements. Cutting them in one place won’t be enough as the generated map will be very long so I suggest adding 2 cuts around the corners. Unwrap these elements as well.
Select one of the side elements and hide the others (Shift + H) for better preview. Enable the “Live Unwrap” option in UV/Image Editor from the UV menu. Select vertices on one of the endings and press P. You’ll see red dots appearing – this means that current selection has been pinned to the UV layout. Rotate pinned vertices so they look straight in Y axis. You should see the rest of the UV map following the rotation. Now select the vertices on the opposite end and repeat the process. The UV map will get very distorted while rotating the points but don’t worry – try moving them to the other end of what should soon be a straight and even UV map of the side chair element. For better editing select other vertices in the middle of the element, Pin and aligning them straight as well.
As you can see in the slideshow above, what needs to be done is the UV point alignment. Turn off Live Unwrap and select the upper vertices by Alt + Right clicking (same as edge loop selection in Edit Mode). Press W and align the selection in Y axis. Repeat this step for other loops until the whole element looks straight.
Using these techniques allows you to UV map all the remaining parts of the chair. What I usually do by the end is selecting everything in UV/Image Editor, applying uniform scale by Alt + A, “packing” the elements next to each other by pressing Alt + P and finally scaling the whole layout up a few times so it looks good in the viewport.
Before we end this tutorial part, I;d like to give you a few more tips on Unwrapping more organic models like sofas or couches. Using the methods described above you should have no problems with Unwrapping any furniture model like chair, table or sideboard. The aproach you need to take with sofas or couches is a bit different but in my opinion easier to adapt. What you actually need to do is creating the Edge Seams exactly where they would appear on the real furniture. As you know from the introduction – UV Mapping is 3D geometry projected to 2D surface. With sofas and couches It’s actually the same as real life – you get a plain, fabrics and “wrap” them on the furniture frame. The fabric has to be cut and sewn so the seams are visible. This gives us an idea how we could repeat the process in 3D environment.
Below are few examples of furniture models I’ve prepared for chocofur store. As you can see, Edge Seams are placed where they would actually appear on the existing furniture. Best results can be achieved when you also rotate each UV map so the texture follows the fabric direction.
To conclude this tutorial part, I think it would be good to compare all the UV mapping methods we’ve learned. Each one of them has its advantages and best use scenario so choose what’s the most suitable for you.
1. Project From View
A good starting point to UV mapping as this method is quick to follow and very usable when applied only on selected faces. Good for basic models and construction elements like walls, floors or ceilings.
2. UV unwrapping
Great for precise, correct UV mapping that will probably work in every situation. It takes some time to learn and may be a bit time consuming but the results are worth of it. Works with every geometry.
3. Box projection
Quick way of doing rough and decent looking UV maps on elements that won’t be very visible. Easy to learn and can save you a lot of time when mapping small details. Not recommended on oval and rounded shapes.
4. Smart UV projection
Same as Box Projection but gives you a bit more control over the mapping results. UVs are generated basing on object’s angles so this method can be sometimes used for oval and rounded shapes.
As always the best and fastest way of learning each method is just trying it by yourself. You can download some of the free models from our store and practice the techniques on existing furniture examples. Of course you can also buy some models if you find this tutorial helpful and would like to donate for our further development 🙂
Good luck and happy blending!
Shaders & Textures
We’re in the middle of tutorial and by now you should be able to build your own furniture models with proper UV mapping. In this part I’ll try explaining how to make your work even more alive by creating realistic looking shaders. Of course I won’t be able to cover every aspect of this wide topic but I’ll try explaining some of the cool tricks and techniques I use personally in everyday work.
First of all, let’s make a short clarification about the words we’ll be using. What I understand as “material” is an existing, specific kind of surface that can be distinguished by it’s color or reflectivity. This refers to real life objects and properties in general. “Shader” is CG version of real life material. It can have similar properties and can be freely adjusted by user. “Texture” or “texture map” is a bitmap file that we’ll be using for creating our shader color, adjusting its reflectivity or bumping its surface.
I’ll try showing you how to re-create most common material types such as glossy surfaces, glass or common metals. What I also find necessary is explaining the philosophy of shader building process in Cycles since It’s a bit different than in other rendering engines on the market. With this knowledge I really hope you’d be able to do your own experiments and create realistic looking shaders.
Step 1 – Basic material principles
When looking at any surface, your brain automatically interpreters it and correlates to what you already know and have experienced in life. For instance, you can spontaneously assign temperatures to different colors where red would represent something hot and blue being cold. You’d also think of concrete surface being rather matte while metal being shiny. It’s helpful in everyday life as our brain doesn’t have to analyze everything it sees, however it makes it more difficult to understand what you actually see when looking on a certain material. What’s the actual color of chromed surface? What’s the reflectivity difference comparing it to other metals? What’s causing the surface imperfections – tiny bumps or material being more matte here and there? These are the questions you’d have to ask and know the answers when re-creating real life materials in any CG software.
In CG world “diffuse” or “color” is a term for what we usually understand as a real “color” of the material or particular surface. It is also strongly correlated with mate, non reflective objects as they seem to look neutral no matter of the surrounding environment. We can easily distinguish the color of orange fruit, having more problems describing shiny metal. However, keep in mind that in real life, all surfaces are reflective and purely “diffuse” materials don’t exist.
I think reflectivity is the most important factor if you wan your shaders and models look nice and realistic. As mentioned earlier, in real life each material is reflecting the environment in more or less noticeable way. Different materials vary according to their “diffuse” color or texture and they can also have different reflectivity. In CG world this attribute is controlled in various ways and I’ll explain it more closely in practical examples later on.
As you can see above, creating a basic, reflective shader comes just from mixing two different material properties in the desired proportions. However, materials like this don’t exist in real life as the reflectivity always differs depending on the viewing angle. This is the most important factor very often omitted by inexperienced 3D artists.
Depending on the software, there are different ways of controlling reflectivity angle effect but let’s first try to fully understand what is it all about. Make your own observations in real life – try grabbing some objects around and look at them from different angles. You should notice how the reflections change when looking at the surface directly straight and then going closer and closer to zero degree.
In the example above, reflections are dependent to the surface curvature. Building your shaders this way gives much more convincing and realistic results. What you can also observe is not only the reflectivity change depending on the surface / viewing angle (best visible on the left and middle models). It is also the general reflectivity of the shader being changed. Still there are more reflections visible on the edges, however on the right example the center part of geometry gets more reflective as well.
It is also worth mentioning that reflections can have different colors. For most non metallic surfaces the color will always vary from white to dark grey. Metals such as gold or brass will have tinted reflections in the middle section, becoming purely white on the edges and low angles. In the examples below, shader is 100% reflective even if the color tint makes it look a bit like diffuse + reflectivity mix.
Shading roughness (also called glossiness or hardness) can refer both to the diffuse, reflection or transparency properties. By changing this attribute we can make our reflections more blurry, glass shaders more “foggy” and diffuse surfaces more light absorbing. Same as with reflections, glossiness also changes depending on the viewing angle, however not for purely diffuse or glass shaders.
The above example shows shader with the same reflectivity value (more reflections on the edges but same amount in the middle) with three, different roughness settings. At this stage reflections are blurred evenly no matter on the viewing angle. Please note that right example looks definitely matte but is something totally different than clean, diffuse shader we’ve discussed earlier.
The example with blending reflection roughness can be treated as a “base” shader for all non-transparent and non-metalic materials you’d like to re-create in CG world. Unfortunately there aren’t any universal settings that would look good in every environment, but the shader presented above can be easily adjusted and adapted to many situations, always giving nice looking results. Viewing angle roughness change may be considered as a very subtle effect, but it will add great amount of realism to your scenes and 3D models.
Roughness / glossiness does not always referrer to reflections only. You can use this parameter to re-create blurry or “foggy” glass materials as you see in the picture above. For diffuse shaders, roughness allows you to increase the amount of light being absorbed by the surface.
Bump / Displacement factor
Bump and Displacement factors are used for adding physical imperfections to your shaders like cracks, scratches, tile fugues, joints. Sometimes it is necessary and easier to add details like this by simply modeling them or sculpting onto the surface. However, properly created displacement textures can also make miracles.
For creating bump effect you always need either image based texture or procedural one like noise for instance. A common mistake with using bump is setting its value too high and mixing it up with the reflection roughness as this can be also simulated using image texture. What I do personally is setting my shader’s reflectivity first and then adding surface bumps. They should simulate only minor physical imperfections like scratches or small cracks. For “deeper” and more distinct surface details I suggest using displacement textures.
Besides bump and displacement, we can also use “normal maps” however I’m not a big fan of these for several reasons. First of all, the final effect is only slightly better to regular bump and still very far from using displacement. Second, to create normal maps we either need to generate them in external software or use some additional plugins which takes time (and I’m quite a lazy person). Third, normal maps look totally different to reflection, roughness or bump textures which you’ll be using regularly for building your shaders. All of these use only black and white values which can be mixed together for achieving different results – normal map uses colors which eliminates it from any other use than generating surface bump. Last but not least – normal maps aren’t so easily adaptable to different rendering engines, giving different results depending on used gamma settings for example. This makes work even more troublesome if you’d like to quickly adapt and test your 3D models or scenes in other applications. However, if you’re looking forward to creating detailed real-time animations or game engine models, you’ll have to know how to properly handle normal maps.
When writing this article, displacement effect wasn’t still fully implemented within Cycles shading / material system and the only officially supported way of achieving it was using the Displacement Modifier. This topic will be covered more deeply in next tutorial part about creating the environment and adding more details to your scenes.
Step 2 – Cycles shading system
Cycles material system is quite unique comparing it to other rendering engines available on the market. Despite of giving user a pre-made shaders with some basic adjustments available (diffuse color, reflectivity and glossiness values etc.) it allows us to create shaders basically from the scratch in a way we really want to. This means we can either try simulating physically based materials or creating something that would never exist in reality.
Speaking of physics, it is very common that people try achieving as physically correct results as possible, assuming that’s the secret “key” to a good quality rendering. Well, I disagree with that and the best argument against is real photography – although it’s 100% physically accurate, you need to put some effort to have a great picture. In my opinion nice looking, realistic effects can be achieved in many different ways. It’s really up to user and depends on the project you work with.
Mix Shader Node
Mix Shader will be one of your most often used nodes as it allows mixing two other shading nodes in various ways. You can use different Input Nodes to define the method of mixing or just use 0.0 = 1.0 values that are available by default. Probably the most common “Mix” use is adding reflections to the basic diffuse shader by using Fresnel or Layer Weight Input nodes.
As shortly mentioned earlier – a good way of quickly understanding the philosophy behind Cycles material system is thinking of Shader Nodes as real life material attributes you’d like to add to your CG shader. In the example above we’ve added “reflectivity” to very plain, uninteresting, single colored shader. By using additional Mix Shader Nodes we can add more attributes such as opacity (by mixing Transparent Shader node) or create interesting, non physical effects.
There are few different ways of achieving angular reflections in Cycles. Most common one due to its ease of use is putting Fresnel node as an input to your Mix Shader node, shown in the example on the right. This method however has one serious drawback which is dependency to geometry normals. What it means is that your shader won’t work correctly with single plane surfaces like curtains, grass blades, leaves, paper etc.
For correct reflections it is recommended to use Layer Weight node with its “Facing” output – this method is geometry independent and will always produce correct results. To have a better control over the reflections you should use RGB Curve Color node. This is very common practice and is widely used in other rendering engines.
Add Shader Node
Add Shader node seems to work a bit different and is not as popular as Mix Shader node. Its function is similar – combining two different shaders together. However In my opinion both of these nodes should be used for different purposes and some materials can be only created with Add Shade node.
In difference to Mix Shader this node does not actually “mix” two material properties in certain way. It adds them together which results in completely new “shading” output. For instance, if we add Diffuse to Translucency we’ll get a new shader bearing both of these material properties. They cannot be mixed in any way and the new shader is 100% diffuse and 100% translucent. It’s totally different to mixing Diffuse and Translucency in 50 to 50 ratio using Mix Shader. The output in this instance would be 50% Diffuse and 50% Translucent. It may sound a bit confusing but a good real life example is single grass blade or a piece of paper. We consider them both to be 100% diffuse which is true but if you put a strong light source behind, a 100% translucency effect will be visible. This makes us think that these materials are both 100% diffuse and 100% translucent.
Another interesting thing about Add Shader is that it counts all black color/shading values as zero. This means they will be added to the first shader but won’t affect it in any way. We can use this for creating fabric materials by adding Velvet shader to Diffuse. Another useful trick could be enhancing standard Glass shader by adding some Transparency to it.
Step 3 – Using texture maps
So far we’ve been using only solid colors for creating our shaders. In many cases this works actually fine but for re=creating more advanced materials in CG reality we’ll need to use texture maps. Adding image texture to your Cycles shader is pretty easy but should be also supported by few additional color nodes.
What you can see above is a quick node setup I use very often when adding image textures to my shaders. Already mentioned RGB Curves are one of the most usable nodes you should know – they work much better with changing texture brightness or contrast than all the other available Color Nodes. It is also advised to add Hue / Saturation / Node for fine adjustments as the final image texture color displayed in Cycles does not always match what you see in your 2D editing software.
It is important to roughly understand how rendering engines interpret image files. Without getting much into technical details, it can be roughly said that white color represents 100% of any value, while black means “zero” or “nothing”. This can be observed in the picture number 5 above: you can see blue diffuse shader being visible in areas where image texture color is close to being white. I’ve used RGB Curves to increase the contrast and make the effect even more visible. Since in CG world all material attributes are expressed by wide spectrum of values between 0.0 and 1.0, we can use image textures for defining shader’s reflectivity, transparency, roughness etc.
In the example above I’ve used Math Node for adjusting the way how image texture affects the reflectivity roughness. By multiplying the input file by 0.100 I’ve actually decreased its “strength” in defining the roughness of the shader. This means that all black values weren’t affected much while white and light grey tones got “weaker” by 90%, getting closer to zero. Since 0.000 roughness equals perfect mirror reflections, the result also seemed more polished and reflective (picture 3). In difference to that, applying multiply value of 2.0 actually doubled color tones, not influencing only 0.00 blacks. This resulted in very matte, “rough” surface (picture 6).
Math Node can be used for a huge amount of purposes when it comes to CG material building as it allows applying most mathematical operations to your shaders. One of them which you will actually find useful is using this node for defining the strength of bump mapping applied to the surface.
Before ending this step there are two last texture relates issues I’d like to cover. First – you might have noticed I’ve been using “RGB to BW” node in the example above. The reason for that (not in that particular shader as it’s very simple) is saving RAM memory since I’m using Cycles with GPU based rendering only. A general texture workflow is based on a few image maps, each one assigned for simulating different material properties. This was roughly covered in the very beginning of this tutorial part. However, this method is more memory consuming as each texture has to be loaded by graphic card individually. It may not be the issue if you’re using GTX Titan with 6 Gb RAM but in most cases or with scenes consisting of many shaders, each bearing three to four 6k image textures you may end up re-doing some stuff because the render won’t even start. Luckily since texture map differences can be very often achieved by using basic 2D editing tools, we can also apply different Cycles Color Nodes to achieve the same effects but using only one texture input!
Second issue has been shown in the picture 7 of the slideshow above – it’s the common mistake of using B&W image texture as a glossy reflection color input. Take a look around – the reflection color is very uniform in vast majority of cases. It may change depending on the viewing angle, becoming brighter at very low angles, but usually doesn’t have any color tint (except of metals) and is just a bit darker to the surface it reflects. Best way of testing this in real life – put a white piece of paper next to any reflecting surface and examine the paper color you see in the reflection – in most cases it will be only slightly darker, nothing else… However, reflections can be influenced by other factors we’ve went through already (roughness, bump etc.) and in the next step I’ll try explaining how handle this correctly.
Step 4 – Building more advanced shaders
Pasic Glossy / Plastic shader
Shader setup you can see above is not 100% perfect nor 100% physically correct. It could use some delicate bump effect for instance. However, this type of shader is very easy to prepare and quick to adjust. From this point you’re able to create basically all types of plastic / glossy / coated materials with different reflectivity and roughness values. Curves are most flexible way of controlling these attributes and RGB color node allows you to fine tune both base diffuse as well as slight reflection tint. For me personally this is one of the most widely used shaders, no matter on the project.
A general method of creating the shader above is similar to plastic / glossy shader. First I define the diffuse texture look by adjusting its color and saturation. RGB Curves can be used for that as well. Next, I focus on defining the reflectivity roughness. We already know it changes depending on the viewing angle but wooden material would also have some roughness imperfections by itself. That’s why I need to combine both RGB Curve input with image texture and I use Math -> Multiply node for that. You can also try using different Math modes like Add as there are many different ways of achieving correct looking results. Desaturated and strongly brightened diffuse texture could be also used as a reflection color input, simulating some dirt and reflectivity imperfections. I’ve omitted that not to make our Node scheme too complicated.
After defining reflections I usually spend some time adjusting surface bump using very reflective, clean Glossy shader. With everything defined, final step is adding (Mixing) diffuse the same way we did with plastic shader. For final adjustments you can either change the shape of RGB Curve used for mixing Glossy and Diffuse shader nodes, as well as Glossy color brightness.
If I was asked to point one thing I dislike about Cycles that would definitely be the way to create good looking glass shader. To be honest, even until today I didn’t find a method that would fully satisfy my needs. Depending on the project I always found it necessary to adjust the glass material at some point. depending on the environment, lighting etc. It is very common for many to think that default Cycles Glass Shader node is the eventual “glass material” (even though it works quite good in many situations). From what we’ve already learned we know that’s not true. Since Cycles material philosophy bases on building shaders from the scratch, using single “properties” and joining them together, Glass Shader node is simply a refractive, transparent property that can be added to any shader. Even its basic reflectivity isn’t the actual “reflection effect” that real life material would bare – we have to add it ourselves.
Some things you need to remember when using glass shaders:
- geometry normals have to be uniformly “flipped” outside
- refractive geometry volume has to be a closed (no open faces, loose edges etc.)
- intersecting glass shaded object with other, diffuse shaded geometry will always cause refraction changes
- you need to enable caustics for correct shadows and general look
Basic Metalic shader
Metalic shaders require a bit different approach than other reflective materials. While in all diffuse color based shaders the most important factor seemed to be the reflectivity roughness, with metals we have to focus on the reflectivity color. A good example for that would be golden metal – its reflections travel from slightly dark yellow / orange to almost purely white, depending on the viewing angle. Without getting into physical details, there are websites out there describing this phenomenon and the one you should definitely check is:refractiveindex.info. What you can find there is the “Reflection calculator” showing the actual look of reflectivity curve for every material you choose. The curve is split to RGB values and since re-creating this in Cycles would be too troublesome (yet possible), I usually try creating my own, similar looking curve, averaging all three color channels. The curve should be used as a mix input for 2 colors – white for very low angle reflections and any other color on the opposite site – depending what kind of metal you’re trying to create.
As for the reflection roughness – I recommend using two separate Glossy shader nodes and mixing them using another Curve input. We could use only one Glossy shader node with RGB Curve set as a roughness input (like we did few times already), but since metals usually have quite sharp reflections in general, the curve shape would have to be very flat an thus hard to adjust.
I’m pretty sure I didn’t cover the topic enough to describe all the commonly used shaders out there – that would take few more pages. I’m also sure there are other ways of creating some materials as different artists usually have their own approaches. However, I also think that many users may find this tutorial inspiring for doing their own research. For me personally creating shaders is probably the most interesting part of the entire digital image creating process. It is so interesting to look at something in real life and then try imagining entire Cycles node setup of that particular material. Sounds geeky I know but unfortunately (or maybe fortunately?) that’s the quickest ways to learn. Yes! You don’t need to stare in front of the monitor all time in order to practice! Just look around you, understand Cycles shading philosophy and then “think” this way, examining stuff in real life. I hope you got inspired!
It was a long one! But I hope you got inspired 🙂