DH144 1 Posted June 25, 2023 Hello, I am trying to retexture the F/A-181 from the Jets DLC. I used the following game texture as template: air_f_jets.pbo/Plane_Fighter_01/Data/Fighter_01_fuselage_01_co.paa I extracted the paa file and converted in to png in TexView2. Then I edited the png with paint.net. all i changed was the serial number, so just one small part on the texture. Then I "saved as" (in png format) and converted to paa using TexView2. I put the paa in the mission folder, selected play scenario in editor and ran the command in the debug console: jet1 setObjectTexture [0, "Fighter_01_fuselage_01_co.paa"]; The problem is that the texture has lower quality compared to the unchanged texture. I put an unchanged F/A-181 next to jet1 and jet1 has a noticeably lower resolution. To troubleshoot, I did the same process but instead of using an edited file, I used an unchanged texture file straight from the Addon pbo. I simply copied this file into the mission folder and ran the same command. The result was that the textures loaded but again with the same decrease in quality. And this is where I need help, because I have no idea why the quality is less if I am literally using the original file as my retextured file, which has the same resolution and has no changes made to it. I tried this with an Ifrit as well, the result was the same decrease of texture quality even though I used an unchanged base game texture. Does anyone have an idea why the resolution is worse? Thank you in advance, and I hope I wrote everything according to the Guidelines and in the correct forum. Share this post Link to post Share on other sites
Jackal326 1181 Posted June 26, 2023 I may be wrong but it might be because when textures are loaded from main game PBOs, i.e. the default textures, they're pre-loaded/cached before you ever see them in-game. When they're loaded from a mission PBO as you are doing in your example, the textures are loaded on demand and as such are not pre-cached and are loaded at a lower mip-map/quality to load them faster. If you were to make your re-texture into an addon (complete with config etc) and load it that way I feel your issue would disappear... Share this post Link to post Share on other sites
DH144 1 Posted June 27, 2023 Thank you for your replay, The solution would be to create an Addon that lets me place said plane with the retexture from the editor. But how would I have the retextured plane show up in the editor? Since I am new to creating addons I went ahead and tried this with help from a tutorial: My file set up is plane_textures with Data folder and config.ccp inside. Inside Data I put wasp1.paa, that is the retexture of the Plane. I converted plane_textures to a pbo with Addon Builder inside a folder @PLANE_TEXTURES/Addons and put @PLANE_TEXTURES folder inside common/Arma 3/Addons. This is the code I used for config.ccp: class cfgPatches { class dhplanetextures { units[] = {"Plane_Textures_Mod";}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {""}; }; }; class cfgFactionClasses { class Plane_Texture_Faction { displayName = "DH Plane Texture"; priority = 3; side = 1; icon = ""; }; }; class CfgVehicles { class B_Plane_Fighter_01_F; class Wasp_camo_1: B_Plane_Fighter_01_F { author = "dh"; displayName = "Wasp Camo 1"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"plane_textures/Data/wasp1.paa"}; faction = "Plane_Texture_Faction"; scope = 2; }; }; So far it is not working. There is nothing new showing up in the editor. Share this post Link to post Share on other sites
Jackal326 1181 Posted June 28, 2023 I've not done any work with vehicle re-textures but I just checked out the config for the relevant plane and saw this: hiddenSelections[] = {"Camo1","Camo2","CamoGlass","camo_cockpit_1","camo_cockpit_2","camo_cockpit_3","camo_cockpit_5","number_01","number_02","number_03"}; As such, it looks like your hiddenSleection reference is incorrect, try changing it to "Camo1" in your config... EDIT: Just re-read your post and saw that it wasn't even showing up in the editor, try this and see if it shows in the default category... Spoiler class cfgPatches { class dh_plane_textures { units[] = {"Plane_Textures_Mod"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Air_F_Jets"}; }; }; // I'm commenting this part out because it doesn't *look* right but I've no experience to fix it, lets just get the plane working in the default category first... //class cfgFactionClasses //{ // class Plane_Texture_Faction // { // displayName = "DH Plane Texture"; // priority = 3; // side = 1; // icon = ""; // }; //}; class CfgVehicles { class Air; class Plane: Air { class HitPoints; }; class Plane_Base_F: Plane { class AnimationSources; class HitPoints: HitPoints { class HitHull; }; class Components; class ViewPilot; }; class B_Plane_Fighter_01_F: Plane_Base_F { class AnimationSources; class HitPoints: HitPoints { class HitHull; }; class Components; class ViewPilot; }; class Wasp_camo_1: B_Plane_Fighter_01_F { scope = 2; author = "dh"; displayName = "Wasp Camo 1"; hiddenSelections[] = {"Camo1"}; hiddenSelectionsTextures[] = {"plane_textures/Data/wasp1.paa"}; //faction = "Plane_Texture_Faction"; }; }; 1 Share this post Link to post Share on other sites
DH144 1 Posted June 29, 2023 Thank you for the corrections, I tested the code. So the default category is Bluefor - NATO - Planes and the retextured plane should show up there? Because I still cannot find it. Share this post Link to post Share on other sites
DH144 1 Posted June 30, 2023 Also, do I have to set up a P drive or is that optional? When I was creating the Addon with the Addon builder I get an error. It only works when binarize is checked. the error I get is: Build failed. Result code=code1 CfgConvert task failed. Share this post Link to post Share on other sites
DH144 1 Posted July 21, 2023 So, after trying to put together an Addon and testing Addon retextures made by other players I finally found the solution. Texture quality needs to be set to Ultra in video Settings for the textures to be displayed in their original resolution. I had mine set to high. Interestingly, the quality of any retexture is lower if not set to Ultra. Even alternative vanilla textures from "change vehicle appearance" have reduced quality. But changing to Ultra completely fixes this regardless of using SetObject command, retextures from Addons or vanilla alternative textures. 1 Share this post Link to post Share on other sites
DH144 1 Posted September 7, 2023 So I have a follow up question: Why do I need the full inheritance tree for B_Plane_Fighter_01_F? Let me explain. I tried 2 different codes to add a retextured version of the F/A-181. They both work and lead to the exact same result (as far as I can tell, that is kind of my question though) class CfgPatches { class NATO_CSG_14 { units[] = {"NATO_CSG_14_Wasp_01", "F_181_Pilot"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Air_F_Jets", "A3_Air_F_Jets_Plane_Fighter_01", "A3_Characters_F_Jets"}; }; }; class cfgFactionClasses { class Plane_Textures { displayName = "NATO (CSG-14)"; priority = 3; side = 1; icon = ""; }; }; class CfgVehicles { /*extern*/ class Air; class Plane: Air { /*extern*/ class HitPoints; }; class Plane_Base_F: Plane { /*extern*/ class AnimationSources; class HitPoints: HitPoints { /*extern*/ class HitHull; }; /*extern*/ class Components; }; class Plane_Fighter_01_Base_F: Plane_Base_F { }; class B_Plane_Fighter_01_F: Plane_Fighter_01_Base_F { }; class NATO_CSG_14_Wasp_01: B_Plane_Fighter_01_F { displayName = "F/A-181 Black Wasp II"; author = "DH14"; faction = "Plane_Textures"; side = 1; crew = "F_181_Pilot"; hiddenSelections[] = {"Camo1","number_01","number_03"}; hiddenSelectionsTextures[] = {"\NATO_CSG_14\data\wasp1.paa", "\NATO_CSG_14\data\n1.paa", "\NATO_CSG_14\data\n2.paa"}; editorPreview = "\NATO_CSG_14\data\preview\preview1.paa"; }; class B_Fighter_Pilot_F; class F_181_Pilot: B_Fighter_Pilot_F { displayName = "Fighter Pilot (CVW)"; author = "DH14"; faction = "Plane_Textures"; side = 1; scope = 2; scopeArsenal = 2; }; }; For the second code, instead of using: (so the class inheritance for the aircraft) /*extern*/ class Air; class Plane: Air { /*extern*/ class HitPoints; }; class Plane_Base_F: Plane { /*extern*/ class AnimationSources; class HitPoints: HitPoints { /*extern*/ class HitHull; }; /*extern*/ class Components; }; class Plane_Fighter_01_Base_F: Plane_Base_F { }; class B_Plane_Fighter_01_F: Plane_Fighter_01_Base_F { }; I used just: class B_Plane_Fighter_01_F; With this change, the final code looks like this: class CfgPatches { class NATO_CSG_14 { units[] = {"NATO_CSG_14_Wasp_01", "F_181_Pilot"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Air_F_Jets", "A3_Air_F_Jets_Plane_Fighter_01", "A3_Characters_F_Jets"}; }; }; class cfgFactionClasses { class Plane_Textures { displayName = "NATO (CSG-14)"; priority = 3; side = 1; icon = ""; }; }; class CfgVehicles { class B_Plane_Fighter_01_F; class NATO_CSG_14_Wasp_01: B_Plane_Fighter_01_F { displayName = "F/A-181 Black Wasp II"; author = "DH14"; faction = "Plane_Textures"; side = 1; crew = "F_181_Pilot"; hiddenSelections[] = {"Camo1","number_01","number_03"}; hiddenSelectionsTextures[] = {"\NATO_CSG_14\data\wasp1.paa", "\NATO_CSG_14\data\n1.paa", "\NATO_CSG_14\data\n2.paa"}; editorPreview = "\NATO_CSG_14\data\preview\preview1.paa"; }; class B_Fighter_Pilot_F; class F_181_Pilot: B_Fighter_Pilot_F { displayName = "Fighter Pilot (CVW)"; author = "DH14"; faction = "Plane_Textures"; side = 1; scope = 2; scopeArsenal = 2; }; }; So, my question is: why do I need the full inheritance tree for B_Plane_Fighter_01_F? Will I run into problems later on if I use the simplified code? Thank you for reading this. Share this post Link to post Share on other sites
Jackal326 1181 Posted September 7, 2023 2 hours ago, DH144 said: [...] Will I run into problems later on if I use the simplified code? [...] Not for the way you're using it, it should™ work fine. If you were for example to make changes to any code contained within sub-classes, e.g. class HitPoints, without first defining the external reference for the base class, either your changes wouldn't work or the config would throw unknown baseclass errors at you. As far as I can tell for what you're wanting to do the abbreviated code should™ be fine. 1 Share this post Link to post Share on other sites