******************************************************************************************
                             ___ _     _    __  __
                            | _ ) |___| |__|  \/  |__ _ _ _
                            | _ \ / _ \ '_ \ |\/| / _` | ' \
                            |___/_\___/_.__/_|  |_\__,_|_||_|

                             Blob Man v3.6 for POV-Ray v3.1x
    
                               by Peter Houston 1999, 2000

******************************************************************************************
     The latest version of the package is avilable from my website (see section 9.0)
******************************************************************************************
* = Changes to documentation since last version.

 0.0  INTRODUCTION
 1.0  INSTALLATION
 2.0  QUICK START
 3.0  BASIC FEATURES
   3.1  Blob_Man Macro
   3.2  Textures
   3.3  Origin Variables
 4.0  ADVANCED FEATURES
   4.1  Head Macro
   4.2  Torso Macro
   4.3  Hand Macro
   4.4  Feet Macro
   4.5  Hair Macro      
   4.6  Optional Parameters *
   4.7  Image Maps
   4.8  Array Format *
 5.0  COSTUME OBJECTS
   5.1  Limb Objects
   5.2  Costume Definition File
 6.0  HINTS & TIPS
 7.0  MISC INFO
   7.1  Creating Face Image Maps
   7.2  Creating Limb Image Maps
   7.3  Bump Maps
   7.4  Blob Man's Future
   7.5  Known Problems
 8.0  HISTORY *
 9.0  CONTACTING THE AUTHOR
10.0  CREDITS

******************************************************************************************
0.0  INTRODUCTION
******************************************************************************************
Blob Man is a articulated humanoid figure standing approximately 65 units tall.
Blob Man has, among others, the following user-defined features :-

Figure:  Build and skin texture, individual limb image_maps and bump_maps, clothing and
          props definable in external CDF file.
Head  :  Full movement, independently closing eyelids, turning eyes, iris colour, 
          mouth size, opening jaw with teeth and lip texture, hair growth and hair texture.
Arms  :  Full movement of both upperarms and forearms
Hands :  Full movement, independently articulated fingers.
Legs  :  Full movement of both thighs and calves.
Feet  :  Full movement.

These macros evolved from the excellent work of Govert Zoethout, who created the original 
blob man without legs or hands.

******************************************************************************************
1.0  INSTALLATION
******************************************************************************************
Copy all *.INC, *.PNG, *.POS and *.CDF files to one of the directories (folders) in your 
POV-Ray library path (as for example, the default include directory). If you dont know 
what they are, open your POVRAY.INI. If you have a PC running Windows95/98 or WindowsNT, 
they probably look something like this: 

Library_Path=C:\POV-Ray for Windows\include

******************************************************************************************
2.0  QUICK START
******************************************************************************************
Create a basic scene file similar to this : 

//*************************************
global_settings { 
    assumed_gamma 2.2
}

camera {  
    location  <-40, 100, -150.0>
    direction 1.5*z
    right     4/3*x
    look_at   <0.0, 35,  0.0>
}

background {rgb 0}

light_source {
    <0,100,-100>
    color red 1.0  green 1.0  blue 1.0
}

plane {
    y, 0
    pigment { rgb <0,1,0> }
}
                             
/***************************************************
The following code loads the Blob Man Include, Pose 
and Costume Definition Files and creates the figure 
located at <0,0,0>
****************************************************/
 
#include "blob_man.inc"
#include "default.pos"
#include "sample.cdf"

Blob_Man(0,0.5,1,<.75,1,1>,0,0,0,<.5,.5,.5>,0,0)

object {
    BlobMan 
    translate Origin_RL+<0,1,0>
}

// EOF

******************************************************************************************
3.0  BASIC FEATURES
******************************************************************************************

3.1  Blob_Man Macro
===================
Before the Blob_Man Macro can be called the "blob_man.inc" file needs to be included, also 
certain arrays need to be created for the pose positions, there is a sample pose library 
supplied with the Blob_Man package called "default.pos", which can be included also.  
The "blob_man_studio.pov" scene file creates a "bmstudio.pos" file when it is run, this 
contains the array data as it appears in the "default.pos" file, simply rename this file
to create your own pose library.

The syntax for calling the macro is as follows :-

Blob_Man( PoseNo , Build , Face_Map , Eye_Colour , Right_Lid , Left_Lid , HairStyle , 
          Hair_Col , Left_Hand , Right_Hand )
          
PoseNo    : [ FLOAT ] Array position for the pose (see "default.pos")
Build     : [ FLOAT ] Blob Threshold Level. Range : 0.31(Fat) to 1(Thin)
Face_Map  : [ FLOAT ] Image Map Number 0=No Image Map (see section 3.2)
Eye_Colour: [<R,G,B>] Colour of Iris.
Right_Lid : [ FLOAT ] Position of Right Eye Lid Range : 0=Open to 1=Closed 
Left_Lid  : [ FLOAT ] Position of Left Eye Lid Range : 0=Open to 1=Closed 
HairStyle : [ FLOAT ] Array position for the Hair Style (see "default.pos"} 
Hair_Col  : [<R,G,B>] Basic colour of hair if no Texture is declared ( see section 3.2} 
Right_Hand: [ FLOAT ] Array position for the Hand Type (see "default.pos"} 
Left_Hand : [ FLOAT ] Array position for the Hand Type (see "default.pos"} 

Once called an object BlobMan is declared, this can now be positioned as required.

3.2  Textures
=============
In its basic form Blob_Man declares two default textures, but these can be user defined,
along with an optional texture.

Skin_Tex : This is the overall texture for the figure, if it is undeclared the default 
           texture will be used.

           Default: Skin_Tex= texture {pigment{rgb <.9,.7,.6>}
                                finish{phong .3 phong_size 40}
                                normal{crackle .2 turbulence .7 scale .7}
                              }

Lip_Tex  : This is the texture for the figures lips, if it is undeclared the default 
           texture will be used.
                                      
           Default: Lip_Tex = texture {pigment{rgb <.7,.3,.2>}
                                finish{phong .3 phong_size 40}
                                normal{crackle .2 turbulence .7 scale .7}
                              }                                      

Hair_Tex : This is the texture for the figures hair, if it is undecalred then the Hair_Col
           <r,g,b> variable passed by the Blob_Man macro will be used to generate a 
           randomised hair colour.  There is no default hair texture.                    

Tooth_Pig: This is a pigment, NOT a texture, used for the colour of the teeth, if it is 
           undeclared the default pigment will be used.

           Default: Tooth_Pig = pigment {rgb 1}
           

In addition to these textures, there is also a defineable Image Map that is used for the 
face, this is called via the Blob_Man Macro and is represented by a number (see section 3.1).
The image maps are named bmface#.png with the # being the number in the macro.
There are currently only 5 image maps supplied with this package, however more will be 
more available on my web page (see section 9.0)
There are more image map options available refer to section 4.7
For tips on creating your own image maps refer to section 7.1

3.3  Origin Variables
=====================
The Blob_Man Macro declares the following Origin variables for you to locate the figure and
other objects in relation to the figure.

Origin_RA : Vector position of Right Wrist
Origin_RL : Vector position of Right Ankle

Origin_LA : Vector position of Left Wrist
Origin_LL : Vector position of Left Ankle

Simply translate the BlobMan object by one of these vectors to move that point to <0,0,0>.

eg. translate Origin_RL     
    This would move Blob man so that his Right Ankle is at <0,0,0>

******************************************************************************************
4.0  ADVANCED FEATURES
******************************************************************************************
Each of the macros that make up Blob Man can each be called individually if required.  This
could be useful if you do not want to use arrays, or if you wanted to remove or individually
scale various body parts.

Call all of these macros from within an object{} definition.  Skin_Tex and Lip_Tex need to be 
decalred before the macros are called or the default textures will be used (see section 3.2)

4.1  Head Macro
===============          
The syntax for using this macro is as follows :

head( Build , Eye_Colour , Right_Lid, Left_Lid , Eye_Rot , Lip , 
       Twist , Tip , Tilt, Face_Map )

Build     = [ FLOAT ] Blob Threshold Level (range 0.31(Fat) to 1(Thin))        - Standard:.5
Eye_Colour= [<R,G,B>] Iris Colour of eye 
Right_Lid = [ FLOAT ] Right Eye Lid Position  (Range : 0-Open to 1-Closed)     - Standard: 0
Left_Lid  = [ FLOAT ] Left Eye Lid Position  (Range : 0-Open to 1-Closed)      - Standard: 0
Eye_Rot   = [ FLOAT ] Eye Rotation Angle ((-)Left to (+)Right)                 - Standard: 0
Lip       = [ FLOAT ] Mouth Size (Range: -0.5(Small) to 0.5(Large))            - Standard: 0
Twist     = [ FLOAT ] Head rotation Right to Left (Range: -85 to 85)           - Standard: 0
Tip       = [ FLOAT ] Head position Front to Back (Range: -15 to 50)           - Standard: 0
Tilt      = [ FLOAT ] Head position Right Side to Left Side  (Range: -25 to 25)- Standard: 0
Face_Map  = [ FLOAT ] Image Map used for face 0=No Map (see section 3.2)


4.2  Torso Macro
================
The syntax for using this macro is as follows :

torso(Build , RA_S2E , RA_E2W , LA_S2E , LA_E2W , 
              RL_H2K , RL_K2A , LL_H2K , LL_K2A  )

Build  = [ FLOAT ] Blob Threshold Level (range 0.31(Fat) to 1(Thin)) - Standard: .5
RA_S2E = [<X,Y,Z>] Right Arm Shoulder to Elbow rotation vector       - Standard: <0,0,0>
RA_E2W = [<X,Y,Z>] Right Arm Elbow to Wrist rotation vector          - Standard: <0,0,0>
LA_S2E = [<X,Y,Z>] Left Arm Shoulder to Elbow rotation vector        - Standard: <0,0,0>
LA_E2W = [<X,Y,Z>] Left Arm Elbow to Wrist rotation vector           - Standard: <0,0,0>
RL_H2K = [<X,Y,Z>] Right Leg Hip to Knee rotation vector             - Standard: <0,0,0>
RL_K2A = [<X,Y,Z>] Right Leg Knee to Ankle rotation vector           - Standard: <0,0,0>
LL_H2K = [<X,Y,Z>] Right Leg Hip to Knee rotation vector             - Standard: <0,0,0>
LL_K2A = [<X,Y,Z>] Right Leg Knee to Ankle rotation vector           - Standard: <0,0,0>


4.3  Hand Macro
===============
The syntax for using this macro is as follows : 
Call this macro twice, once for each hand.

hand( Build , H_S2E , H_E2W , H_Rot , Hand, 
       F_Spread, FP_Pos, FR_Pos, FM_Pos, FI_Pos, FT_Pos )

Build    = [ FLOAT ] Blob Threshold Level (range 0.31(Fat) to 1(Thin)) - Standard: .5
H_S2E    =*[<X,Y,Z>] Arm Shoulder to Elbow rotation vector - standard: As torso RA/LA_S2E
H_E2W    =*[<X,Y,Z>] Arm Elbow to Wrist rotation vector    - standard: As torso RA/LA_E2W
H_Rot    = [<X,Y,Z>] Hand rotation Vector                  - standard: <0,0,0>                                
Hand     = [ FLOAT ] Right Hand = -1 / Left Hand = 1
F_Spread = [ FLOAT ] Finger Spread        - 0 = Closed   , 1 = Relaxed , 2 = Wide
FP_Pos   = [ FLOAT ] Pinky Position       - 0 = Straight , 1 = Relaxed , 2 = Curled
FR_Pos   = [ FLOAT ] Ring Position        - 0 = Straight , 1 = Relaxed , 2 = Curled
FM_Pos   = [ FLOAT ] Middle Position      - 0 = Straight , 1 = Relaxed , 2 = Curled
FI_Pos   = [ FLOAT ] Index Position       - 0 = Straight , 1 = Relaxed , 2 = Curled
FT_Pos   = [ FLOAT ] Thumb Position       - 0 = Straight , 1 = Relaxed , 2 = Curled

* These MUST be the same as the Torso Macro if they are to line up correctly.  

4.4  Feet Macro
===============
The syntax for using this macro is as follows : 

feet( Build , RF_H2K , RF_K2A , LF_H2K , LF_K2A , RF_Rot , LF_Rot )

Build  = [ FLOAT ] Blob Threshold Level (range 0.31(Fat) to 1(Thin)) - Standard: .5
RF_H2K =*[<X,Y,Z>] Right Leg Hip to Knee rotation vector   - Standard: As torso RL_H2K
RF_K2A =*[<X,Y,Z>] Right Leg Knee to Ankle rotation vector - Standard: As torso LL_H2K
LF_H2K =*[<X,Y,Z>] Right Leg Hip to Knee rotation vector   - Standard: As torso RL_K2A
LF_K2A =*[<X,Y,Z>] Right Leg Knee to Ankle rotation vector - Standard: As torso LL_K2A
RF_Rot = [<X,Y,Z>] Right Foot rotation Vector              - Standard: <0,0,0>
LF_Rot = [<X,Y,Z>] Left Foot rotation Vector               - Standard: <0,0,0>

* These MUST be the same as the Torso Macro if they are to line up correctly.  

4.5  Hair Macro
===============
The syntax for using this macro is as follows : 

hair( Hair_On, Hair_Rot, Hair_Col, Hair_Arch, Hair_Thck, Hair_Line, Hair_LDpth, 
      Hair_Wght, Hair_Hght, Hair_Length, Hair_Curl, Twist, Tip, Tilt )

Hair_On     = [ FLOAT ] Hair (1) or No Hair (0)
Hair_Rot    = [<X,Y,Z>] Rotation Vector for Hair                      - Standard: <0,0,0>
Hair_Col    = [<R,G,B>] Hair Colour, Used if Hair texture is not decalred (see 3.2)             
Hair_Arch   = [ FLOAT ] Arch hairline over head inline with ears (1) or Not (0)
Hair_Thck   = [ FLOAT ] Thickness of Hair (Best settings 0.15 to 0.5) - Standard: 0.25
Hair_Line   = [ FLOAT ] Height of Hairline (Best settings 3 to 6)     - Standard: 5
Hair_LDpth  = [ FLOAT ] Hairline profile Depth (Range : 0 to 1)       - Standard: 0.7
Hair_Wght   = [ FLOAT ] Hair Weight (Range: 0.005 to 0.05)            - Standard: 0.01
Hair_Hght   = [ FLOAT ] Hair Height (Range: 1 to 2)                   - Standard: 1
Hair_Length = [ FLOAT ] Hair Length (Range: 1 to 20)                  - Standard: 10
Hair_Curl   = [ FLOAT ] Curliness (Range 0-Straight to 0.1-Curly)     - Standard: 0.05
Twist       =*[ FLOAT ] Head Twist Angle                              - Standard: As head
Tip         =*[ FLOAT ] Head Tip Angle                                - Standard: As head  
Tilt        =*[ FLOAT ] Head Tilt Angle                               - Standard: As head  

* These MUST be the same as the Head Macro if it is to line up correctly.  

4.6  Optional Parameters
========================
There are a few optional parameters available that will change the way Blob Man appears,
these variables must be declared before the Macro's are called. (# = Default Setting)

BM_Ears   = [ FLOAT ] 2 = Normal Ears (#)
                      1 = Replace ears with small lumps as if under a swimming cap
                      0 = No ears

BM_Eyes   = [ FLOAT ] 1 = Normal Eyes (#) 
                      0 = No Eyes

BM_Toes   = [ FLOAT ] 1 = Bare Foot with toes (#)
                      0 = Replaces toes so that foot looks like it has a sock on                      

BM_Face   = [ FLOAT ] 1 = Normal Face Structure (#) 
                      0 = Removes Nose and Lips

BM_R_Foot = [ FLOAT ] 1 = Normal Right Foot (#)  
                      0 = Missing Right Foot                       

BM_L_Foot = [ FLOAT ] 1 = Normal Left Foot (#)  
                      0 = Missing Left Foot

BM_R_Hand = [ FLOAT ] 1 = Normal Right Hand (#) 
                      0 = Missing Right Hand

BM_L_Hand = [ FLOAT ] 1 = Normal Left Hand (#) 
                      0 = Missing Left Hand

BM_Hand_Scale = [<X,Y,Z>] = Vector to scale the hands by. Default = <1,1,1>

BM_Torso_Mass = [ FLOAT ] 1 = Normal Torso (#) 
                          0 = No Torso 
                         -1 = Guides

BM_Head_Mass = [ FLOAT ] 1 = Normal Head (#)
                         0 = No Head 
                        -1 = Guides

BM_Jaw = [ FLOAT ]  Range: 0 - 1  0= Closed, 1=Open. Default = 0.5

BM_Teeth = [ FLOAT ] 0 = No Teeth
                     1 = Teeth (#)

BM_Jowls = [ FLOAT ] Range 0 - 2 : Amount of mass added to sides of jaw, 
                                   Jowls. Default=0   

BM_Nose = [ FLOAT ] Range 0 - 1.25 : Size of Nose. Default = 0.5 

BM_Brow = [ FLOAT ] 0 = No Eyebrow Ridge
                    1 = Normal Eyebrow Ridge (#)

BM_Mouth = [ FLOAT ] Mouth Size (Range: -0.5(Small) to 0.5(Large)
           Note : declaring this will overide the lip variable sent via the 
                  macro.
           This variable is NOT set as a default.

BM_BodyStyle = [ FLOAT ] 0= Original Chest Styling (#)
                         1= New Chest Styling

The following parameters all have the same options

BM_R_Upperarm_Mass : Right Upper Arm =  
BM_L_Upperarm_Mass : Left Upper Arm  =
BM_R_Forearm_Mass  : Right Forearm   = [ FLOAT ] 2 = Muscles (#)
BM_L_Forearm_Mass  : Left Forearm    =           1 = Cylinders  
BM_R_Thigh_Mass    : Right Thigh     =           0 = Amputated 
BM_L_Thigh_Mass    : Left Thigh      =          -1 = Guides
BM_R_Calf_Mass     : Right Calf      =
BM_L_Calf_Mass     : Left Calf       =

Guide_Rad = [ FLOAT ] When using Guide Settings (-1) above this is the radius of
                      cylindrical sections.  Default = 2

Hair_Seed = [ FLOAT ] Random seed for the hair macro. Default = 77

4.7  Image Maps
===============
In addition to the basic Skin and Lip textures (section 3.2), image maps can also be applied
to each of the limb sections.

The image maps need to be in PNG format, with the alpha channel being used for transparent 
areas.

The following variables need to be set prior to the macros being called, the image map files 
need to be in the POV-Ray library path, or the same folder as the scene file.

Face_IMap       = [ "FILENAME.PNG" ] Image map to be used for the Head, replaces the basic
                                     maps, see section 3.2 
Torso_IMap      = [ "FILENAME.PNG" ] Image map to be used for the Torso. 
Upperarm_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Upperarm.
Upperarm_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Upperarm.
Forearm_R_IMap  = [ "FILENAME.PNG" ] Image map to be used for the Right Forearm.
Forearm_L_IMap  = [ "FILENAME.PNG" ] Image map to be used for the Left Forearm.
Hand_R_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Right Hand.
Hand_L_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Left Hand.
Thigh_R_IMap    = [ "FILENAME.PNG" ] Image map to be used for the Right Thigh.
Thigh_L_IMap    = [ "FILENAME.PNG" ] Image map to be used for the Left Thigh.
Calf_R_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Right Calf.
Calf_L_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Left Calf.
Foot_R_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Right Foot.
Foot_L_IMap     = [ "FILENAME.PNG" ] Image map to be used for the Left Foot.

Bump Maps can also be difined in the same way, however these will only be used if the above
image maps are defined.

The bump maps need to be in PNG format.

The following variables need to be set prior to the macros being called, the bump map files 
need to be in the POV-Ray library path, or the same folder as the scene file.

Face_BMap       = [ "FILENAME.PNG" ] Bump map to be used for the Head. 
Torso_BMap      = [ "FILENAME.PNG" ] Bump map to be used for the Torso. 
Upperarm_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Upperarm.
Upperarm_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Upperarm.
Forearm_R_BMap  = [ "FILENAME.PNG" ] Bump map to be used for the Right Forearm.
Forearm_L_BMap  = [ "FILENAME.PNG" ] Bump map to be used for the Left Forearm.
Hand_R_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Right Hand.
Hand_L_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Left Hand.
Thigh_R_BMap    = [ "FILENAME.PNG" ] Bump map to be used for the Right Thigh.
Thigh_L_BMap    = [ "FILENAME.PNG" ] Bump map to be used for the Left Thigh.
Calf_R_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Right Calf.
Calf_L_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Left Calf.
Foot_R_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Right Foot.
Foot_L_BMap     = [ "FILENAME.PNG" ] Bump map to be used for the Left Foot.

The following options can also be set, these only effect the above image maps.

Map_Finish = finish {} : Set the finish you wish to apply to the image maps.  
                         There is no default finish.

Map_Normal = normal {} : Set the normal you wish to apply to the image maps.  
                         There is no default normal.

Bump_Map_Size = [ FLOAT ] Bump Map Size, Default = 0.25

Refer to POV-Ray Documentation for more information on image and bump maps.

4.8 Array Format
================
The arrays that are created in bmstudio.pos can be written by hand if you necessary, the 
format of the arrays are pretty straight forward.  Refer to Arrays in the POV-Ray 
documentation for more information.

Pose_1
------
This array contains 12 rotation vectors of the limbs.
 
 1. RA_S2E - Right Arm Shoulder to Elbow rotation vector 
 2. RA_E2W - Right Arm Elbow to Wrist rotation vector
 3. LA_S2E - Left Arm Shoulder to Elbow rotation vector
 4. LA_E2W - Left Arm Elbow to Wrist rotation vector
 5. RL_H2K - Right Leg Hip to Knee rotation vector
 6. RL_K2A - Right Leg Knee to Ankle rotation vector
 7. LL_H2K - Left Leg Hip to Knee rotation vector
 8. LL_K2A - Left Leg Knee to Ankle rotation vector
 9. RH_Rot - Right Hand rotation vector
10. LH_Rot - Left hand rotation vector
11. RF_Rot - Right Foot rotation vector
12. LF_Rot - Left Foot rotation vector

e.g.

#declare Pose_1=array[1][12]
  {
     { <0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,<0,0,0>,
       <0,0,0>,<0,0,0>,<0,0,0>},
  }

Pose_2
------
This array contains 7 float values that relate to the Head and Hands
Eye_Rot     - see Head macro
Lip_Size    - see Head macro 
Head_Twist  - see Head macro
Head_Tip    - see Head macro
Head_Tilt   - see Head macro
Right_Hand  - Array position in Pose_Hand (see Pose_Hands below)
Left_Hand   - Array position in Pose_Hand (see Pose_Hands below)

e.g. 
#declare Pose_2=array[1][7]
  {
     { 0,0,0,0,0,0,1 },
  }

Pose_Hair
---------
This array only contains 1 vector for the rotaion vector of the hair

Hair_Rot - see Hair Macro

e.g.
#declare Pose_Hair_1=array[1][1]
  {
     { <0,0,0>  },
  }

Pose_Hair_2
-----------
This array contains 9 entries that relate to the Hair macro.
Hair_On     - see Hair macro
Hair_Arch   - see Hair macro
Hair_Thck   - see Hair macro
Hair_Line   - see Hair macro
Hair_LDpth  - see Hair macro
Hair_Wght   - see Hair macro
Hair_Hght   - see Hair macro
Hair_Length - see Hair macro
Hair_Curl   - see Hair macro

e.g.
#declare Pose_Hair_2=array[1][9]
  {
     { 0,0,0.25,5,0.7,0.01,1,10,0.05 },
  }

Pose_Hands 
----------
This array contains 6 float entries that relate to the Hand macro.

F_Spread - see Hand macro
FP_Pos   - see Hand macro
FR_Pos   - see Hand macro
FM_Pos   - see Hand macro
FI_Pos   - see Hand macro
FT_Pos   - see Hand macro

e.g.
#declare Pose_Hands=array[2][6]
  {
     { 1,1,1,1,1,2 },
     { 1,2,2,2,2,2 },
  }

******************************************************************************************
5.0  COSTUME OBJECTS
******************************************************************************************

5.1  Limb Objects
=================           
The following parameters are used to create clothing and props for Blob Man, they need to
be declared prior to the macros being called, and they must all be valid objects located 
around <0,0,0>.

Head_Object        = Objects located about the Head.       
Torso_Object       = Objects located about the Torso.       
Upperarm_R_Object  = Objects located about the Right Upperarm. 
Upperarm_L_Object  = Objects located about the Left Upperarm. 
Forearm_R_Object   = Objects located about the Right Forearm.  
Forearm_L_Object   = Objects located about the Left Forearm.  
Hand_R_Object      = Objects located about the Right Hand.
Hand_L_Object      = Objects located about the Left Hand. 
Thigh_R_Object     = Objects located about the Right Thigh.
Thigh_L_Object     = Objects located about the Left Thigh.
Calf_R_Object      = Objects located about the Right Calf.
Calf_L_Object      = Objects located about the Left Calf.
Foot_R_Object      = Objects located about the Right Foot.
Foot_L_Object      = Objects located about the Left Foot.

Note : If no texture is given to these objects they will adopt the Skin_Tex texture plus 
       any image maps assigned to that limb.    

The Objects defined above will be included even if the Mass parameters (i.e. Torso_Mass etc)
are set in such a way as to be missing, this is useful, if for example you wished to give
Blob_man a "Peg Leg".  It could also be possible to create a Skeleton, by defining all the 
bones as objects, and then removing the original body parts by setting their Mass=0

5.2  Costume Definition File
============================
The best way to define how blob man will look is to create a Costume Definition File (.cdf)
this is basically an include file with all the optional settings declared.  The advantage 
of using this method, is that the same CDF can be used in multiple scenes and likewise 
multiple CDF's can be used in the same scene.  All that needs to be done is include the 
correct CDF before the macros are called.

eg.
#include "blob_man.inc"
#include "default.pos"

#include "sample1.cdf"
Blob_Man(0,0.5,0,<0,0,0>,0,0,0,<0,0,0>,0,0)

#include "sample2.cdf"
Blob_Man(1,0.5,0,<0,0,0>,0,0,0,<0,0,0>,0,0)

etc.                  

Included in the Blob_man package are two .cdf files; "layout.cdf" lists all the optional 
parameters and their settings, and "sample.cdf" is a basic Costume Definition File.

More Costume Definition Files are available on from my home page (see section 9.0)

******************************************************************************************
6.0  HINTS & TIPS
******************************************************************************************
To help in the positioning of Blob_Man, there is a DeBug variable that can be set, this 
generates visible locators to the ends of Blob Mans limbs, note that this will only work
if any limb objects created contain the current object as part of the definition i.e.
  #declare Head_Object= union { object{Head_Object}
                                Costume Objects ...
                                .....
                        }
See sample.cdf for further examples.

When testing scenes avoid using hair, as the parse time increases considerably, if you
declare a variable eg. HairTest=0, then multiply Hair setting by this number you only need 
to set HairTest=1 to turn the hair back on for all figures.

eg. 
  If using the Blob_Man Macro
     Blob_Man (0 , 0.5 , 1 , <.75,1,1> , 0 , 0 , 3*HairTest , <.5,.5,.5> , 0 , 0 )

  If using the hair Macro
     hair( 1*HairTest, <0,0,0>, <1,0,1>, 0, 0.25, 5, 0.7, 0.01, 1, 10, 0.05, 0, 0, 0 )

Use "blob_man_studio.pov" to create new poses, at [320 x 240, No AA] you can easily see if 
the limbs are positioned correctly, and it only takes about 80 seconds to render 
(without hair); thats on a P133 w/128Mb Ram.
Then when your happy with the pose, rename the "bmstudio.pos" file to create your own single 
Pose file, you can either do this for each figure required and simply include each pose 
before you run the Blob_Man Macro (So that the Arrays are re-defined each time), or you can 
copy all the poses into one Pose Library file and include it once, this was how "default.pos" 
was created. 
For further information about arrays, refer to the POV-Ray Documentation.

Use Body_Part_Viewer.pov in conjunction with a CDF file to model clothing/props for 
Blob Man.

******************************************************************************************
7.0  MISC INFO
******************************************************************************************

7.1  Creating Face Image Maps
=============================
The image maps used for Blob Mans face are PNG format which uses the Alpha Channel.  
Use an Image Editor that allows you to edit the Alpha channel (eg. Paint Shop Pro, PhotoShop)
then create the areas that you wish to be mapped, in the alpha channel.  In the main image 
roughly colour the same areas the colours you want, it doesn't matter how accurate you are
as the aplha channel will make unwanted areas transparant.  Save in PNG Format with the 
file name "bmface#.png" where # is a unique number.
Look at "template.png" for reference points on the face, if you rename this file 
"bmface99.png" then use this as the Face_Map you will see where these reference points appear
on the model.

7.2  Creating Limb Image Maps
=============================
As with the face image maps, these need to be in PNG format with the Alpha channel being 
used for transpancy.  There are no sample limb image maps, but below are the dimensions for
the different limbs:

Head, Torso, Hands, Feet             = 1:1 (eg. 600 Wide x 600 High)
Upper Arms, Forearms, Thighs, Calves = 1:2 (eg. 300 Wide x 600 High)

Note about hands :
    Because the Image maps are applied after the fingers have been positioned, if the
    image map has a pattern, it will not look the same if the finger positions are changed.
    
7.3  Bump Maps
==============    
Bump maps should be Grayscale and in PNG format.  Alpha Channel is not used for Bump Maps.

7.4  Blob Man's Future
======================
Here are just a few ideas I have for improving Blob Man.

   * Bending and Twisting of the torso.
   * Windows UI to effectively mimic "blob_man_studio.pov"
      This is something I would need help with, any offers :)
   * Blob Lady and Blob Kids.                            
   
7.5  Known Problems
===================
Blob Man doesn't stand on y,0 when you translate him using the Origin_LL or Origin_RL 
variables, this is because the Origins are actually the end of the leg, not the bottom
of the feet.  Until I can figure out the lowest point of the feet when they are rotated
you need to translate the figure by y*1 when the feet rotated <0,0,0>, when the feet are 
at other rotions, I'm afraid its trial and error, but using the DeBug variable helps
(see section 6.0).

If the Arms are rotated above the shoulders (>90 degrees) then the Origin_LA and Origin_RA
variables do not locate properly, and you have to translate by an extra y*11 (the upperarm
length).

******************************************************************************************
8.0  HISTORY
******************************************************************************************
v3.6    01 Mar 2000     Remodelled the Chest, there is now an optional parameter to switch
                        between the old and new style, for compatability the original style 
                        is the default.  Added nose size and eyebrow ridge options.  Added
                        a section to this doc about Array formats.  Included a very basic
                        "How to.." document on CDF creation (HOW2CDF.TXT) 

v3.5    25 Jul 1999     Added extra modelling detail to head.  New optional variables
                        available for Teeth, Jaw and Jowls.

v3.0    06 Jul 1999     Added Limb Objects to allow creation of clothing and props.
                        Added image and bump maps to all limbs.
                        Maintained Macro Settings for backwards compatibilty with older
                        pose files.
                        Remodeled Nose and lips slightly.
                        Included sample.cdf and layout.cdf

v2.0    23 Apr 1999     Remodeled the head, and added variable image_map textures for the 
                        face, eye lid variables in head macro now have a range of 0-1 and 
                        are can be set for each eye, so winking is possible.
                        Remodeled the feet.
                        Added mass to the arms and legs.
                        Remodeled the hands and articulated the fingers, hand macro now 
                        needs to be called twice, once for each hand.
                        Externally defined skin texture.
                        Added a Blob_Man Macro to create a complete figure from a given 
                        pose number as defined in a Pose File (see "default.pos")
                        Rewrote the motion mechanics to make the code more readable.
                        Generally cleaned up the code.
                        Generated more Pre-Defined poses (see "default.pos")

v1.0    09 Apr 1999     Initial release.

v0.0    March  1999     Govert Zoethout published his source files.
                        Original Macros had static arms and no hands or legs, and was in 
                        his native language (which I can't speak)

******************************************************************************************
9.0  CONTACTING THE AUTHOR
******************************************************************************************
If you wish to contact me with bug reports, bug fixes, criticisms, comments, suggested 
improvements, questions, etc. you can reach me by email at:

   E-mail  : houston.graphics@iname.com

   Homepage: http://welcome.to/HoustonGraphics
             -or-
             http://members.xoom.com/HoustonGraph

If you do make any improvements to these macros please let me know, so that I can include
them in future releases.

******************************************************************************************
10.0  CREDITS
******************************************************************************************
Thanks go to the following :-

POV-Ray Team for producing such fantastic software, and FREE too !!!!

Govert Zoethout who without his original model, this work would never have come about.

Chris Colefax for the template of this readme file, producing excellent include files,
and inspiring me to contribute to the POV-Ray community.

All the helpful POV-Ray users around the world, who frequent the POV-Ray Newsgroups.
( news.povray.org )
  
******************************************************************************************
POV-Ray(tm) and Persistence of Vision(tm) are registered trademarks of the POV-Ray Team(tm)