Page MenuHome

Set normals from faces should respect sharp edges
Open, NormalPublic

Description

System Information
Mac OS Sierra
Radeon Pro 580

Blender Version
Broken: 2.78.5 66383ea206

Short description of error
Set normals from face effects faces across edges set to sharp. It would make more sense and be more useful if it would respect those edges IMHO.

Exact steps for others to reproduce the error
Create a cube
Bevel edges across one axis with one segment and mark the caps to sharp in the edge menu
Turn on auto smooth and set the angle to 180.
Select the smooth large faces and "Set normals to face" to move the smoothness to the bevel.

The caps should confinue to be flat since all there edges are marked as sharp.

I really like this functionallity and I only want it to improve :-D

Details

Type
To Do

Event Timeline

Bastien Montagne (mont29) triaged this task as Normal priority.

Thanks for the report, but don’t think this should be changed actually, this is supposed to affect normals as vertices ones, not really split ones…

@Rohan Rathi (RohanRathi) hey, think that you could think about adding either an option to this operator, or a new one, to actually consider sharp edges as 'separators' and not affect split normals on the 'unselected' side of those? Totally falls into your GSoC project. :)

Thank you! Let me know If there is anything I can help with :-)

@Emil Assarsson (metabaronen)
I've added this functionality, albeit in my official soc branch for now.
You can test it out by building my branch: soc-2017-normal-tools.

I'm not sure how I could use these tools to achieve the desired result (figure to the right). I might be missing something?

Hey,
using set normals to face with multiple selected faces sets the normals to their face normal average. This has been an inherent part of the tool. If you want the figure on the right, you have to select all the flat non beveled faces and then use this function, along with checking "Keep sharp edges"

Ahh! Totaly missed the option. It works like that but I still have problem if I use the Set From Face on the other side of the sharp edge (cap face in this case) instead.

Thanks for your feedback! I think I've considered all cases now, would appreciate if you could test it out and report again :)

One thing I've noticed is that I can't select faces on the both sides of a sharp and do the operation in one go. I have got some crashes but I need to narrow the case before reporting them. Thank you!

I'll check into why its crashing. I'll check into the set_normal_from_faces code.
Is it crashing when you are using some other tool that I've not written? If so, then I can understand why its crashing.

It sometimes crashes when I have changed topology (triangulated ngons) and then doing a Set From Faces on the triangles but I have a really hard time getting a consistant case. I send you a screenshot of xcode trace so it might be I bit easier to narrow down?

Another thing: Set From Faces seems to produce a bit inconsistant results when doing it multiple times on a bit more complex mesh.

[EDIT]
Btw: I find this feature really usefull and I use it reguarly :-)
[/EDIT]

It is crashing when the mesh is edited so the loop normal spaces are wrongly invalidated. Nothing related to this tool, will fix by tomorrow. Could you provide an example when its giving inconsistent results? I've added sharp edges to the weighted normal modifier as well. I'll work on adding similar methodology to the tool if the modifier works fine. Also will make it so you can select both sides and perform the operation in one go.
Thank you,

The inconsistancy problem seems to be when using the tool on faces that have a ending of a sharp edge.
I guess that the normal direction is based of the closest triangle? My expectation is that it's based of the entire face so that the normals of both corners match. Also it shouldn't matter IMHO if I run it several times on the same face but it does.


Thank you! I've fixed both the problems. I would really appreciate if you could test out the other tools as well. Eg average with binary weights gives similar results to set normals from faces but also takes care of the cases of sharp edges.

Ok, I will gladly test the other tools aswell :-)

Copy Loop? Copy Normal direction? I think it's confusing to use the name "Loop" for this.

Error message when trying to copy normals "Invalid selection" could be more helpful.
When copying from multiple vertices it could ether say "can only copy normal direction from one vertex"/"Selected vertex contains a split normal and can not be copied as one value" or do an avarage on the selected.

When Pasting "loop" to a face with sharp edges it should only influence the selected faces normals (not influence shading on the other side of the sharp edge).

Sorry, but I don't undestand Weight and Threshold parameters. Do you have something written about this?

Boolean? What does it do? Weight and Threshold values seems to have no influence [edit] when it's checked[/edit]

Triangulated meshes becomes shaded differently on both Face and Angle based Avarage.
I can understand why but can we add something to handle it? I think that it would be more usfull if triangulated quads where treated symetrical.

The Split and Merge Normals buttons seems to be a duplication of the Mark and Clear Sharp (Edge) with new names. IMHO we need to inform the user that they should use the existing tools for that instead.

Would it be possible to add some Icons on the buttons? All these text buttons blur together ;-)

The weighted normal modifier is a wonderful addition! Does most of the work needed but adding a triangulate modifier to the stack (before) messes thing up a bit.

When I try to run Set From Faces on faces with a sharp edge I don't get the same result as I would if I run them separatly.


The problem with inconcistancy when the selected face have an ended sharp edge is solved from what I can see :-D Thank you!