Finally, skin with realistic subsurface scattering

General discussion about the development of the open source Blender

Moderators: jesterKing, stiv

JoOngle
Posts: 0
Joined: Sat Jan 24, 2004 4:12 pm
Contact:

Post by JoOngle »

Real SSS looks something like this:

Image

Image

Image

I have to agree with Basse on this one.
The script is real neath and can give the "impression" of a "hint" of SSS
but nowhere like the above examples.

Aren't RayWells working on REAL SSS implementation for Blender?
it will be a lot of fun if he succeed.

Toon_Scheur
Posts: 0
Joined: Sat Nov 06, 2004 6:20 pm

Post by Toon_Scheur »

UglyMike wrote:I guess the main issue is my lack of understanding of translucency versus SSS (a kind of bounced translucency?)
Well translucency is like the rays shooting straight through the material/ object. Depending of the intensity of the light, thickness of the object at different ray intersections, you'll see light shining through the object.

With SSS the same effect can be achieved too, but the big difference is that the rays don't shoot like a bullet straight through the object. They rather bounce around in the object. Some rays get reflected right back (the albedo of the material), some shoot right through the object like translucency, some keep bouncing around eventualy dying out or reflect back out at a different location or exit the material in a translucency style fashion, with the exception that the ray as a totally different angle with the incident ray at the surface of the object. Hence, the first BRDFS's took hours and hours to calculate. The method of Henrik Jensen and Juan Buhler is a very cleaver 'short cut' that is in good accordance with measurements.

OK, the big difference?
Look at the two picture earlier on this thread (Harkyman's example). Indeed one cannot see the real difference between the regular pic and the one with SSS. That is because that SSS will WASH OUT details like bump maps on the object making it appeat smoother. Like stated above, this effects is induced by the fact that light in SSS doesn't travel in a straight line but rather scatters around thus making details to appear smoother (depending on some parameters of course).
The SSSS script is therefore not real SSS but more a type of translucency. It does render nice though!
I don't think the the Incredibles use real SSS either. I think that their using shadow maps for a translucency calculation... but that is just my opinion :wink:

dcuny
Posts: 0
Joined: Mon Jan 27, 2003 11:22 pm

Post by dcuny »

Hrm... I see that Toon_Scheur posted a nice explanation first, but 'll go ahead and post this anyway.

SSS actually encompasses two different phenomena: "forward" and "back" scattering.

"Forward" scattering is a sort of "thin" scattering, typically what you think of as the skin SSS effect. Light enters a surface, bounces around, and comes out nearby, not not necessarily at the same point that it went it. This mostly means you'll get a softer surface. For example, a shadow line will be softened because the point that's next to it in the light will contribute some light, and lessen the effect of the shadow.

So to do "proper" forward scattering, in addition to taking into account the direct illumination at a point, you also have to account for the lighting that's contribute from nearby points. This can be done by converting your mesh into a bunch of sample points spaced more or less equidistantly, and precalculating the illumination at each sample point. When calculating the illumination of the mesh, you add to it the contributing illumination of nearby points in the "point cloud" of samples.

"Back" scattering is the effect of light going through an object - it's the "translucent" effect you get from a strong light in back of the ears, for example.

Doing "proper" backscattering is typically done by marching a ray through the surface (like with participating media).

Naturally, the "proper" way of calculating these values is computationally expensive, so people have worked out cheats that approximate the effects much more quickly. For example, you can fake backscattering by taking the thickness of the material and estimate a falloff.

olivs
Posts: 0
Joined: Mon Jan 03, 2005 10:27 pm
Location: Toulouse, France
Contact:

Post by olivs »

Not all materials need translucency in their scattering... The first script developped by the MH Team is only for Superficial SSS. The full (Deep) SSS is now available, and let you achieve even more realistic results, but its use is more difficult (hence the need of a Superficial and easy to use SSS script).

The thread for the full and real SSS script: http://www.dedalo-3d.com/public/forum/i ... _77&page=1
The link to the download of the script:
http://www.dedalo-3d.com/DXCOL/files/MHsssbeta04.zip

You will see that the scattering on the porcelain takes into account the translucency of the material, even if the lighting is less dramatic than those on top of this page. Most of the time, where the lighting conditions are quite standard, Superficial SSS could be considered as enough. I've a preference for the real SSS, though.

About Ray Well's SSS: it will be achieved using photons. This is real SSS. But the latest script from the MHTeam also achieve real SSS, using VCol Lights (please note that the Superficial SSS is not real SSS, but simulated SSS, using a simplified SSS algo). Results should be quite similar (regarding the light intensity dispersion at the surface), but the means are quite different, and the computation times also. But I think it's good to have both solutions: one that would be for extraordinary still results, the other one for very good animations ;)

Lastly, about the translucency map: the developers are thinking about dealing with it with the real SSS script, so that translucency difference other a single object could be taken into account.

My final word would be this: Superficial SSS can be faked using lighting and shader ramps, it's true. But true SSS simply can't ;) but using these scripts are not an obligation. If you don't want to, please don't... it's the same debate about introduction of Raytracing in Blender... either you want to use RayMir or EnvMap is a provate choice of yours. Faking SSS or using some scripts (or in-built photon solution) is another choice to take. ;)

Cheers,

Post Reply