Rounding The Edges, Chamfers And Fillets
By Neil Blevins
Created On: May 17th 2005
Updated On: Mar 13th 2008

Go here to read this tutorial in Russian.

For this lesson, we will delve into the subject of Fillets and Chamfers, and all the different techniques you can use to make them.

But first, what is a chamfer and fillet? In the pristine world of computer graphics, you have hard edges. When you make a cube, you get a sharp edge, when in real life, almost everything has a rounded edge, even if just ever so slightly. Take a look at the table below. On closer inspection, that hard edge you saw from across the room is actually chamfered. So if you want your cg to look more believable, getting those hard edges rounded is a must, it can make your work more realistic and more visually rich, since rounded edges can help pick up highlights that are otherwise unattainable by mathematically perfect corners.

Edge Of A Table

A Chamfer is when you take an edge and cut it at a 45 degree angle. A Fillet is similar, but fully rounds off the edge. Take a peak at the diagrams below.

Edges

Our Base Model

Here's our base model, all straight polygonal edges. You can download the model here in obj format.

Polys
Polys, 50 faces in viewport, 50 faces in render.

We will now use every method possible to chamfer or fillet the model. Here's a list of software and methods we will be using...
3DStudio MAX

Chamfer in Edit Poly

First lets use 3dsmax's chamfering feature inside of the Edit Poly modifier (you can use Edit Mesh or an Editable Poly too). Apply an Edit Poly modifier to the object, select all the hard edges, and hit chamfer.

Chamfered Polys
Chamfered Polys, 324 faces in viewport, 324 faces in render.

So this looks much better, notice the tiny highlights you're getting on those edges, it makes your model far more realistic and visually interesting. Unfortunately, the polycount has gone from 50 faces to 324 faces. However, since I performed the chamfer as part of an edit poly modifier, I can turn off the chamfering if the object is far away enough from the camera that you won't see it, or I can set the modifier to only calculate at rendertime, which will make the viewport polycount less expensive. Also, if I need to change the underlying geometry, I can get rid of my chamfering as opposed to trying to model around my chamfers. This is a really powerful feature of max's modifier stack.

Chamfering Multiple Times in Edit Poly

Similar to the regular chamfer method, except after you chamfer the edges once, you chamfer the resulting edges again.



This lets you get something similar to fillet, although it adds a lot of extra faces to your mesh. It can also create some unwanted extra geometry if you're not careful, especially at corners (see below), lots of tris (3 sided faces) and 6 sided faces which is not ideal.

Chamfer Bad Spot

And lastly, looking at the image below, the visual difference between your chamfer and your multiple chamfer is so slight the viewer may not notice it unless you're quite closer to your object, and hence it may not be worth doing.

Chamfered Polys
Chamfered Polys Multiple Times, 932 faces in viewport, 932 faces in render.

Chamfering with Segments in Edit Poly

Max 2008 adds a new feature to the regular chamfer that performs the Multiple chamfer shown above automatically. When doing the chamfer, just change the "Segments" spinner to a number above 1...



Here's a closer look at the results...



And here's the render...


Chamfered Polys With Segments, 562 faces in viewport, 562 faces in render.

This has many of the same advantages and disadvantages as the multiple chamfer method. There are a few differences though, for example 1) it's easier to apply, 2) it reduces the polycount by multi chamfering in a smarter way, and 3) The corners are also chamfered much nicer, although you'll note there are still plenty of triangles created at the corners if you look at the image above the last image.

Meshsmooth with Extra Loops

Now lets go one step further and go for a filleted edge, say we expect to see this object really close and so want a rounded edge vs a simple chamfer. Lets start with a subdiv. Subdivs in max are achieved using a modifier called meshsmooth (you can also use turbosmooth, which has fewer features, but takes up less memory). Here's an example...

Meshsmooth
Meshsmooth, 708 faces in viewport, 11328 faces in render.

That looks even better than the chamfered object, however, notice the facecount in the viewport has gone up again, and the facecount in the render has gone up considerably. This is due to two things. The viewport count has gone up because to get rounded edges using this technique, you need to place extra geometry around the edges. Without that geometry, the edges will become too smooth. Here's a snapshot of the extra geometry I had to add. To learn more about how to add these sort of extra edges to your geometry, visit the Sub-Division Primer.

Meshsmooth Edges

So it took me longer to add all that extra geometry (which means more modeling time per model), and the result has a lot of faces, but looks better than chamfered. Another disadvantage is that in 3dsmax, the subdiv is calculated as distinct steps. Other renderers can calculate the subdiv at rendertime, and only add as much geometry as needed to get the resulting surface. So if the object is far from the camera it will smooth less, and large flat areas will not smooth as much as the edges. In max, flat areas that don't need to be subdivided will be, which is partly why the render face count is so high...

Meshsmooth Edges Smoothed

Another advantage of this technique is that the corners are now all quads instead of the ugly tris you get with some of the other methods...



Meshsmooth with Creasing

Well, how about creases? Meshsmooth has something called creases (Turbosmooth does not, so you can't use turbosmooth for this technique). Instead of adding all the extra geometry in the mesh to define how smooth an edge is, you define how creased the edge is inside of meshsmooth by giving the edge a value, 0 for not creased, 1 for completely creased, and all values in between. Here's the results...

Meshsmooth Creases
Meshsmooth Creases, 50 faces in viewport, 1600 faces in render.

You have as many faces in the viewport as the original polygon, you get far fewer faces in the render, however, notice it doesn't look anything like the filleted results we were after. Creases are useful in some situations when doing organic modeling, but in general I've never been able to get them to replicate fillets on hard surface models.

Meshsmooth Set To Quad or Classic Method

Meshsmooth has another couple of methods to smooth your model besides nurms. Another method is classic. Set your meshsmooth modifier to classic, then bring down your Strength value from 0.5 to something less like 0.1. It performs a similar job to chamfering the edges manually, except it does a few weird things at some edges, as the image below shows.

Meshsmooth Classic
Meshsmooth Classic, 50 faces in viewport, 1596 faces in render.

There's also Quad Output, which also provides unwanted results when applied to a hard surface model...

Meshsmooth Quad
Meshsmooth Quad Output, 50 faces in viewport, 1600 faces in render.

Meshsmooth with EdgeChEx

This is very similar to the Meshsmooth with Extra Loops technique, except you use the EdgeChEx modifier plugin to create the extra loops instead of creating them manually. You can grab the plugin here. Take your mesh, apply the modifier, then apply meshsmooth. You may need to tweak the parameters of the modifier a bit, or even collapse it into the editable poly and then adjust a few of the edges it creates, but it's a lot faster than adding all that extra geometry by hand. Here's the resulting render...

Meshsmooth
Meshsmooth, 900 faces in viewport, 14400 faces in render.

And here's a peak at some of the parameters of the plugin.



Power Solids

Another method is using something called Powersolids. Powersolids is a plugin available from npowersoftware, and is a geometry type that exists somewhere between polygons and nurbs. Like creased meshsmooth, you make your surface, then select edges and give them a fillet value. Or for even more speed, just do automatic filleting, where you give it a value and it fillets any corner (avoiding edges that exist on flat planes). Check out the result below...

PowerSolids
PowerSolids, n/a faces in viewport, 1900 faces in render.

It looks great, and has a medium number of resulting render faces. What's more, as the object gets smaller, power solids will automatically reduce the amount of tessellation. The only disadvantages to power solids is you can't deform them using modifiers like bend, twist or skin without the program first converting the powersolids to polygons, at which point you're back to all the disadvantages of polygons that we had before.

Round Corners In mentalray

The mentalray renderer has a bump map trick that creates the illusion of rounded corners. Assign an Arch and Design material to your object, go to Special Effects and turn on the Round Corners feature. Here's the interface...



The results look quite nice, and don't add any extra faces...


Round Corners in mentalray, 50 faces in viewport, 50 faces in render.

The only issues are 1) you must render your object using the mentalray renderer, and 2) since this is a bump map trick, it really only works from far way, if you get up close, the illusion starts to fall apart. Take a look at this closeup...



This site is ©2008 by Neil Blevins, All rights are reserved.
Back to NeilBlevins.com