POV-Ray : Newsgroups : povray.binaries.images : Chinese Lady : Re: Chinese Lady Server Time
31 Jul 2024 14:28:40 EDT (-0400)
  Re: Chinese Lady  
From: Ive
Date: 15 Dec 2009 05:10:48
Message: <4b2760a8@news.povray.org>
Thomas de Groot wrote:
> Like Kenneth, I am interested in knowing how you applied your technique. It 
> sounds like fully procedural for creating the textures, but I imagine that 
> the final run is uv-mapped on the figure?
> 

Basically it is fairly simple and it is just about creating a stack of
partial transparent textures.
And for each of these texture the various properties (pigment & finish)
of the skin are controlled by uv_mapped grayscale images used within
pigment_pattern statements.
This technique to control not only the pigment but also apply variations 
within the finish is around since many within these newsgroups.

In case SSS is used even the ground layer is not fully opaque but e.g.
P_Face is based on an uv-mapped pigment_pattern "pigment" where the used
grayscale image should represent the distance of the scull bones from
the surface in the same way as a specularity map represents the oiliness
of a specific part of the skin.

The basic pigment might be one of the usual image maps for poser people
or it can be just procedural to add some freckles or it can be again a
pigment_pattern where the grayscale image represents e.g. brightness
variations or freckles.
The skin of the "Chinese lady" does not use any "image"-map at all.


#declare SkinColor    = <0.6, 0.5, 0.33>;
#declare SkinOiliness = 0.3;
#declare ...


#declare PP_Head = pigment{image_map{png "HeadBaseSkin" interpolate 2}}
#declare S_Head  = pigment{image_map{png "HeadBaseSpec" interpolate 2}}

#local C_Face_0 = rgb SkinColor * 1.05;
#local C_Face_1 = rgb SkinColor * 0.95;


#local P_Face = pigment {
   pigment_pattern {uv_mapping PP_Head}
   pigment_map {
     [0 C_Face_0 transmit 0.1]
     [1 C_Face_0 transmit 0.3]
   }
}

#local F_Skin_S0 = finish {
   ambient 0  diffuse 1
   specular 0.01 roughness 0.11
   phong 0.01  phong_size 2
   brilliance 1
}

#local F_Skin_S1 = finish {
   ambient 0  diffuse 1 - 0.1 * SkinOil
   specular 0.01 + 0.75 * SkinOil roughness 0.06
   phong 0.01+0.5*MyLin_SkinOil  phong_size 5
   metallic 0.4 brilliance 1.05
}

#local T_Face_S0 = texture {
   pigment {P_Face}
   normal {N_Face}
   finish {F_Skin_S0}
}

#local T_Head_S1 = texture {
   pigment {P_Face}
   normal {N_Face}
   finish {F_Skin_S1}
}


When the pigment_pattern statements are nested into depth the placement
of the uv_mapping statement is important as otherwise POV-Ray claims
that it "cannot layer over a patterned texture" even if it obviously can
- in this case.


#local M_Head = material {
   texture {
     pigment_pattern {uv_mapping S_Head}
     texture_map{
       [0 T_Head_S0]
       [1 T_Head_S1]
     }
   }
}

#declare M_Face = material {
   texture {T_Head}
   texture {T_MakeupGround)
   texture {T_MakeupRouge}
   texture {T_MakeupEyeliner}
   texture {T_MakeupLipstick}
   ...
   // for SSS
   interior {
     media {
       scattering...
     }
   }
}

to give you an idea but this is just out of my head as I'm not at home 
and in fact the source itself is really a mess as I'm currently just 
experimenting and testing. My final goal is to have full parametrized
control over the skin appearance only by declaring a for a few variables 
(or by using a macro) like e.g.

#declare SkinColor    = ...
#declare SkinTone     = ...
#declare SkinAge      = ...
#declare SkinFreckles = ...
#declare SkinOil      = ...

and then just applying the generated M_Face, M_Torso, M_Limbs and so on 
materials to the poser figure body parts.

hope this helps

-Ive


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.