The new pointiness attribute is nice, but it could be so much more.

Basically saying, that while the new pointiness attribute in Cycles has proven to be real useful in cases, I can say for sure that with a few shader-based changes, it could become so much more and its usefulness likewise gets multiplied.

The case that I make that it can be improved significantly while retaining a lot of speed, is based on something you can already do in Cycles.

The only disadvantages is that it’s not a ‘two-ring neighborhood’ method like the attribute and smooth shading needs to be on, but think of the advantages if the algorithm was changed to include something inspired by this node setup. The advantages of this manual setup is as follows…

  • No pinching at corners
  • No unpredictability and artifacts when making cuts in faces or adding bevels on objects with a grid-like wireframe
  • No instances of the mask going black on curved, but heavily subsurfed objects.

What do you think, do you think the image above makes a good case for how the calculation for pointiness could be improved?

Ace, can you manipulate that to turn a model into plates? Normals etc?

Maybe Welds normals along verticals and rivets horizontal?

Can you detect a edge in cycles? (I assume that is what this does?)

Sweet dragon you have been in the forum for so long to know that testing some nodes with cube and cylinder is not enough. Please investigate more before putting up somethings, you may mislead some users. :wink:

Eh… for starters, the dot product between two vectors is always a scalar. It’s only because of Blender’s lazy UI that the dot product has a Vector output. It’s always 0, so you can replace that stuff with 0.

The rest of the node setup also rather “works” by chance. This has nothing to do with pointiness, it’s about the angles of the normals towards the basis. Try rotating the mesh…

Yes, it’s more restricted than I figured, but you can get it to work for angles by using the mapping node (using the ‘texture’ rotation mode) to rotate the vectors.

The tricky part would be making multiple edge masks and then combining them-based on normal angles so one can make it work for almost all cases, but I’m not sure how to go about with that. There would be a bit less of a need to do that if the two-ring neighborhood code also went across the diagonals of a face (so you have a mask with nice square edges).