SSS and thin objects

Hello,

Blender seems to have problems when rendering SSS in areas where the geometry is very thin or pointy. This happens, when the Scale value gets a bit larger.

Here’s an image to illustrate the issue … the tip should be almost transparent instead it’s darker than the thicker parts.

Renderman also had this issue but recently fixed it by using a new path traced algorithm. Is there a workaround in Blender for this problem. I tried to mix in some other shaders via Ray Length but had no luck to get to a good result.

Any help is appreciated.

Cheers,
Andreas

The way to resolve it now is to mix in a second SSS shader with a much smaller radius. RayLength won’t work because rays aren’t actually going through the object (try to illuminate an object on the other side of an SSS object with that object completely blocking the light, you can’t).

Can you suggest a good way to blend the two shaders together? It would be great if you could post a screenshot of the node setup or a blend file.

Cheers,
Andreas

Maybe paint a selection with vertex colors and blend in some translucency at… just the tip.

Hello,

I’m searching for a solution that doesn’t require individual painting or texturing.

Cheers,
Andreas

The easiest way is to just plug them both into a mix shader.

For objects that are somewhat symmetrical you can use the local position coordinates to drive the blending. Subtract object location from surface position to get local position, modify the coords with math nodes or mixrgb and then use the result as a mixing factor.

For spikes similar to example image you could calculate distance from object center (position the origin correctly first) and use it as a mixing input basis.

Thanks for the advice, but that’s more of a compromise. The thin part’s might look a little better but the thicker parts that I don’t want to affect will be influenced as well.

Cheers,
Andreas

Cheers. But as mentioned before, I’m rather searching for a solution that targets the thin parts on a geometry base rather that a location base or that having to create textures manually.

There are a few interesting solutions using “Ray Depth”. But they only seem to work with transparency and not with SSS. Something similar might be cool. Maybe somebody has a solution that is OSL based. That would be awesome as well.

Thanks,
Andreas

Cycles SSS might not be 100% accurate but it’s fairly close
Also, in reality, transparent matter is darker (ie. wet surface)
Guess, for your vision, you need to create a custom shader… or lit the object from behind.:wink:

What shaders are you using, the subsurface or principled shader?


Principled shader

Cycles SSS node (like most SSS implementations) is using diffusion approximation, which treats the underlying surface as a semi-infinite solid slab. This approximation falls apart when the surface is very thin or has a strong curvature - or as in this case, both.

For rendering these areas correctly, one needs to switch to a brute-force path traced volumetric approach. To a certain degree, this can be done with the volume scatter/absorptions nodes in Cycles. A sampling approach like this one could help making it more efficient.

Is there any working solution to this problem at the moment?

The “Random Walk” algorithm that was introduced to Cycles in the meanwhile handles thin geometry a lot better. You can give it a try.

You’ve basically run into a mathematical artifact of the algorithm itself – twice – so you’re going to have to “compromise something” in order to work around it. To start with, can you somehow avoid the shot? And, if you can’t, is the audience actually going to notice that the tip is dark? :thinking:

1 Like

You could try a full volumetric approach. I have a material on blendswap you could try.