7
$\begingroup$

I'm having a hard time creating a chrome object with flat faces but with smoothly bevelled edges.

If you start with the default cube, add a bevel modifier set to, say, 4 segments, set to smooth shading and render in cycles, then everything looks as expected. If you now add a glossy material with no roughness and an HDRI environment things don't look quite right - at least to my eye.

On the main faces inherited from the original cube the reflections are slightly bent. The bending is reduced if I increase the number of segments in the bevel modifier. At 100 (the max) things are just about OK. Adding loop cuts or a subsurf often makes things worse with some views revealing the triangulation used to render.

I think I understand the cause and that is due to the interpolation of the normal over the whole face which creates a slight curving of the reflection.

Adding an edge split and adjusting the angle works but adds sharp edges as you'd expect and the faces drop back to planar. Applying the bevel, selecting the large faces and making them planar adds a crease around them.

Explicitly modelling the bevel makes no difference.

Adding an inset face simply adds reflection weirdness to the outer "frame" faces that are created.

My objective is to have the main faces of my object flat mirrors and bevelled edges as close as possible to cylinders that smoothly join them.

Any thoughts?

Update

Here's a picture I constructed in PovRay to illustrate the issue, or rather to show what I'm aiming for:

enter image description here

Here's what I created in Blender 2.76rc3 using a bevel modifier with a segment count of 4:

enter image description here

And here with a segment count of 100:

enter image description here

This next image shows that making the centre panels flat shaded causes the normals to be split and thus display a discontinuity:

enter image description here

This next one shows that adding an inset face causes even more strangeness.

enter image description here

Here's my result using a subsurf - admittedly it could be improved but I was trying to avoid this method as it will not work with the target object that I really need to use the method on.

enter image description here

Finally, here is the result I managed to achieve using the Blend4Web normal editor to set the corner vertex normals of the main faces to be equal to the normal of the face. I accidentally used a different radius.

enter image description here

This is the best so far but still I'm not happy with the process. I thought at the start that I was doing something fundamentally wrong but I'm slowly coming to the conclusion that this is just the way it is.

$\endgroup$
  • $\begingroup$ Welcome PaulMC :) I'd recommend start off with a suitable test scene: blender.stackexchange.com/questions/21807/… Anyway, enjoy blender.se! $\endgroup$ – p2or Oct 2 '15 at 10:07
  • 1
    $\begingroup$ I'm sorry but I don't understand what you are asking. The test scene you refer to doesn't include surfaces of the type I described above. Doubly curved surfaces like in that scene can be convincing as mirror surfaces but it doesn't mean that the reflections are correct. Please can you elaborate? $\endgroup$ – PaulMc Oct 2 '15 at 10:24
  • $\begingroup$ Could you post an image depicting the problem? I feel that the question may be quite interesting, but I'm not 100% sure of what you are talkning about. I'll modify your post to add a couple of images I made. If they not reflect what you where looking for, feel free to rollback/substitute yours. $\endgroup$ – Carlo Oct 2 '15 at 21:43
3
$\begingroup$

There are two common ways for modeling rounded corners. One, using a bevel modifier. Two, using a subdivision surface modifier. Both have advantages.

Bevel Modifier:

The bevel modifier's main problem is the sharp edge it gives on each side of the bevel as seen in the image below. It can look very 3Dish when using highly reflective shaders. But the advantage is that it keeps a relatively low polygon count in comparison to subdivision surfaces and keeps a better curvature by maintaining a perfectly circular curve.

To reduce distortion in the reflections, one can add edge loops to correct the normals so that they face directly outwards. See image below.

Subdivision Surface Modifier:

The advantage to the Subdivision Surface (sub-surf) modifier is the smooth transition of faces that the catmull-clark algorithm creates. But, to get noon-distorted results, you must have a high subdivision level, Causing polygon counts to double or quadruple.

In the end, neither are perfect. But the sub-surf modifier will give better results. At the cost of your render speed.

An example of the subdivision method: enter image description here

An example of the bevel method with added edge loops to improve normals: enter image description here

$\endgroup$
  • $\begingroup$ Thanks, however both your pictures show the problem I'm having. I need the interior panels to be flat and to act as a mirror. At the moment they are bending the reflections as if they are curved surfaces. The bevel only curves the new faces that replace the edge, it is the smooth shading that interpolates the normal that is causing the curved look. The subsurf curves both the geometry and the smooth shading only "reflects" that. What I'm trying to achieve is flat shaded large faces with a smooth shaded bevels and no discontinuity between them. I'll edit my post with more info. $\endgroup$ – PaulMc Oct 2 '15 at 21:37
  • $\begingroup$ @PaulMc I added a better example of how well the subdivision method works. It actually has very little distortion on the planer area.But I see that you added that can't use this method for your model. So i'll look more into it. $\endgroup$ – Johnson Martin Oct 3 '15 at 13:10
  • 1
    $\begingroup$ @PaulMc To improve the normals. You can add edge loops to reduce the distortion. One of these two methods should work for you. If not, you might have to use another software to get a perfect refection. Blender's normal editing tools are limited. $\endgroup$ – Johnson Martin Oct 3 '15 at 13:23
  • $\begingroup$ Thanks. This improves things a lot, by using the edge loops to obtain an inset face instead of using the inset tool this avoids the creation of the three edge poles (which in turn cause normal and reflection problems). Preserving quads is the order of the day - yet again! $\endgroup$ – PaulMc Oct 3 '15 at 17:34
  • 1
    $\begingroup$ @PaulMc You don't have to add that many edge loops, just a few proximity cuts around the edges. $\endgroup$ – PGmath Oct 3 '15 at 17:41
2
$\begingroup$

You are correct that the problem you are describing is due to the normals being interpolated across the entire flat faces, creating a curved look. You can fix this by adding some proximity cuts near the edges of the bevels.

enter image description here

Here's a render, notice that the flat faces have perfectly straight ,un-distorted reflections.

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.