My own go at SSS - failed attempt

After reading this:
http://www.dedalo-3d.com/index.php?filename=SXCOL/experiments/radiosity_errors.html
and further this:
http://perso.wanadoo.fr/blenderic/SSS3.html,
I decided to see how to achieve SSS effect with Blender.

Here are my results.
Skin-like material test:
http://olivier.saraja.free.fr/elysiun/WIP/SSS/SSS-test01.jpg
Jade-like material test:
http://olivier.saraja.free.fr/elysiun/WIP/SSS/SSS-test02.jpg

Of course, pure render straight out of the Blender 2.33a, i.e; no post-pro of any kind.
Please tell me what you think and how good it looks, or how much I sucked at it :expressionless:

It looks good, but I think you’ll get even better results using the new ramp shaders in 2.34.

Any chance of a larger render of the material?

Sonix.

In fact I think that ramp shaders could complement my actual attempt, instead of replacing it. Once I’m fine with what I’m actually at, I’ll overlay some ramp shader with some alpha color from 2.34 to my actual results in 2.33a.

Anyway, all of this is just proof-of-concept, as I still have to refine my method: I had some ideas during this night that ought to be tried out and which could enhance my results. I hope to put them in use and get some renders this very evening.

I won’t promise but I’ll try to put a link this evening to a bigger render. If not this evening, it will be the next. Which material would you like to see bigger: skin-like or jade-like?

Thank you for your interest in this very experimental (to me, at least!) thread.

Doesn’t exactly look like the SSS pictures in the link but good none the less.

You need to shine a light directly through the shape, and make the surroundings slightly darker, then we can compare it to the 'shot.

The skin shader in a larger render, please.

Are you using the blend texture method for sss that was posted somewhere here last year? I can’t remember the exact method, but it involved an empty a lamp and blend textures.

Or are you using translucency and/or other methods?

Sonix.

Sonix: sorry, hadn’t time yesterday evening to make bigger renders and to put them online. :expressionless: But I have better for you (see below): the blend files themselves (nothing secret in my experimentations - all feedback are needed) :smiley:

The ‘basic’ method I use is as following:
-put the SSS’ed object in a layer
-set the Translucency to the max
-set one or many lamps INSIDE the mesh with a mix of high-low Energy and Distance regular lamps (red colored in the area of ears, white in the plain areas of the body to be SSS’ed) and affecting only the layer (in fact, the Layer stuff is not mandatory, but a cleaner way to go and to experiment).

AO and Ramps (with one end of the spectrum set as Alpha) added further basic experimentations help achieve good results.

As I won’t probably be back to my computer before late this evening, here are the blendfiles that are available, so that Sonix could render himself bigger renders (sorry pal!)

skin-like attempt:
http://olivier.saraja.free.fr/elysiun/WIP/SSS/SSS-test01.blend

jade-like attempt:
http://olivier.saraja.free.fr/elysiun/WIP/SSS/SSS-test01.blend

These one have been made with 2.33a so no Ramps yet within, only AO. You’ll have to set them by yourselves (you’re one click away, anyway).

The ‘advanced’ method I’m currently on (no rendering available because still on my computer at home, stil needing refinements):
-copy the object to be SSS’ed, scale it down by 10% or so and Decimate it a bit (you can go heavy on decimating)
-set a low Dist value lamp with very low Energy value (in fact Energy = 1.000 / nb of vertice)
-parent the lamp to the decimated object and turni Dupli ‘on’ in order to get as much lamp than vertice

The result is a very low energy SSS effect. You still can add ‘red’ lamps in some areas (ears when backlight shining trough wanted, or the cheeks area for red color getting through) for fine results.

SSS effect is controlled by varying both Energy and Distance values

I’ll put online the blend file of the current experiment as soon as I can (tonight? %| )

The next step is to UV-map on Suzanne’s head (using LSCM of course :wink: I alread the map available, just have to paint on it) a translucy map: nose and ears areas will be set to close to white values, while other areas to quite dark values. In this case, lamps dupliverted could be all red. I still have to experiment with this, though…

In fact, I try to fake SSS using the very same technique to fake GI with dupliverted spots. I think the results are not physically accurate, but visually believable and appealing. Ramp shaders enhance more the results :wink:

This is the point to my experimentations, which will become useless once the SSS python script will be made available. But it’s interesting to work on anyway :smiley:

Note: As I made the blend files available, if you experiment on the same topic, I’ll appreciate that you use thoroughly the same scenes, provide your own blends, and of course stay within this thread, so that I could check results, compare, and make my own progresses without roaming through multiple threads :wink:

Thank you for your interest in this thread!

I’m sorry, but I can’t see the SSS effect. The larger renders are essential to see this. It actually just looks like a low-poly Suzanne with weird eyes to me…

Large render, please?

I don’t like this method of SSS. It doubles the scene geometry for a start, which must make the render time suffer greatly and surely you can’t scale non-uniform objects correctly can you? If you scale down a complex model like a human, won’t the inside of the mouth get messed up?

What you could do is use blenderman to export to aqsis or whatever and use a SSS shader. Isn’t it possible to do SSS with a texture plugin? Also can someone explain how the SSS script will achieve SSS? Does it just automate the duplicating/scaling?

:frowning:

My method is only experimental and not mean for real production work. I think it can work by dupliverting closed volumes using ALT_S for scaling along the normals. Moerover, you can have some play with this method with as few as one, two or three lamps at max, as seen in my blend files.

Dupliverting the lamps was just a test (not so concluding at the moment), an option for the effect to be carried out. Not an actual solution because I have NO solution for SSS right now: it’s all about experimenting funny ways to do it, nothing more ambitious.

As far as how the SSS script of the links works, no-one knows apart from the MakeHuman and allies coders team. As much as I can guess from the screenshots from the original french website, and the issues encountered by Manuel Bastioni with radiosity, I can only guess that, somehow, a radiosity pass is made, the vertex colour information retrieved, then tweaked according to some obscure algorythm, and then updated on the model for achieving a faked SSS effect.

As far as I know, this script relies on something else than my fool translucy-based SSS attempt with lamps.

Because of the lack of positive or encouraging feedback on this attempt, I have to consider it as failed, unfortunately. Perhaps will I come back on it someday, with fresher ideas, even if by this time the SSS python script is released.

Thank you for reading, anyway :slight_smile:

Sorry, I don’t think anyone meant to put you down. I think it’s great when people try to come up with ways of faking stuff. I recently found a tutorial on faking caustics but I’m not sure if blender can do it yet.

When it comes to subsurface scattering and things, it just makes me wish Blender had a more expandable material setup. I’ve really been looking into the whole Blender/aqsis thing. I wasn’t too keen on aqsis a while back because it seemed to spew out a lot of errors and it still does in some cases - I got one about it not supporting area lights.

But I looked at the feature list which includes DOF, true 3d transformation and deformation blurring, caustics, micro-polygon displacement mapping (very nice) and most importantly the ability to use programmable shaders, so I think I’m going to try and put it in my workflow. For things like SSS, you just call the internal function like this:

surface simple( float Ks = .7, Kd = .6, Ka = .1, roughness = .04 )
{
    normal Nf = faceforward( normalize(N), I);
    vector V = normalize(-I);

	uniform string raytype = "unknown";
	rayinfo( "type", raytype );

	if( raytype == "subsurface" )
	{
    	Ci = Ka*ambient() + Kd*diffuse(Nf);
	}
	else
	{
		Ci = subsurface(P) + Ks * specular(Nf, V, roughness);		
	}
}

Compile the shader and then you assign that shader to the model. The good thing about programmable shaders is how much you can customize them to get the look you want.