Jump to content

Recommended Posts

Ahoy mates. In case anyone else has been bothered that the characters in Arma III are exclusively scruffy middle-aged men, I went through every vanilla and Apex face and adjusted textures and normal maps to make them appear younger and gave them a proper shave as well. 

 

Imgur collection to get an idea: 

 

https://imgur.com/a/tAi5KPu

 

I haven't written any configs to turn this into an actual mod, so I will just drop the raw files here for now. If someone finds this interesting enough to go through the hurdle of writing configs, please PM me.

 

E: It's out now: 

 

https://steamcommunity.com/sharedfiles/filedetails/?id=2506646755

 

Thanks everyone! And special thanks to krzychuzokecia. 

  • Like 9

Share this post


Link to post
Share on other sites

Very cool...

 

I want to see this as a mod as well. I think it can be done by looking at other face mod configs and just changing the texture file names to match, with updated credits.

Share this post


Link to post
Share on other sites

Checked only the pictures yet. Very well done. 👍

 

Yes, it's pretty easy to make an addon out of it. Just needs a config written.

 

Hautautujaaa, could you please provide the faces a one .zip archive? Or store them somewhere at google drive, one drive or dropbox? Can't download the folders from mediafire without a premium account.

Share this post


Link to post
Share on other sites

Example of config:

class CfgPatches
{
	class mycooladdon
	{
		units[]={};
		weapons[]={};
		requiredVersion=0.1;
		requiredAddons[]={"A3_Characters_F"};
	};
};

class CfgFaces
{
	class Default;
	
	class Man_A3: Default
	{
		class Default;
		
		class mycoolface_1: Default
		{
			author="methecoolguy";
			displayname="My Cool Face 1";
			head="GreekHead_A3"; //there are various head models in A3, "GreekHead_A3" is white, Greek one, "NATOHead_A3" is white, 'Murican one, forgot how other ethnicities are called, sorry
			identityTypes[]={"mycoolidentity_1"}; //okay I admit I forgot if this one is really needed, but here you can link your face texture with a specific identity (like those used for campaign characters: Miller, Kerry etc.)
			texture="\mycooladdon\data\coolface_1_co.paa"; //path to main texture itself
			material="\mycooladdon\data\coolface_1.rvmat"; //path to rvmat where you can make your face appear with custom TI or bumpmap
			materialWounded1="\mycooladdon\data\coolface_1_injury.rvmat";
			materialWounded2="\mycooladdon\data\coolface_1_injury.rvmat";
			textureHL="\A3\Characters_F\Heads\Data\hl_White_bald_co.paa"; //hands/arms texture, again there are several available, all kinds of colours, some with tattoos, some muscular, some scrawny, some old... you get it
			materialHL="\A3\Characters_F\Heads\Data\hl_White_bald_muscular.rvmat";
			textureHL2="\A3\Characters_F\Heads\Data\hl_White_bald_co.paa";
			materialHL2="\A3\Characters_F\Heads\Data\hl_White_bald_muscular.rvmat";
			disabled=0;
		};
	};
};

class CfgIdentities //again - I don't think this is really needed for face pack, but if you want to make some identities/characters that you can later use in missions/campaigns, that's how you do it
{
	class mycoolidentity_1
	{
		name="Cool Guy";
		face="mycoolface_1";
		author="methecoolguy";
		speaker="Male08ENG"; //quite obviously, there are many voice actors available, in several languages
		pitch=0.85; //with pitch control you can make the same voice sound a bit different - it's kind of funny sounding, but it is what it is
		glasses="none"; //add glasses for your Cool Guy to wear - I forgot what's the class for (very cool) aviators
	};
};

It's probably not perfect, but should get you going.

 

Edit: I guess you could even inherit from the class of the vanilla face you edited, so the config (CfgFaces) could be even simpler. If I'm not mistaken.

class CfgFaces
{
	class Default;
	
	class Man_A3: Default
	{
		class Default;
      	class BIFaceWhatever: Default
		
		class mycoolBIFaceWhatever: BIFaceWhatever
		{
			author="methecoolguy";
			displayname="My Cool BIFaceWhatever";
			texture="\mycooladdon\data\coolface_1_co.paa"; //path to your texture
			material="\mycooladdon\data\coolface_1.rvmat"; //path to rvmat - but it's possible you don't really need it (rvmat from original face will suffice), so delete this line
			materialWounded1="\mycooladdon\data\coolface_1_injury.rvmat"; //delete this line too if not needed
			materialWounded2="\mycooladdon\data\coolface_1_injury.rvmat"; //and this too
			disabled=0;
		};
	};
};

 

  • Like 2

Share this post


Link to post
Share on other sites

Thanks krzychuzokecia. Works great, however, it seems I need to create custom RVMATs as the paths for the bump map and other maps are defined there. After that is done everything should be a breeze.  

 

Is there a way to convert vanilla RVMATs to a readable format to use them as a template? 

 

 

Share this post


Link to post
Share on other sites

I don't think so - it was some time ago (a year or more), but when I was making my custom face, I either found something in Arma 3 Samples on Steam, or used .rvmat from A2:OA Data Pack.

 

Anyway, here's an example face .rvmat:

class StageTI
{
	texture="mycooladdon\mycoolface_ti_ca.paa";
};
ambient[]={2,2,2,1};
diffuse[]={0.40000001,0.31999999,0.30000001,1};
forcedDiffuse[]={0.2,0.40000001,0.40000001,0.1};
emmisive[]={0.80000001,0.30000001,0.64999998,0.69999999};
specular[]={0.050000001,0.050000001,0.050000001,1};
specularPower=60;
PixelShaderID="Skin";
VertexShaderID="Skin";
class Stage1
{
	texture="mycooladdon\mycoolface_nohq.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage2
{
	texture="#(argb,8,8,3)color(0,0,0,0.0,MC)";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage3
{
	texture="mycooladdon\mycoolface_co.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage4
{
	texture="mycooladdon\mycoolface_as.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage5
{
	texture="mycooladdon\mycoolface_smdi.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage6
{
	texture="#(ai,64,1,1)fresnel(10.0,6.0)";
	uvSource="none";
};

 

And one for injured version:

class StageTI
{
	texture="mycooladdon\mycoolface_ti_ca.paa";
};
ambient[]={2,2,2,1};
diffuse[]={0.40000001,0.31999999,0.30000001,1};
forcedDiffuse[]={0.2,0.40000001,0.40000001,0.1};
emmisive[]={0.80000001,0.30000001,0.64999998,0.69999999};
specular[]={0.050000001,0.050000001,0.050000001,1};
specularPower=60;
PixelShaderID="Skin";
VertexShaderID="Skin";
class Stage1
{
	texture="mycooladdon\mycoolface_nohq.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage2
{
	texture="a3\characters_f\heads\data\m_w1_mc.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage3
{
	texture="mycooladdon\mycoolface_co.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage4
{
	texture="mycooladdon\mycoolface_as.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage5
{
	texture="mycooladdon\mycoolface_smdi.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage6
{
	texture="#(ai,64,1,1)fresnel(10.0,6.0)";
	uvSource="none";
};

Also when you're packing the .pbo using BI's Addon Builder, remember to go into options and add "*.rvmat" to the exceptions at the very top (so, for example "*.p3d;*.paa;*.rvmat") - for some reason game doesn't like binarized RVMATs (or Addon Builder messes them up).

 

Good luck, those are great face textures, and would come in handy!

  • Like 1

Share this post


Link to post
Share on other sites
15 hours ago, Hautautujaaa said:

Is there a way to convert vanilla RVMATs to a readable format to use them as a template?

 

Use BI's own CfgConvert tool. Drag the rvmat that you want to edit (i.e. m_white_01.rvmat) onto BINToCPP and that should debinarise the vanilla .rvmat into a readable format (.cpp). Once you're done tinkering with it, rename the extension back to .rvmat and you'll be good to go.

  • Like 2

Share this post


Link to post
Share on other sites
On 6/1/2021 at 3:56 AM, drebin052 said:

 

Use BI's own CfgConvert tool. Drag the rvmat that you want to edit (i.e. m_white_01.rvmat) onto BINToCPP and that should debinarise the vanilla .rvmat into a readable format (.cpp). Once you're done tinkering with it, rename the extension back to .rvmat and you'll be good to go.

 

Thank you very much. If I hadn't already figured out you can use Mikero's deRapify for that, that would've been an absolute lifesaver. I managed to create .rvmats for couple characters that were not wildly off, but still not as good as the originals and it literally took an entire day to do so. But you know what they say − work hard not smart. 😆

 

Now that I can use the original .rvmats the release should be around corner − writing those configs won't take long. Stay tuned and thanks everyone for the support. 😉

 

E: The configs are now ready for the most part, still couple errors and have to clean up some things. Expect release at some point during the weekend. 

  • Like 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×