5
$\begingroup$

When having smooth shading on a sphere and separating the top into a separate object the shading is no longer smooth over the 2 parts, there is a discontinuity: enter image description here

It turns out the separate action changes the normals: enter image description here

I understand blender recalculates the normals based on the mesh it knows within the object, but is there any way to override this behavior, so that on separation, the original normals from before the separate are retained?

$\endgroup$
1
  • $\begingroup$ Although there are more standard ways given in the answers here, if you have to do this a lot, or in awkward situations, the Y.A.V.N.E. add-on , (or others, as its name suggests,) might be worth a look. $\endgroup$
    – Robin Betts
    Aug 29, 2018 at 11:21

4 Answers 4

2
$\begingroup$

Normal at a point P is a vector that is perpendicular to the tangent plane to that surface at P.

That means when you separate the mesh the Normal will be 90 degrees to the surface at the edges.

To fix that issue you can copy the original sphere and use it on both parts in a Normal Edit Modifier.

enter image description here

$\endgroup$
2
  • $\begingroup$ thanks! but it seems i used a bad example. I took a sphere as example but I actually have an arbitrary smooth mesh. I saw there is a DataTransfer modifier as well, could i use that for copy/pasting normals..? I found if I check Face Corner data, check Custom Normals AND I place a copy of the object (before separate) right on top and hide it, I achieve the wanted result. However, as soon as I apply the modifier, the normals modification is lost :/ I need to apply the modifier since I export to fbx $\endgroup$
    – mx1up
    Jun 2, 2016 at 16:43
  • $\begingroup$ since you answered the original question, i will mark this question as solved and ask a new one. thanks $\endgroup$
    – mx1up
    Jun 3, 2016 at 16:17
1
$\begingroup$

I figured out a trick around this using 2.8.

  1. Separate the vertices that you want to make into separate objects in edit mode.
  2. Add the "weighted normal" modifier to the object and apply it (the normals show to be fixed with the modifier, but if you didn't apply it, the normals still become distorted when separating into different objects)
  3. Now you can separate the objects and maintain the normals.

Hope this helps!

$\endgroup$
0
$\begingroup$

I'm not sure if you can do all in one step, but in Edit Mode, you can go to the 3D Viewport > Toolshelf > Shading/UVs tab > Normals: and click on Recalculate. This should adjust all of your normals back to, well, normal!

$\endgroup$
1
  • 1
    $\begingroup$ unfortunately, this does not help as the normals in fact are correct or 'normal' :) at least, as far as blender is concerned $\endgroup$
    – mx1up
    Jun 2, 2016 at 16:30
0
$\begingroup$

The Data Transfer Modifier can help you in this kind of situation. Alternatively you could also use a Blender add-on I made for this exact purpose called TiNA. TiNA basically turns the somewhat overwhelming Data Transfer Modifier into a set of more comprehensible operations.
There's a special branch for those using Blender 2.80 beta.

TiNA

 Hotkey           | Operation 
------------------|-------------------------------------------------------------------
 Alt+N            | Transfer Normals from selection to active object
 Shift+Alt+N      | Transfer Normals from active object to all other selected objects
 Ctrl+Shift+Alt+N | Clear Custom Normals data for entire selection
 Alt+W            | Wrap Normals

In your case you could transfer the normals from an unsplit duplicate by selecting all three objects, and - with the unsplit duplicate as your active object - hitting Shift+Alt+N.

Example results

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .