-Joe- 101 Posted August 5, 2020 Morning all. I've been encountering the "Cannot Load Material File" error when trying to apply my new .rvmat's to some textures I've been working on. I've checked, double-checked and triple-checked that the pathing is correct several times now to no avail. When creating the .rvmat, I utilised the original (in this case, from CUPs Dev Branch for the HIL ACUs), changed the extension to a .bin, utilised the A3 Tools CfgConvert to convert it into a .cpp, made the necessary changes and then did the process in reverse to turn it back into an .rvmat file. Here's an example of the uniform code below. class ALT_AR_Lizard_Uniform_Naval: CUP_U_B_HIL_ACU_Rolled_CCE { author="Joe"; scope=2; scopeCurator=2; displayName="ACU (Lizard - Naval)"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_universal_F.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_LizardNaval_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_LizardNaval_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; hiddenSelectionsMaterials[]= { "ALT_Units\data\uniforms\blouse.rvmat", "ALT_Units\data\uniforms\pants.rvmat", "CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; class ItemInfo: UniformItem { uniformClass="Altis_Man_Army_RIF_Naval2"; containerClass="Supply150"; mass=40; uniformModel="-"; }; }; }; The "code" button has thrown it a little out of place, but you can see the gist of it. Any help would be much appreciated. \o Share this post Link to post Share on other sites
Jackal326 1182 Posted August 6, 2020 Try putting a '\' at the beginning of your hiddenSelectionsMaterials path as you have done with your texture paths. i.e. hiddenSelectionsMaterials[]= { "\ALT_Units\data\uniforms\blouse.rvmat", "\ALT_Units\data\uniforms\pants.rvmat", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; 1 Share this post Link to post Share on other sites
-Joe- 101 Posted August 6, 2020 Sadly, no luck - it's still popping out the same error even with the '\' at the front. Is it possibly an issue with the .rvmat file itself? class StageTI { texture="ALT_Units\data\uniforms\blouse_ti.paa"; }; ambient[]={1,1,1,1}; diffuse[]={0.40000001,0.40000001,0.40000001,1}; forcedDiffuse[]={0,0,0,0}; emmisive[]={0,0,0,1}; specular[]={0.2,0.2,0.2,1}; specularPower=100; PixelShaderID="Super"; VertexShaderID="Super"; class Stage1 { texture="ALT_Units\data\uniforms\Blouse_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.5,0.5,0.5,0.5,DT)"; uvSource="tex"; class uvTransform { aside[]={1,0,0}; up[]={0,1,0}; dir[]={0,0,0}; pos[]={0,0,0}; }; }; class Stage3 { texture="#(argb,8,8,3)color(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 Stage4 { texture="ALT_Units\data\uniforms\Blouse_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="ALT_Units\data\uniforms\Blouse_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,64,1)fresnel(3.48,0.03)"; uvSource="tex"; class uvTransform { aside[]={1,0,0}; up[]={0,1,0}; dir[]={0,0,0}; pos[]={0,0,0}; }; }; class Stage7 { texture="a3\data\env_cloth_green_co.paa"; uvSource="tex"; class uvTransform { aside[]={1,0,0}; up[]={0,1,0}; dir[]={0,0,0}; pos[]={0,0,0}; }; }; Share this post Link to post Share on other sites
Jackal326 1182 Posted August 6, 2020 The RVMAT looks good to me (if it was a syntax issue or a typo it would throw a different error). The only thing I can think is it is maybe an issue when you're converting/packing the RVMAT(s) into a PBO. What tool are you using to pack your PBO? Share this post Link to post Share on other sites
-Joe- 101 Posted August 6, 2020 1 hour ago, Jackal326 said: The RVMAT looks good to me (if it was a syntax issue or a typo it would throw a different error). The only thing I can think is it is maybe an issue when you're converting/packing the RVMAT(s) into a PBO. What tool are you using to pack your PBO? Hm, it's good to know it's not syntax related. I'm using the Addon Builder that's part of A3 Tools. Share this post Link to post Share on other sites
Jackal326 1182 Posted August 6, 2020 1 minute ago, -Joe- said: Hm, it's good to know it's not syntax related. I'm using the Addon Builder that's part of A3 Tools. My experience with addon builder is limited, but one thing I learnt from my short time using it is its not very forth-coming with errors should there be any. Have you tried Mikero's Tools? The free tools available at the link provided are pretty cool and are very detailed in their feedback on any errors that may come back (even so much as to give you the line number of the error in configc/rvmats etc). Share this post Link to post Share on other sites
-Joe- 101 Posted August 6, 2020 Just now, Jackal326 said: My experience with addon builder is limited, but one thing I learnt from my short time using it is its not very forth-coming with errors should there be any. Have you tried Mikero's Tools? The free tools available at the link provided are pretty cool and are very detailed in their feedback on any errors that may come back (even so much as to give you the line number of the error in configc/rvmats etc). I've had a look at downloading them a few times before, however I was never entirely certain which tools I needed to download for packing and so forth. Share this post Link to post Share on other sites
Jackal326 1182 Posted August 6, 2020 Just now, -Joe- said: I've had a look at downloading them a few times before, however I was never entirely certain which tools I needed to download for packing and so forth. To be honest I've got nearly every tool available. For your needs I'd recommend (version numbers correct at time of copy-pasting :P): ArmA3p.1.53.7.44.Installer.exe - fully installs P drive and unpacks (provided you have DePBO) all core files for reference (and unRaps rvmats/config.cpps automatically provided you have DeRap) DePbo.7.46.0.17.Installer.exe DeRap.1.78.7.45.Installer.exe Eliteness.3.83.7.45.Installer.exe - I think you only need this to install the dll but I'd suggest getting it for compatibility's sake ExtractPbo.2.20.7.45.Installer.exe MakePbo.2.04.7.44.Installer.exe - DOS interface for re-packing MikerosToolBox.1.01.7.52.Installer.exe - all in one launcher for all Mikero Tools pboProject.2.63.7.45.Installer.exe - User friendly UI for MakePBO Rapify.1.82.7.45.Installer.exe Might need to install in a certain order, but not sure, just use trial and error... Then once they're all installed use pboProject to try and pack your addon. If it throws an error about amissing rvmats then the path is wrong, if it throws an error about a missing line or corrupt rvmat then its the rvmat at fault. If it works and your addon works then AddonBuilder is a bigger piece of 💩 than I gave it credit for and its been the route cause all along (or at least a setting in it not copying over RVMATs) Share this post Link to post Share on other sites
krzychuzokecia 719 Posted August 6, 2020 1 hour ago, -Joe- said: I'm using the Addon Builder that's part of A3 Tools. In Addon Builder go to Options, and then in the first field "List of files to copy directly", add semicolon and then *.rvmat For some reason Addon Builder will binarize .rvmat files, even when you have binarizing ticked off. Share this post Link to post Share on other sites
-Joe- 101 Posted August 6, 2020 1 hour ago, Jackal326 said: To be honest I've got nearly every tool available. For your needs I'd recommend (version numbers correct at time of copy-pasting :P): ArmA3p.1.53.7.44.Installer.exe - fully installs P drive and unpacks (provided you have DePBO) all core files for reference (and unRaps rvmats/config.cpps automatically provided you have DeRap) DePbo.7.46.0.17.Installer.exe DeRap.1.78.7.45.Installer.exe Eliteness.3.83.7.45.Installer.exe - I think you only need this to install the dll but I'd suggest getting it for compatibility's sake ExtractPbo.2.20.7.45.Installer.exe MakePbo.2.04.7.44.Installer.exe - DOS interface for re-packing MikerosToolBox.1.01.7.52.Installer.exe - all in one launcher for all Mikero Tools pboProject.2.63.7.45.Installer.exe - User friendly UI for MakePBO Rapify.1.82.7.45.Installer.exe Might need to install in a certain order, but not sure, just use trial and error... Then once they're all installed use pboProject to try and pack your addon. If it throws an error about amissing rvmats then the path is wrong, if it throws an error about a missing line or corrupt rvmat then its the rvmat at fault. If it works and your addon works then AddonBuilder is a bigger piece of 💩 than I gave it credit for and its been the route cause all along (or at least a setting in it not copying over RVMATs) I'll sort these out in a wee bit. \o 47 minutes ago, krzychuzokecia said: In Addon Builder go to Options, and then in the first field "List of files to copy directly", add semicolon and then *.rvmat For some reason Addon Builder will binarize .rvmat files, even when you have binarizing ticked off. That seems to have had... some effect, to say the least. I'm getting an entirely new error now. Cannot open object cup\creatures\people\military\cup_creatures_people_military_usarmy\acu\cup_acu_1_rolled.p3d Share this post Link to post Share on other sites
-Joe- 101 Posted August 10, 2020 Now that I'm actively looking into this again, I'll drop a copy of the full config for viewing, in case anyone can spot the... well, the issue. I'm either blind or stupid, because as far as I can see the pathing is as it should be. class CfgPatches { class Altis_AR_Retextures { units[]= { "Altis_Man_Army_RIF_WoodlandLight", "Altis_Man_Army_RIF_WoodlandDark", "Altis_Man_Army_RIF_Naval", "Altis_Man_Army_RIF_Naval2", }; weapons[]= { "ALT_AR_Digital_Uniform_WoodlandLight", "ALT_AR_Digital_Uniform_WoodlandDark", "ALT_AR_Digital_Uniform_Naval", "ALT_AR_Lizard_Uniform_Naval", }; author="Joe"; requiredAddons[]= { "a3_characters_f", "a3_characters_f_blufor", "a3_data_f", "a3_weapons_f", "a3_characters_f_exp", "A3_Characters_F_EPB", }; }; }; class CfgFactionClasses { class AAFJoe_GF { displayName="AAF Joe"; }; }; class CfgEditorSubcategories { class AAFJoe_Categ_Infantry { displayName="Infantry"; }; class AAFJoe_Categ_Cars { displayName="Cars"; }; class AAFJoe_Categ_Tracked { displayName="Tracked"; }; class AAFJoe_Categ_Tanks { displayName="Tanks"; }; }; class CfgWeapons { //inherited classes class CUP_U_B_HIL_ACU_Rolled_CCE; class UniformItem; class HeadgearItem; //code begins here //uniforms class ALT_AR_Digital_Uniform_WoodlandLight: CUP_U_B_HIL_ACU_Rolled_CCE { author="Joe"; scope=2; scopeCurator=2; displayName="ACU (Digital - Light Woodland)"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_universal_F.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalWoodlandLight_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalWoodlandLight_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; hiddenSelectionsMaterials[]= { "\ALT_Units\data\uniforms\blouse.rvmat", "\ALT_Units\data\uniforms\pants.rvmat", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; class ItemInfo: UniformItem { uniformClass="Altis_Man_Army_RIF_WoodlandLight"; containerClass="Supply150"; mass=40; uniformModel="-"; }; }; class ALT_AR_Digital_Uniform_WoodlandDark: CUP_U_B_HIL_ACU_Rolled_CCE { author="Joe"; scope=2; scopeCurator=2; displayName="ACU (Digital - Dark Woodland)"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_universal_F.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalWoodlandDark_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalWoodlandDark_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; hiddenSelectionsMaterials[]= { "\ALT_Units\data\uniforms\blouse.rvmat", "\ALT_Units\data\uniforms\pants.rvmat", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; class ItemInfo: UniformItem { uniformClass="Altis_Man_Army_RIF_WoodlandDark"; containerClass="Supply150"; mass=40; uniformModel="-"; }; }; class ALT_AR_Digital_Uniform_Naval: CUP_U_B_HIL_ACU_Rolled_CCE { author="Joe"; scope=2; scopeCurator=2; displayName="ACU (Digital - Naval)"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_universal_F.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalNaval_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalNaval_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; hiddenSelectionsMaterials[]= { "\ALT_Units\data\uniforms\blouse.rvmat", "\ALT_Units\data\uniforms\pants.rvmat", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; class ItemInfo: UniformItem { uniformClass="Altis_Man_Army_RIF_Naval"; containerClass="Supply150"; mass=40; uniformModel="-"; }; }; class ALT_AR_Lizard_Uniform_Naval: CUP_U_B_HIL_ACU_Rolled_CCE { author="Joe"; scope=2; scopeCurator=2; displayName="ACU (Lizard - Naval)"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_universal_F.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_LizardNaval_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_LizardNaval_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; hiddenSelectionsMaterials[]= { "\ALT_Units\data\uniforms\blouse.rvmat", "\ALT_Units\data\uniforms\pants.rvmat", "CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat", "" }; class ItemInfo: UniformItem { uniformClass="Altis_Man_Army_RIF_Naval2"; containerClass="Supply150"; mass=40; uniformModel="-"; }; }; }; class CfgVehicles { //inherited classes class CUP_Creatures_Military_HIL_Man_Base; //code begins here //composite class Altis_Man_Army_RIF_WoodlandLight: CUP_Creatures_Military_HIL_Man_Base { author="Joe"; scope=2; scopecurator=2; //editorPreview="REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"; displayName="Rifleman (Light Woodland)"; faction="AAFJoe_GF"; editorSubcategory="AAFJoe_Categ_Infantry"; side = 1; uniformclass="ALT_AR_Digital_Uniform_WoodlandLight"; model = "CUP\Creatures\People\Military\CUP_Creatures_People_Military_USArmy\ACU\CUP_ACU_1_rolled.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalWoodlandLight_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalWoodlandLight_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; linkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; respawnLinkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; }; class Altis_Man_Army_RIF_WoodlandDark: CUP_Creatures_Military_HIL_Man_Base { author="Joe"; scope=2; scopecurator=2; //editorPreview="REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"; displayName="Rifleman (Dark Woodland)"; faction="AAFJoe_GF"; editorSubcategory="AAFJoe_Categ_Infantry"; side = 1; uniformclass="ALT_AR_Digital_Uniform_WoodlandDark"; model = "CUP\Creatures\People\Military\CUP_Creatures_People_Military_USArmy\ACU\CUP_ACU_1_rolled.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalWoodlandDark_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalWoodlandDark_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; linkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; respawnLinkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; }; class Altis_Man_Army_RIF_Naval: CUP_Creatures_Military_HIL_Man_Base { author="Joe"; scope=2; scopecurator=2; //editorPreview="REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"; displayName="Rifleman (Naval)"; faction="AAFJoe_GF"; editorSubcategory="AAFJoe_Categ_Infantry"; side = 1; uniformclass="ALT_AR_Digital_Uniform_Naval"; model = "CUP\Creatures\People\Military\CUP_Creatures_People_Military_USArmy\ACU\CUP_ACU_1_rolled.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_DigitalNaval_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_DigitalNaval_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; linkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; respawnLinkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; }; class Altis_Man_Army_RIF_Naval2: CUP_Creatures_Military_HIL_Man_Base { author="Joe"; scope=2; scopecurator=2; //editorPreview="REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"; displayName="Rifleman (Lizard Naval)"; faction="AAFJoe_GF"; editorSubcategory="AAFJoe_Categ_Infantry"; side = 1; uniformclass="ALT_AR_Digital_Uniform_Naval"; model = "CUP\Creatures\People\Military\CUP_Creatures_People_Military_USArmy\ACU\CUP_ACU_1_rolled.p3d"; hiddenSelections[]= { "Camo1", "Camo2", "camo3", "flag", "clan", "insignia" }; hiddenSelectionsTextures[]= { "\ALT_Units\data\uniforms\ALT_ACU_Blouse_LizardNaval_co.paa", "\ALT_Units\data\uniforms\ALT_ACU_Pants_LizardNaval_co.paa", "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2_od_co.paa" }; linkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; respawnLinkedItems[]= { "ItemMap", "ItemCompass", "ItemWatch" }; }; }; Share this post Link to post Share on other sites
Jackal326 1182 Posted August 11, 2020 OK, so it looks like "\CUP\Creatures\People\Military\CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat" (as well as all other CUP paths) are incorrect and are MOD paths, not absolute paths (I'm mixing terminology but I'll try to explain what I mean). Using that path Arma will look for a PBO called 'CUP.pbo' with a subfolder 'Creatures' and within that another sub-folder 'People' etc. However, that isn't the actual path when you unpack the PBO. As there isn't a PBO named 'CUP.PBO' - its called 'cup_creatures_people_military_russia.pbo' Some packing tools allow you to setup Project paths (I don't really know how it works as I'm old-fashioned and have never used/learnt its functionality or the terminology to describe it apparently...). Anyway, when unpacked these generate "false" paths - so the actual path should read: "CUP_Creatures_People_Military_Russia\data\oakley_2.rvmat" Likewise the model path would read: model = "CUP_Creatures_People_Military_USArmy\ACU\CUP_ACU_1_rolled.p3d"; Trim those "false" project-paths from your config and you should have better luck.🤞 Share this post Link to post Share on other sites