Bevel, Set Smooth and Glossy - How to prevent distortion

I’m probably nitpicking here, but there’s one thing that bugs me and I’m wondering what could help.

Say, I have a glossy sphere, and want to have 2 grooves in the sphere. For reasons, the edges are rounded off using a 3-segmented bevel.

I have screenshots of the result and geometry here:
Click me!
(Grooves were made by selecting the loop, extruding and scaling inwards along X+Y axes)

As you’ll see, rather than being the same perfect sphere with two grooves, the reflection starts to deform already before the groove starts. I know this is because how Blender’s “Set Smooth” interpolates normals within faces, but it doesn’t look very nice :slight_smile:

I’d imagine it can be solved by making sure the first segment from a bevel doesn’t actually round off yet (but is still in the perfect sphere geometry) so you reduce the distance over which the normals are interpolated, but I’m guessing / hoping there’s a better method, especially because I don’t know how to actually do that without applying the bevel and then manually adding edge loops every where.

Looking forward to any tips!

select your sharp edges in edit mode, go to mesh menu >> edges >> mark sharp

Modron’s suggestion will get you part of the way there, but to really have it perfect you also need to go to the mesh tab of the properties editor and turn on autosmooth under the normals section.

Edit: Ah, Atartanian beat me. Actually, I didn’t see any difference before I turned it on :slight_smile:

Ah. So close.
While that improves it a lot (as long as you don’t forget to enable Auto smooth in the “Normals” section of the Data tab :wink: ), it’s not yet perfect (e.g. as if it really was a sphere with a part cut-out).
I think I see now it can’t be 100% perfect because it can’t extrapolate the curvature of the (next face of the) sphere, because that’s where the groove is.

Of course, I could cheat by actually using 2 perfect spheres, both partially transparent (top or bottom half), etc etc, but that’s far too much work for the simple idea I had.

Thanks :slight_smile:

you can get it perfect if you add the bevel in manually and then run an edge loop right up to the start of the bevel, it’s less elegant than using the modifiers because it’s destructive, but will work

Sorry, not yet convinced. I tried to illustratein the picture here.
The Autosmooth + Sharp edge method yields the same results as applying the bevel and adding the edge loops right up to the start. (At least for me). What that does is that it takes the normal just before the bevel starts. The red & orange lines illustrate the normals and orthogonal lines correspond to these ‘effective edges’. I think this is as far as Blender can get, because A) it no longer considers the curvature introduced by the groove (which good since I didn’t want it to), but B) it also doesn’t / can’t consider the curvature of the sphere after the groove.

In the ideal case (drawn as an extreme example in the bottom right of the picture and added in green in the big picture) the normals are slighly tilted inwards, because Blender would then know that after the groove, the curvature continues.

Of course, feel free to correct me, but I’d have closure if this is as far as we can get :wink:

the more faces you have the shorter the apparent distortion will be, so I’d suggest also adding a subdivision modifier to the sphere with a couple of levels of subdivision.

ah I think I understand what you are saying about the normals missing the “next” face of the sphere… I think this can be fixed by using the custom normals feature, along with the blend4web normals editing tool, but having spent just a couple minutes trying it out, it’s not going to be particularly easy…

blend4web addon here: https://www.blend4web.com/en/downloads/

Yep, with additional loops edges on the corners it should be good then…

@lane no @svenniemannie’s right, the normals are subtly off from what they would be if the curves surface just continued without the cut, because of how the normals are computed. basically without the next part of the curve even split normals (which is similar to what you get with the extra edge loop) point perpendicular to the surface, but should point to the average of the two original faces on the sphere. the only way I see to change that is by using the custom split normals functionality that was added in 2.71 (i think). the tools available to manipulate custom normals aren’t really easy to use though as far as I could tell. I don’t think it’s impossible, but it doesn’t seem easy either.