Hautautujaaa 23 Posted May 31, 2021 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. 9 Share this post Link to post Share on other sites
Valken 622 Posted May 31, 2021 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
W0lle 1050 Posted May 31, 2021 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
krzychuzokecia 717 Posted May 31, 2021 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; }; }; }; 2 Share this post Link to post Share on other sites
Hautautujaaa 23 Posted May 31, 2021 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
krzychuzokecia 717 Posted May 31, 2021 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! 1 Share this post Link to post Share on other sites
drebin052 323 Posted June 1, 2021 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. 2 Share this post Link to post Share on other sites
Hautautujaaa 23 Posted June 2, 2021 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. 1 Share this post Link to post Share on other sites
Hautautujaaa 23 Posted June 3, 2021 The addon is out now. Here's the download link: https://steamcommunity.com/sharedfiles/filedetails/?id=2506646755 Thanks everyone! 🙂 Please tell me if you encounter some issues. 7 Share this post Link to post Share on other sites
Private Evans 498 Posted June 4, 2021 https://i.redd.it/p9t4fq0qe3p31.jpg Share this post Link to post Share on other sites
krzychuzokecia 717 Posted June 4, 2021 Congrats! And on the topic of "baby faces", and "Vietnam", well... how about some music? 2 Share this post Link to post Share on other sites