I have this very low-res object that I'd like to smooth with a subdiv modifier, however, I'm having problems with smoothing and keeping the edges nicely beveled... I've tried using a bevel modifier + subdiv modifier but I get fireflies... Is this way too low poly to be nicely smoothed?
2 Answers
The case study was not so simple for me so, I'm allowing to provide a more detailed answer (even if another answer is already accepted). Doing this, I'm also in hope that someone else will provide a simpler way to do it.
I presume we want to obtain the model on the right model from the one on the left:
The initial geometry is the following:
I've first simply added a bevel and a subdivision modifiers:
but bevel adds geometry along the cylinder so that the external part is not perfectly round.
So correct that, I've assigned the cross part to a vertex group and beveled only on this group:
but this makes appear some bad geometry at the cross corners (due to the subdivision modifier and underlying non quad geometry generated by bevel):
I correct it by "isolating" the cross part with an additional edge ring:
Now to bevel the outer part of the cylinder, simply add another edge loop:
Now have a closer look using a matcap, we can see that the center of the cross shows a visible square (which may be not wanted):
So to get rid of that I've subdivided the center square (making non quad, by the way):
-
$\begingroup$ Thank you so much for your, honestly, awesome in-depth answer! I confirm that this method does work. I noticed a few, very minor artifacts in the bottom corners of the cross mark, but only at extreme angles... I think an alternative solution for my issue could be a mesh decal, but I haven't tested that because I don't know how to do it. Thank you very much, all and all, honestly, this is great! Thank you! $\endgroup$ Commented Apr 1, 2018 at 23:39
You seem to indicate two problems here.
Fireflies are usually a sign of rendering with too few samples and/or a very tiny light source. They are not directly related to bevel and subdivision modifiers.
To keep sharp edges sharp, you can set a crease value on selected edges (Shift-E) for the subdivision modifier. In the bevel modifier, set "Limit method" to "angle" with a value of 50°-80°. Or, if you want different bevel widths on different edges, you can use bevel weight ("Weight" in "Limit method", then select edges and modify bevel weight through Ctrl-E.
Note that the order of the bevel and subdivide modifier is also important.
You'll often also need to set smooth shading, and in that case you might want to activate "Auto smooth" in the "Normals" section of the "data" tab (the one marked with an inverted triangle). Here also, set the angle to taste. Or mark some edges as 'sharp'.