Changed Normal SOP behaviour?

   537   5   2
User Avatar
Member
253 posts
Joined: July 2013
Offline
Before I put in a bug report, is it me or is a normal sop node deleting any preexisting N attributes even when it's applying normals to another class?

1) add a 'normal' node to some geometry, set it so it adds normals to points.
2) check geoSpreadsheet to assert we have point normals
3) add another 'normal' node below the previous one, set it to add normals to 'prims'
4) check geoSpreadsheet to see prims now do have normals but the point normals are gone.

Easy to workaround, but I don't remember running into this before in the first place?
More code, less clicks.
User Avatar
Member
679 posts
Joined: Feb. 2017
Offline
I remeber it deleting previous N attribute in the past. But, yea please sign a RFE as it is annoying.

Cheers
CYTE
User Avatar
Member
7794 posts
Joined: Sept. 2011
Online
P and N are special, it's considered illegal to have multiple classes of P and N. You can use a different name for N if you need multiple classes of attribute storing the normal.
User Avatar
Member
396 posts
Joined: Nov. 2016
Offline
I was thinking the same thing, but seems like the Normal SOP will behave this way even if you override the attribute name to something else, as long as it's the same name for both classes.
Edited by Tanto - April 24, 2024 11:55:03
User Avatar
Member
253 posts
Joined: July 2013
Offline
I can't find any documentation about this, only:

When two components in the same geometry have an attribute with the same name, the attribute on the “lower level” of geometry is used:

Vertex attributes override:

Point attributes, which override:

Primitive attributes, which override:

Detail (whole geometry) attributes


No mention about P or N being special? It's also not very Houdini style to have special cases like this.. strange!
Edited by Jonathan de Blok - April 24, 2024 13:49:21
More code, less clicks.
User Avatar
Member
238 posts
Joined: March 2013
Offline
It's always done that. N is special, because N on points will end up interpolated in N on vertices by the renderer.
It cannot exist in 2 places. If you loaded H9 up and tried it you'd see the same thing.
I'm not lying, I'm writing fiction with my mouth.
  • Quick Links