====== ArmA 2 Custom Face ======
[[https://www.pmctactical.org/forum/viewforum.php?f=50|ArmA 2 Forum]], [[:arma2|ArmA 2 Home]], [[arma2:config|ArmA 2 Config]], [[arma2:file_formats|ArmA 2 File Formats]], [[arma2:missions|ArmA 2 Missions]], [[arma2:modeling|ArmA 2 3D Modeling]], [[arma2:scripting|ArmA 2 Scripting]], [[arma2:terrain|ArmA 2 Terrain]], [[arma2:texturing|ArmA 2 Texturing]], [[arma2:tools|ArmA 2 Tools]]
**ArmA 2 Custom Face**
This is how you add custom faces to your soldiers.
BIS CfgFaces config can be found on **Dta\bin.pbo** config.
class CfgFaces
{
class Default
{
class Default
{
name = "";
head = "";
material = "";
texture = "#(rgb,8,8,3)color(0.5,0.5,1,1)";
east = 0;
west = 0;
identityTypes[] =
{
"Default"
};
};
class Custom
{
name = "";
head = "";
material = "";
texture = "#(rgb,8,8,3)color(1,1,1,1)";
front = "#(rgb,8,8,3)color(1,1,1,1)";
side = "#(rgb,8,8,3)color(1,1,1,1)";
back = "#(rgb,8,8,3)color(1,1,1,1)";
east = 0;
west = 0;
identityTypes[] = {};
};
};
};
And then more in the **characters.pbo**
class CfgFaces
{
class Default
{
class Custom;
};
class Man : Default
{
class Default
{
name = $STR_CFG_FACES_DEFAULT;
texture = "\ca\characters\hhl\hhl_46_CO.paa";
head = "defaultHead";
identityTypes[] = {};
material = "\ca\characters\heads\male\defaulthead\data\hhl_white.rvmat";
};
class Custom : Custom
{
name = $STR_CFG_FACES_CUSTOM;
texture = "#(argb,8,8,3)color(0.596,0.412,0.365,1)";
head = "defaultHead";
identityTypes[] = {};
material = "\ca\characters\heads\male\defaulthead\data\hhl_white.rvmat";
};
class Face01 : Default
{
name = "$STR_FN_Man_Face01";
texture = "\ca\characters\hhl\hhl_01_CO.paa";
disabled = 0;
identityTypes[] =
{
"Default",
"",
"",
"Head_RU",
"Head_RU_CO",
"Head_CDF",
"Head_CDF_CO",
"Head_INS",
"Head_GUE",
"Head_CIV",
""
};
};
class Face01_camo1 : Face01
{
head = "defaultHead_camo1";
name = "$STR_FN_Man_Face01_camo1";
material = "\CA\characters\Heads\Male\DefaultHead\Data\Camo1_hhl.rvmat";
disabled = 1;
identityTypes[] =
{
"",
"",
"Head_RU_Camo",
"Head_RU_CO_Camo",
"Head_CDF_Camo",
"Head_CDF_CO_Camo",
"Head_INS_Camo",
"Head_GUE_Camo"
};
};
class Face01_camo2 : Face01_camo1
{
head = "defaultHead_camo2";
name = "$STR_FN_Man_Face01_camo2";
material = "\CA\characters\Heads\Male\DefaultHead\Data\Camo2_hhl.rvmat";
disabled = 1;
};
====== CfgFaces ======
ArmA 2 CfgFaces
Used in conjunction with setFace.
person SetFace "cfgFaces.ClassName"; // quotes required
this SetFace "Marylin";
soldier1 SetFace "Face33";
"Face01" to "Face107".
A subset of 6 Camo faces are available for each of above.
The full set of class names for "face77" would be:
Face77, Face77_camo1, Face77_camo2, Face77_camo3, Face77_camo4, Face77_camo5 and Face77_camo6
====== Structure ======
class CfgFaces
{
class Default; // held in engine's ca_bin
class Man: Default
{
class Default; // held in ca_chars
class FaceWhatever: Default
{
name = "$STR_Whatever"; // every class, different string name
texture = "\some\texture\somewhere.paa"; // THE face for this
head = defaultHead; //classname in cfgHeads
material = "\some\rvmat\somewhere.rvmat";
disabled = false; // always TRUE for inherited camo faces
};
class OneOfSixCamos: FaceWhatever
{
/* uses the same face texture (obviously) */
disabled = true; // always
name = "$STR_UniqueName";
head = "alwaysOneOf6Classes"; // changes wounds
material = "\AlwaysOneOfSix\Different\FacePaints.rvmat";
}
One single head model is used for ALL faces. On which, a different base texture is applied for EVERY 'face'.
Separately, each of these faces have different face paint, and they, require a separate head class to reflect the different wound appearances.
ALL of the camo derivatives use one of six common face paints.
Specifying \root and .paa extension are essential.
head = inevitably leads to one, single, defaultp3d held in \ca\characters\man\defaulthead\defaulthead.p3d;
====== Subset themes ======
The above 107 faces are duplicated, class wise in black and green masks also a women models, and, a few face models for some special US soldiers.
====== Adding a Face ======
Camouflage subclasses are not required.
class CfgFaces
{
class Default; // held in engine's ca_bin
class Man: Default
{
class Default; // held in ca_chars
class FaceWhatever: Default
{
disabled = false; // should be part of default, but was overlooked
name = "$STR_Whatever";
texture = "\some\texture\somewhere.paa"; // THE face for this
identityTypes[] =
{
"Default",
"Head_USMC",
"Head_USMC_CO",
"",
"",
"Head_CDF",
"Head_CDF_CO",
"",
"Head_GUE",
"Head_CIV",
""
};
};
====== Example African (black) Faces ======
African black faces for characters
African names:
class CfgWorlds
{
class GenericNames
{
class PMC_Somali_Names
{
class FirstNames
{
adalberto = "Adalberto";
//etc
};
class LastNames
{
morales = "Morales";
// etc
Face configs:
class CfgFaces
{
class Man;
class PMC_Somali_Faces: Man
{
class Default
{
name = "$STR_CFG_FACES_DEFAULT";
texture = "\ca\characters\hhl\hhl_31_CO.paa";
head = "BlackHead";
identityTypes[] = {};
material = "\ca\characters\heads\male\BlackHead\data\hhl_black.rvmat";
};
class Custom: Default
{
name = "$STR_CFG_FACES_CUSTOM";
texture = "#(argb,8,8,3)color(0.596,0.412,0.365,1)";
head = "BlackHead";
identityTypes[] = {};
material = "\ca\characters\heads\male\BlackHead\data\hhl_black.rvmat";
};
class Face26: Default
{
name = "$STR_FN_Man_Face26";
texture = "\ca\characters\hhl\hhl_26_CO.paa";
disabled = 0;
identityTypes[] = {"Default","","","Head_USMC","Head_USMC_CO","Head_CDF","Head_CDF_CO","Head_INS","Head_GUE","Head_CIV",""};
};
class Face27: Default
{
name = "$STR_FN_Man_Face27";
texture = "\ca\characters\hhl\hhl_27_CO.paa";
disabled = 0;
identityTypes[] = {"Default","","","Head_USMC","Head_USMC_CO","Head_CDF","Head_CDF_CO","Head_INS","Head_GUE","Head_CIV",""};
};
// etc
Then in character's class you make:
genericNames = "PMC_Somali_Names";
faceType = "PMC_Somali_Faces";