Table of Contents

ArmA 2 Custom Face

ArmA 2 Forum, ArmA 2 Home, ArmA 2 Config, ArmA 2 File Formats, ArmA 2 Missions, ArmA 2 3D Modeling, ArmA 2 Scripting, ArmA 2 Terrain, ArmA 2 Texturing, 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";