Home Technical Talk

(Workaround) [Blender 2.8] How to edit a split vertex normal without affecting others?

polycounter lvl 6
Offline / Send Message
bitinn polycounter lvl 6
(This is not a double-post, but a different question.)

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 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 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 4: so I tried a setting the hard edge + 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 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 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).



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 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 edge or use edge split after transfer as they will modify other normals.

I am in this circular dependency hell, please help!

Replies

  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    OK I am back with a workaround:

    STEP 7: since we have already split the vertices, we can separate the mesh faces we want to fix, align their vertex normal to face normal, then join them back. Existing normal won't change as Blender know they are different vertices.

    Not convenient but at least the job is done.




  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    You can apply edge split modifier to your geometry. It would split those hard edges for real so you will have separate split vertexes in corners having each its own not shared normal.   Then you could make vertex groups and transfer normals for certain group only.

    Also If I am not wrong Blender 2.8 has a new feature of rotating vertex normals manually.  I tried it few monthes ago  but dont have 2.8 installed currently  so not 100% sure what it was.   Ctrl+ gizmo rotate for selected vertexes  or something.  Or maybe shift +rotate
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    gnoop said:
    You can apply edge split modifier to your geometry. It would split those hard edges for real so you will have separate split vertexes in corners having each its own not shared normal.   Then you could make vertex groups and transfer normals for certain group only.

    Also If I am not wrong Blender 2.8 has a new feature of rotating vertex normals manually.  I tried it few monthes ago  but dont have 2.8 installed currently  so not 100% sure what it was.   Ctrl+ gizmo rotate for selected vertexes  or something.  Or maybe shift +rotate
    In hindsight, it all comes down to order: I need to have hard edges + auto smooth before data transfer, then I can apply edge split + set normal to face afterward and it won't change existing normals.
Sign In or Register to comment.