I apologize for the long post ahead, but please bear with me:

I am facing a problem which, after transferring normal, I want to edit split vertex normal to fix shading on a particular face, but avoid modifying other normals on the same vertex.

To illustrate the issue:

STEP 1: I transferred normal from this cylinder onto an arc of its piece (so that the shading is smooth when we put multiple of these arcs together.)

step 1

STEP 2: as we can see, while the top/bottom/front/back sides of the arc are now shaded smoothly, the left/right sides of the arc will shade badly, mostly because the cylinder doesn't hard edge/faces along the same sides.

step 2

STEP 3: we know splitting the edge (aka setting hard edge) will give us more vertex normals to work with, BUT, because Blender use "Auto Smooth" to display custom normals, doing so cause it to recalculate the normal, which defeats the purpose of transferring normal in the first place.

step 3

STEP 4: so I tried setting hard edges + Edge Split modifier before normal transfer, it got the hard edge sorted, BUT I still need to set the vertex normal, and importantly, 1 vertex normal from each split vertex, to be the same as face normal.

step 4

STEP 5: This is where I got stuck, I don't know how to do that without affecting the other 2 normals on the same vertex. I know they are different vertices rendering wise, BUT Blender's normal tool doesn't know that.

step 5

STEP 6: also note that, because Blender's Data Transfer modifier depends on Auto Smooth, even if I have applied Edge Split modifier beforehand, the transfer only store custom normal data for Auto Smooth mode! (these 2 objects are identical, the only difference is one has Auto Smooth enabled).

step 6

Thank you for reading this far, so my issue comes down to:

  • I want to transfer normal data.
  • I also want to edit normal after transfer.
  • BUT normal transfer (Data Transfer modifier) depends on Auto Smooth.
  • AND Auto Smooth by definition doesn't split vertices, so I can't edit normal individually.
  • AND I can't set hard edges or use Edge Split after transfer as they will modify other normals.

I am in this circular dependency hell, please help!

  • $\begingroup$ Look for "Blend4Web normal editor" add-on, it allows to tweak normals of individual verts $\endgroup$
    – Serge L
    Mar 14, 2019 at 8:47
  • $\begingroup$ Pretty sure it wasn't 2.8 ready? blend4web.com/en/downloads $\endgroup$
    – bitinn
    Mar 14, 2019 at 9:20
  • $\begingroup$ I have found a thread that talks about this issue, and seems like the current workaround is to separate faces I want to fix, align vertex normal to face normal, then join them back. Not convenient but at least do-able: devtalk.blender.org/t/custom-normal-editing/4172/34 $\endgroup$
    – bitinn
    Mar 14, 2019 at 10:22
  • $\begingroup$ I have been looking for something like this myself: would you mind putting the steps into an answer to your own question? Do your vertices wind up merged, but still with the appropriate face-vertex (loop) split normals? $\endgroup$
    – Robin Betts
    Mar 14, 2019 at 11:36

1 Answer 1


In hindsight, it all comes down to order, you need to:

  • Set hard edges + Auto Smooth before Data Transfer modifier.
  • After transferring the normals, apply Edge Split modifier (to hard edges only)
  • Then select the faces with incorrect normals and set their vertex normal to face, since vertices are split properly, it won't affect other existing normals.
  • $\begingroup$ Thanks.. It would help a lot if there was distinct names for face-vertices (loops) and mesh vertices, consistently used in the interface, at the risk of making things seem too complicated.. unless I still don't understand exactly what's going on.. $\endgroup$
    – Robin Betts
    Mar 14, 2019 at 13:49
  • $\begingroup$ ..and I've just managed to remove doubles, after your steps, resulting in single mesh-vertices, but correctly split face-vertex normals.. for some reason I couldn't do that before.. $\endgroup$
    – Robin Betts
    Mar 14, 2019 at 14:06

You must log in to answer this question.

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