Vector math to get Curve object silhouette If you color ramp the Facing output of a Layer Weight node, you can make a mask of faces at glancing angles. This can be used as a material based silhouette mask for effects, or directly as line art.

Here is a curve beveled into a cylinder showing the effect working pretty nicely.


However, the effect doesn't work so well on larger faces, such as the sides of a cube, or down the length of this cylinder. In those cases, it shades the whole surface because it is all the same normal facing. I am trying to find a way around this problem.


I learned from this question that it is possible to use UVs and vector math to get a curve's direction. It seems it should be possible then to either use a similar method to get the silhouette of the curve, or use it to mask out of the Layerweight along the curve, or something along those lines. But I'm not strong enough on my vector math to figure out what needs to be done to make this work.

Anyone tried something like this before, or know what to do? Of course, it will only work on curve objects.
The solution is to calculate the crossproduct of the incoming and curve direction vectors. The absolute of the dotproduct of that and the normal is the facing which you can connect up to your color ramp.