I’ve been working on YANVE and trying to use build in that bought me a lot of confusion.
Some thoughts
Now tools are scattered in two places
parameters are in properties and operator in menu
Interface/tool/operator should be done in other consistent way
To edit custom normals manualy user have to:
enable auto smooth (and set it to 180º cause otherwise, it will add sharp edges)
set smooth shading
add mesh custom normal data.
In YAVNE you can skip those steps by any custom normal edit operation
Limitation compared to yanve: In Yanve You can set(mark vertex) how vertex normal is calculated, and (mark face) how much each face is contributing (weak/medium/strong) - and user could recalculate normals taking in accout marked data
In gsoc normal tool you can mark face strenght but only for modifier purposes
So you kinda can have one mesh with different vertex normal weight modes but it is way more compicated to set up.
I would create proposal on RightClickSelect, but i’m not even sure how it should work. So i’m hoping that community that work with custom normals we will figure out how it should be done.
Sorry for chaotic post :/. Its kinda complicated and important for me topic and English is not my native.
This is an interesting topic and something that I think is very important particularly for NPR and for game assets creation. I’ve made a tool for editing and painting vertex normals in Maya recently and I’m interested in helping out with improving Blender’s normal editing.
As a reference for discussion, here is a link to the gold standard in normal editing (Softimage User Normal Translator):
As well as an unfinished add-on that someone started a while back cloning it for Blender
I am wondering what the best UI would be and how the interactions should work. Also, perhaps more for 2.81 or 2.82, I would like to implement a new mode for painting normals with a brush, much like vertex colour paint.
To summarize what I think would be necessary to make Blender a normal editing powerhouse:
Being able to select a vertex and rotate its normal
Being able to set any vertex normal to an arbitrary value
Being able to select one or more vertices and multiply, add, replace, and smooth their normals
Being able to directly paint normals (multiply, add, replace, smooth) with a brush much like vertex colours
I was able to implement all of that in Maya with just a Python add-on. I will try the same in Blender and see how far I get. Then we can rearrange the UI and rethink how the user interaction should work for something that can come by default.
The only thing that might be more complicated is painting normals, as Blender does not have a custom paint context that can be used from Python as far as I know (either way the performance would be better in C for something like that).
Good point, I added it to the list above. Actually since such a basic thing is not possible yet, there may be some under-the-hood code that needs fixing. Any main blender devs that can explain any roadblocks there may be to implementing custom normals? @brecht
If implementable as add-on, a custom edit mode for normals might be interesting. Similar to particle hair grooming I see it working so one can select the tip of a normal and move it around. Split it if need be. Etc.
Ultimately having it as a native implementation instead of an add-on would be best of course.
A separate edit mode for it comes with the benefit that the whole interface for it can be kept simpler than it would need to be if it was implemented in mesh editing mode. Switching to the mode would be easy enough after all.
I believe that custom edit modes can only be implemented in C so it would have to be mainlined rather than an addon. Which is probably better in the long run anyway.
Thanks for linking to the GSoC stuff. If the operations are already implemented it will speed things up considerably. The “only” thing then is to make a better UX.
I think because the paint tools (Vertex Paint, Weight Paint) have a built-in support for linking the selection from Edit Mode to their own mode, having a Normal Paint mode would probably work quite well. For example, here is how Vertex Paint does it:
Although switching modes a lot slows down the workflow so being able to edit normals from the Edit Mode as well is probably quite important. Anyone have any ideas on what that should look like? The current Mesh->Normal menu is rather awkward.
In weight-paint you do have the selection tools available and you can use both vertex as well as face selection for masking. No mode switching needed. Would be nice to have it in vertex paint too, to be sure.