Yet Another Vertex Normal Editor (Y.A.V.N.E.)

In the case of vertex normal, no, the amount shouldn’t matter if it’s just a single axis since normal’s vector only account for a direction.

About the problem you are experiencing, have you tried to refresh custom normal? Sometimes the data can be stuck/calculated wrong due to geometry change.

Also, when marking faces “Strong”, the connecting faces should be either “Weak” or “Medium” for it to have effect. Otherwise it will use the default normal priority based on the combination method.

Good to know, that seems to fix the normals that aren’t aligned properly, I am still getting weird shading in one of the corners of the flat area. Thanks for the advice though.

I just noticed something interesting, too.

After I used the Get/Set buttons, the normals on the affected vertices seems to be stuck.

I summon you, my lord Umdee! Is there a way to delete custom normal information for selected vertices?


Nvm. I seem to have a trait that I always find the answer to the question I ask one minute after I ask it. LOL

I went to the Y.A.V.N.E panel, find where the “Vertex Normal Weight:” is, click the “+” button near it while having the stucked vertices selected. And then the vertex normal are unstuck!

Hey, check it, is this how supposed to be? Applied ‘combined’ to this object and ‘strong’ to flat surfaces + walls, leaving bevels on default medium. Shading seems to be correct, but in painter baked maps (curvature and ao mainly) are incorrect, they seem to think bevels are kind of separate meshes/faces. I’m pretty new to this stuff, so I’m not sure how it should look and whether it’s possible to fix.

Additionally, is it expected to manually apply ‘strong’ to everything except bevels, to get desirable shading? I thought just by applying weightening algorithm to whole, simple, object would be enough


The bakes looks correct to me, the curvature is tight and those seems you see in the AO is probably cause by UV splits. The addon works in many different ways, depending on what type of weighting you want to achieve or how precise, I often just face weight the entire object with all the faces selected and it does the job unless I want them completely flat.

You’re right, those lines in ao map are uv seams as well. Is it possible to avoid it? I can’t think of good alternative to put seams elsewhere than bevels, but then again, I’m not really experienced in this matter. From what I’ve seen, people avoid this issue by using high poly for higher quality baking of maps. Seem making good baked maps from low poly is a hurdle that wasn’t really hoped over fully.

I’ve tried applying different weightening algorithms to whole object, but only 2 or 3 were closest to what I wanted (‘combined’, ‘face area’ at least), but it rarely gives me what I want:

To correct it, I do these steps:

1). select sharp edges (spacebar>select sharp edges), then spacebar>mark sharp, i use 89 value for these simple objects
2). ctrl+select single polygons from each flat/wall surface
3). ctrl+alt+shift+f, it selects all polygons coplanar to those you selected earlier,
4). edge loop/ring select for polygons on curved walls such as cylinder wall
5). apply ‘strong’ from yavne with combined/face area algorithm

As you can see, a bit of clicking… even more so in case you have to do a large amount of hard surface objects :frowning: Is there a way to simplify this workflow?

Y.A.V.N.E. breaks the UV Reset tool. After yavne creates custom normals for a mesh, UV Reset will produce small zero width UVs instead of UVs covering the entire UV space.

Nothing I tried could fix this issue. The only workaround I’ve found is to export(fbx) and re-import a mesh, which is extremly unconvenient and not always a suitable solution.

What is causing this behavior and how can it be fixed? i’d appreciate any input.

Will this be updated for newer versions of blender or are there alternatives? I feel sad i only just found this lol.

The 2.79 sperimental builds have a “weighted normals” modifier and that will be present on blender 2.80 also.

1 Like

Would love for this to get support in 2.8. And would be willing to pay for it aswell, even though the 2.8 got a modifier, when I make game assets its super helpfull to have manual controll over what gets weighted and what doesnt.

Did you try out the new weighted normals and normal editing support built into 2.8? What do you find lacking that Y.A.V.N.E. provides?

What yavne do really well is that when I mark an individual loop as “weak” for example it retains that normal data. So even after editing/moving that loop it’s still easy to access/reapply/change.

In a more specific case (what I’m working on now) I got a hood for a car where there just a specific part that I want weighted. Applying the normal modifier affects everything. Whilst with yavne I can do a weak normal on my edges but do a strong/medium normal on the curved hood part. Creating a softer look. With the modifier it automatically weights any loops that are to tight or to angled.

I guess you could assign vertex groups and use it like that. But then you need multiple modifiers stacked and also afaik there’s no quick/good way of assigning vertex groups.

You don’t have to use the weighted normal modifier in 2.8 to get and use custom split normals with different face weights. And it will retain the normals associated with a particular loop even if you move the loop vertex. And you can affect the normals of only specifically chosen loops, not necessarily all at once. See release notes for details.

I know that the current UI for doing this in 2.8 is pretty awful, and I hope to fix that, but am right now wondering if the functionality is sufficient or needs augmenting?


You can assign face influence in 2.8 by default. Not as straight forward as YAVNE but the method is the same. Check out the normal menu in the 3d view, there are the options to assign and select

Now that Blender 2.8 is out with a stable Python API, I’ll take a stab at updating this addon. No need for payment. I’ll do it for the asking, and I need to learn the new API anyways.


I’ve been accumulating some Y.A.V.N.E. updates over the past year but neglected to push them to my github. Well, they are available now in release version 1.9. Be warned, this is not a fully backwards compatible update, mainly due to the use of loop data layers!

Also, I was unable to test some multiprocessing optimizations on a Mac. Please, let me know if updating vertex normals causes multiple blender applications to spawn.

Other than optimizations and refactoring, the main updates are support for flat shaded faces, auto sharpening of edges, and linked face area influence.


I might be to much of a blender scrub to get the 2.8 normal custom workflow to work. I mean from what I understand reading (and testing out now that I know about where to find it) its powerfull …but as you say pretty awfull in using.

The advantage with yavne was/is the ease of use. Select your loop/whatever and just press an easy accesible button to give it a weight. Boom. Even takes care of turning on the autosmooth function thats nested way down in the object data.

I do almost exclusively game assets nowdays and weighted normals/decal workflow is growing increasingly popular, pretty much every shape have some sort of weighted normal to it.

Anyways. to answer your question. Yes the functionality seems to be there as far as I can see (still ahvent found a way to apply strong/weak/mid weighted normals though), just the user journey thats awfull.

But if a boy can dream; A friend of mine worked at a game studio and they developed a tool inhouse for weighted normals.
Never tried it since it’s 3dsmax but the color identification and the way you set it to angles seems to be very usefull.

1 Like

This gif hopefully explains a bit how things work now with the face influence option. I still prefer YAVNE over this for various reasons but combined with the modifier this new method is quite versatile.


I was wondering how to get the weighted stuff to work, so it turned out that just enabling auto-smooth is enough to do the trick.

Thanks, I think it would help if Blender had a system that popped up messages telling users they need to Y to get X to work properly. Godot does this and I find it very helpful.

thanks for that, yeah it does seem to do the same thing as yavne, but in a overly multistepped complex way.