bagginsbill opened this issue on Sep 19, 2005 ยท 24 posts
bagginsbill posted Mon, 19 September 2005 at 1:21 PM
(Note: This is kind of long - sorry - hope some of you find this interesting.)
First a little theory. Lots of folks have correctly talked of the importance of subsurface scattering for realism. More than a few (including me) have tried to use the FastScatter node to accomplish it. I did a lot of very intricate tests with it to see what it's actually doing. My conclusion is the FastScatter node is mostly useless, except for synthesizing the glow of a backlit ear. And I don't have a clue what the Wacro "Add Subsurface Scattering" is trying to do. All I ever get from it is a wierd sunburn effect. So I started thinking about how skin really works and how to model it.
A very simplistic model of the skin is that there are two layers. The outer layer (epidermis) is mostly dead skin cells. They form a thin, flaky, translucent, yellow-white layer on top of the living skin. (Think of what dandruff looks like.) Underneath are living skin cells with lots of capillaries bringing blood everywhere.
Figure 1 shows a torus I rendered in Poser with a procedural texture I made to model the two skin layers. For the lower layer I just used a solid blood red. For the epidermis I used a displacement map made from the Granite node. I gave the flakes a slightly yellow color and made them about 30% transparent, with a very slight specular reflection. Note that Firefly is lying about the texture in this render - it shows big red dots at this scale which is totally incorrect. The red parts are much smaller than a single pixel in this render.
Figure 2 shows a closeup of the middle of the torus - the part that points straight at the camera. Now you can better see the structure of my skin model. Gaps between the flakes reveal the blood. The flakes are pink because they are so thin the blood colors them somewhat.
Figure 3 shows a closeup of the edge of the torus. You should notice two things. The flakes are now slightly sticking out in front of each other, so when you look through one, you get the color of others behind it. So they are much less pink. Also, from this angle the 3-dimensional flakes are almost completely obscuring the blood layer. Another effect of this angle is that the specular reflections from individual flakes are adding up to a lot more white.
In figure 4 I used a trick to get the overall macro effect that this produces. It is showing a section of the right side of the torus. I rendered this at 3200 by 3200 pixels (10 minutes!). I then loaded the render into photoshop, blurred it (to get the effect of these things being microscopic) and shrank the image to the size you see here. You might disagree with me, but that sure looks a lot like skin to me!!! Notice that the center is much redder than the edge, there is a generally mottled appearance to it, and that the edges are showing a bit more specular reflection, even without the presence of a backlight at the right angle.
To my mind, figure 4 demonstrates that the model is a reasonable simulation of skin. But if you try this texture on a figure, the poser renderer does a terrible job - it looks like Figure 1. The problem is that it is sampling individual microscopic points and then coloring an entire pixel based on the sample. However, the macro level is actually very simple to model with Poser.
On the right I show three renders with and without my material nodes. I inserted two lo-res Jessi figures. The one on the left is stock - untouched. The one on the right has the material room changes I describe below that hopefully model the skin better. I used three lights, an IBL, a fill light on the front, and a back light from behind and a little riight. I then just moved the camera and my fill light around to show you three examples.
(Please note: I have 3 monitors and these look different on each. The subtle red-shift produced here may look too weak or too strong on your monitor. Hopefully, now that you know how I'm doing this, you should be able to make your own adjustments for your scenes.)
The Edge Blend node basically chooses a color based on interpolating between two specified colors using the angle between the viewer and the surface normal as the input. So I added an Edge Blend going from Black to RGB 20,0,0 to the Alternate_Diffuse channel. This gives the figure the realistic ruddy tone on the skin that faces the camera. You can play with the Inner_Color and attenuation to adjust the affect. Higher attenuation will make the red drop faster as you get to the edge.
The Blinn node is a specular reflection model that is strongest when the camera AND a light source form a shallow angle to the surface AND the light source points toward the camera. I set the Blinn specular color to RGB 255,255,240 - just slightly yellow.
Finally, because there is a tiny bit of shine on skin that faces the camera, I set the regular Specular_Color value to RGB 31,31,31. You don't want a sharp highlight so I set the size to 0.1 - I often play with this to make the skin look more/less wet. Experiment.
I'm not showing it here, but I also used a TINY bit of Spot node on the skin texture to get some of the color mottling that I see in Figure 4. Just a tiny bit. In an extreme closeup, you can really see it.
Did this post help you? Two much detail or not enough? Let me know. I've learned a lot from the community and want to give back so don't be shy.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)
linkdink posted Mon, 19 September 2005 at 2:09 PM
Very interesting. I'd like to see a closeup of a full size render with your techniques. Hopefully face_off will chime in here with his knowledged and experiences as well.
Letterworks posted Mon, 19 September 2005 at 2:17 PM
b.m. thank you! mike
Singular3D posted Mon, 19 September 2005 at 3:04 PM
Exiting investigation. Great job.
randym77 posted Mon, 19 September 2005 at 3:09 PM
Wow, that looks great.
svdl posted Mon, 19 September 2005 at 3:15 PM
Thanks for sharing this info - very useful!
The pen is mightier than the sword. But if you literally want to have some impact, use a typewriter
msg24_7 posted Mon, 19 September 2005 at 3:41 PM
Some very interesting information... Thank you!
Yesterday's the past, tomorrow's the future, but today is a gift. That's why it's called the present.
dlk30341 posted Mon, 19 September 2005 at 4:23 PM
Thanks for sharing! Great info here :)
bagginsbill posted Mon, 19 September 2005 at 4:34 PM
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)
bagginsbill posted Mon, 19 September 2005 at 4:35 PM
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)
randym77 posted Mon, 19 September 2005 at 4:39 PM
Holy guacamole! That looks amazing!
face_off posted Mon, 19 September 2005 at 5:14 PM
Creator of PoserPhysics
Creator
of OctaneRender
for Poser
Blog
Facebook
PapaBlueMarlin posted Mon, 19 September 2005 at 6:06 PM
Very cool :) There's been a lot of great stuff for the skin. Is there any tricks to make the eyes look not so dead?
randym77 posted Mon, 19 September 2005 at 6:29 PM
It's just normal lighting, because P6's advanced lighting is still beyond me. And I used the contour textures, because those are the ones I have. (I wish I had gotten the standard hi-res instead, but I didn't know any better at the time.)
Faery_Light posted Mon, 19 September 2005 at 7:51 PM
Question... Is this for P6 only or can it be done in P5?
Let me introduce you to my multiple personalities. :)
BluEcho...Faery_Light...Faery_Souls.
DCArt posted Mon, 19 September 2005 at 7:54 PM
PapaBlueMarlin posted Mon, 19 September 2005 at 8:34 PM
Randy, try adding a really low setting displacement using either the spots or granite node and see if that adds something to the texture...
tastiger posted Mon, 19 September 2005 at 8:50 PM
What I would be interested in seeing is a setup for material nodes that could be a starting point to completely procedural skin texture
The supreme irony of life is that hardly anyone gets out of
it alive.
Robert A. Heinlein
11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz 3.50 GHz
64.0 GB (63.9 GB usable)
Geforce RTX 3060 12 GB
Windows 11 Pro
linkdink posted Tue, 20 September 2005 at 1:01 AM
Great stuff, guys, keep it coming, keep experimenting... I see things I like in all 3 approaches above....
Casette posted Tue, 20 September 2005 at 3:04 AM
Thanks for sharing it, bagginsbill. I want to try it :)
CASETTE
=======
"Poser isn't a SOFTWARE... it's a RELIGION!"
Indoda posted Tue, 20 September 2005 at 3:11 AM
Thank you - this is excellent experimentation. Off to try it. Keep it coming, please.
The important thing is not to stop questioning.
- Albert Einstein
Indoda
Tiny posted Tue, 20 September 2005 at 4:25 AM
Fantastic experiments and results!
Thank you all for sharing.
I wish some of our Python gurus could come up with a helpful texture tool
where at least some of this could be set up.
Tiny posted Tue, 20 September 2005 at 4:53 AM
Duh...
Just noticed there is a Pythong script that do this.
:oP
Message edited on: 09/20/2005 04:53
takezo3001 posted Sat, 07 January 2006 at 11:26 AM
Hell YEAH! Finally an answe4r to my $200+ question! My problem with P6's Fast scatter is that it's IMPOSSIBLE to use cast-shadows making that FYCKIN' node comnpletely useless for a truly realistic render! The problem with this is the fact that they use SSS in the mat nodes instead of in raytracing! thereby making it completely useless! I'm pissed, because I spent $200+ for this feature! Thanks alot for this, I'm bookmarking this right now!