====== ArmA 2 Custom Face ====== **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";