Yet another fake SSS

edit 1: who said I can’t pull this one off? :smiley:
edit2: due to the overwhelming ‘this isn’t real sss!!!111one’ post, i decided to change the title of the thread.

Click here to see subsurface scatter in action

this is not a physically accurate model, but I feel the visual effect is good enough to be called sss…

Ok, most of us know what SSS is and how it works, I recently ran into an interesting approach to SSS from a Nvidia whitepaper, which COULD potentially be done with the blender node editor. The method described below is a bit complicated and assumes that the model does not fold back onto itself (ie the method only works with a mostly convex model). Nevertheless, it is probably the most physically accurate method i’ve seen.

  1. render the object from the front using ortho (where the camera is), and store the Z-buffer
  2. render the object from the back using ortho (rorate the camera 180 around to see the back of the model) and store Z-buffer
  3. take the difference between (1 and 2), and normalize, which should give you a thickness buffer that tells you how thick the model is from a particular angle.
  4. apply shading using (3) as a guideline for intensity.

All is good in theory, i’ll see if i can’t wip together something to demonstrate this method…

when i first downloaded the blender 2.43 CVS i began experimenting with texture baking to create sss effects. the concept behind my system was to reverse the normals of the model that you wanted to have sss. and bake AO to a texture. what this gave was a blurry reading of how close each face was to the oposite one. to make it usable, the colors had to be inverted to make the parts closer together lighter and further apart darker. then, if blender had dual sided materials or a dual sided material could be created with nodes, one would create a dual sided material that is a ztransparency through one side and translucent through the other. translucent light coming through the oposite side would be multiplied by the ao texture. i never got around to figuring out what to do with side not in the shadow, but possibly a diffuse phong specular node appled as the diffuse and another node applied as the specular.

Sounds interesting, I guess it’s more suited to still images though. If it holds up to a detailed animated human character though this suddenly gets very interesting…

I’m not sure why it’d be a still images only thing, from the sound of it, this is a way of getting the thickness of a model, then using that as an applicable texture, I dunno how step 4 itself would work, though.

is it possible you could post the link to the paper?

i honestly can’t find it, but it was a pdf file on the geforce 7 Luna demo. The SSS effect was extensively used on the fishboy models.

It’s interesting. I’ll keep an eye on what you come up with. How would I use this as an artist? Would there be a way to automate it for animation?

i am playing around with nodes as we speak, I am sure once i get the procedure down, developers can help me condense it into a nice to use integrated node.

everyone else is welcomed to try as well :smiley:

Ok i have done a qicktest.
Some adjustment of the z-images nodes and composing
and i got this:
It will work for non overlapping Parts.
We need a programmer who can build a one klick node.

keep on

Huh, nice. You know, if the internal lines were a problem, we could just apply a blur to the results.

this is realy interesting… i am more interested however in what you have done to the picture after you have taken the double sided Z and normalized it. when i think about it, the internal ao and this method seem to be different ways of obtaining the same data, except internal ao would work for all sorts of surfaces, not just convex ones.

Nice improvisation. Keep at it. :slight_smile:

…finally something concrete, see first post

:smiley: holy buddha in speedo ! Theory theory and bam… result. It looks nice.

Are there limitations like having a special spotlight or something?
Does the inital texture affect the final result?

:smiley: so much questions…

Would be nice to see this implemented as a material node…
And right now, I don’t know what would happen if you where to use this method on object mixing SSS and non SSS objects… like this one.

That seems to be the good thing, this isn’t really dependant on lighting setups and stuff like that. From what I can see, it should work fine on her.

This is good, but only works with a single object in orthographic view. Perspective will stop the cameras matching up.

You know what you could do, though. You could use it as a diffuse map.

nope, actually i used perspective mode (lens=40). the amount of distrotion isn’t noticeable when you blur the depth map

I may be stupid, but SSS doesnt have anything to do with thickness. Sub-surface scattering, right? it is the situation where light enters multiple layers and some bounces around inside the material and some is emitted back out. Skin on surface is white, underneach fat, underneath that is red blood (unless youre dead, in which case you are not reading this…I hope). So a fat white person breathing heavy has basically one surface (tan) with 2 SSS layers (white and red). The amount of scattering depends on incidence angle of the light penetrating the surface, and the index of refraction. I think the skin shaders using color ramps is a better approximation that using thickness.

What this IS good for is faking TRANSLUCENCY of objects, by making thinner (ears versus head) objects of a consistent density (flesh suzy wthout earrings versus metal suzy), allowing background light to show thru…

but hey, that’s just me talking, and maybe i’m grumpy today and want to rain on your parade.

And the thicker the object is, the less light gets let through. :stuck_out_tongue: Go ahead and rain if you want, but you’re raining in the wrong place. No-one said it was physically accurate.