Jump to content

UK_Apollo

Member
  • Content Count

    575
  • Joined

  • Last visited

  • Medals

Posts posted by UK_Apollo


  1. It looks like you are doing most things right Johno. Delta's giving you good advice on the smdi/as.

     

    However, as you still have the problem with the shadows, it's perhaps worth questioning how you know that the shadow lod is completely contained within LOD1?

    da12thMonkey's suggestions on the shadow lod are of course spot on. I usually reduce it by a few percent overall from the LOD1 size, and then tweak individual verts that might stick out due to it's low poly nature. 2k polys is probably ok for shadows, but the lower the better. Add a Shadow LOD 10.000 with very low poly count for optimum performance.

     

    Something else you can try; reduce your shadow lod object size by 50% and check in game again - obviously the shadows will be too small, but is the self-shadowing on the helmet gone now?


  2. No, the case doesn't matter.

     

    If the problem disappears when you switch off shadows, it indicates a problem possibly remains with the shadow LOD.

    Copy and paste the shadow LOD into your LOD1 with solid faces showing and look for any highlighted selections showing through.


  3. A super easy way to check for shadow problems while in game, is to Enable/Disable Shadows from the game Options > Video menu and see if the issue disappears.

     

    Add the LOD property "lodNoShadow = 1" to your visual LOD's in Object Builder.

     

    It might be worth posting your rvmat text so we can see what settings you have on the specular/smdi.

     

     

     


  4. The learning curve for Substance Painter is relatively steep at the start, like most complex software.

    I guess it helps if you're already familiar with using layers to build up textures, physically based rendering concepts and understand Arma's super shader (rvmats etc).

    I came at SP from a non-artistic, never used PhotoShop, perspective and with some initial guidance from others, plus watching youtube tutorials was able to pick it up fairly quickly.

    It's a very powerful tool, and I believe has been used by BIS dev's (Apex Off-Road?) and other modders here with success. I highly recommend it.

    • Like 1

  5. I use Substance Painter, importing fbx files converted from Object Builders p3d.

    Output is _co, _nohq, _smdi and _as texture files.

     

    The slightly tricky bit is setting up the texture map export, and doing some post process smdi tweaking, but it actually gives quite accurate results in game (deep blacks are the most difficult to get right) and Substance Painter is a dream to use for an essentially non-artistic modder.

    • Like 1

  6. Some new arrivals:

     

    An RN Merlin HM2 patrols the coast on a gloomy day

    PBcMefA.jpg

     

    A Merlin HC4 of 845 Naval Air Squadron prepares to unfold for a sortie

    NTFULwZ.jpg

     

    Merlin HC4:

    - navalised conversions of the ex-RAF green HC3's

    - folding rotors and tail, fully animated

    - RN camo and markings

    - unarmed or armed (with a new GPMG-ARD model)

     

    Merlin HM2: 

    - HM2 tail design and aerials, rotors and tail fold

    - under fuselage radome gives active radar coverage to the crew

    - removed FLIR turret

     

    Photo's show work in progress, final version may differ.

     

    • Like 15

  7. There are quite a lot of problems with your model.cfg. It won't be easy to tell you specifically what the problem is unfortunately.

     

    The first thing you should look at is the SkeletonBones[].

    These entries need to be pairs of data, where one bone is defined as being 'attached' to another.

     

    In this example, the door is a bone but is not dependent on anything else, and the door_handle is attached (and moves with) the door:

    "door", "",

    "door_handle", "door",

     

    I've attempted to fix the top half of your SkeletonBones[] to give you an idea, but you'll need to fix the rest:

    SkeletonBones[] = {
    	"drivewheel", "",
    	"wheel_1_1_damper_land", "",
    	"wheel_1_2_damper_land", "",
    	"wheel_1_3_damper_land", "",
    	"wheel_1_4_damper_land", "",
    	"wheel_2_1_damper_land", "",
    	"wheel_2_2_damper_land", "",
    	"wheel_2_3_damper_land", "",
    	"wheel_2_4_damper_land", "",
    	"wheel_1_1_damper", "wheel_1_1_damper_land",
    	"wheel_1_2_damper", "wheel_1_2_damper_land",
    	"wheel_1_3_damper", "wheel_1_3_damper_land",
    	"wheel_1_4_damper", "wheel_1_4_damper_land",
    	"wheel_2_1_damper", "wheel_2_1_damper_land",
    	"wheel_2_2_damper", "wheel_2_2_damper_land",
    	"wheel_2_3_damper", "wheel_2_3_damper_land",
    	"wheel_2_4_damper", "wheel_2_4_damper_land",
    	"wheel_1_1_steering", "wheel_1_1_damper",
    	"wheel_1_2_steering", "wheel_1_2_damper",
    	"wheel_1_3_steering", "wheel_1_3_damper",
    	"wheel_1_4_steering", "wheel_1_4_damper",
    	"wheel_2_1_steering", "wheel_2_1_damper",
    	"wheel_2_2_steering", "wheel_2_2_damper",
    	"wheel_2_3_steering", "wheel_2_3_damper",
    	"wheel_2_4_steering", "wheel_2_4_damper",
    	"wheel_1_1", "wheel_1_1_steering",
    	"wheel_1_2", "wheel_1_2_steering",
    	"wheel_1_3", "wheel_1_3_steering",
    	"wheel_1_4", "wheel_1_4_steering",
    	"wheel_2_1", "wheel_2_1_steering",
    	"wheel_2_2", "wheel_2_2_steering",
    	"wheel_2_3", "wheel_2_3_steering",
    	"wheel_2_4", "wheel_2_4_steering",
    	"wheel_1_1_unhide", "wheel_1_1",
    	"wheel_1_2_unhide", "wheel_1_2",
    	"wheel_1_3_unhide", "wheel_1_3",
    	"wheel_1_4_unhide", "wheel_1_4",
    	"wheel_2_1_unhide", "wheel_2_1",
    	"wheel_2_2_unhide", "wheel_2_2",
    	"wheel_2_3_unhide", "wheel_2_3",
    	"wheel_2_4_unhide", "wheel_2_4",
    	"wheel_1_1_hide", "wheel_1_1",
    	"wheel_1_2_hide", "wheel_1_2",
    	"wheel_1_3_hide", "wheel_1_3",
    	"wheel_1_4_hide", "wheel_1_4",
    	"wheel_2_1_hide", "wheel_2_1",
    	"wheel_2_2_hide", "wheel_2_2",
    	"wheel_2_3_hide", "wheel_2_3",
    	"wheel_2_4_hide", "wheel_2_4",
    	"otocvez", "",
    	"auxiliarylights_on", "",
    	"auxiliarylights", "",
    	//"auxiliarylights", "auxiliarylights_on",   // use this line instead if auxiliarylights are supposed to be dependent on auxiliarylights_on
    	"otochlaven", "otocvez",
    	"damagehlaven", "otochlaven",
    	"damagevez", "otocvez",
    	"damagehide", "", 
    	"glass1", "damagehide", 
    	"glass2", "damagehide", 
    	"glass3", "damagehide",
    	"glass4", "damagehide",
    	"daylights", "damagehide",
    	"turn_left", "daylights",
    	"turn_right", "daylights",
    
    	// not sure what happens after here - make them into pairs of bones
    	"daylights",
    	"ukaz_rychlo",
    	"takedown",
    	"ukaz_rychlo2",
    	"BlueLight2",
    	"ukaz_rpm",
    	"BlueLight1",
    	"mph",
    	"BlueLight1_dir",
    	"rpm",
    	"BlueLight2_dir",
    	"fuel",
    	"takedown_axis",
    	"fuel_1",
    	"WhiteLightbar",
    	"fuel_01",
    	"WhiteLightbar_dir",
    	"fuel_2",
    	"fuel_3",
    	"prop_01",
    	//"auxiliarylights_on", "auxiliarylights1_on",
    	"prop_02",
    	"lightbar_glass",
    	"prop_2",
    	"lightbar_lights",
    	"prop_1",
    	"lightbar_top",
    	"reverse_light", "daylights",
    	"turn_left_hide"    ,"",
    	"turn_right_hide"    ,"",
    	"fullLights_on",
    	"dummy",
    	"fullLights_off",
    	"lightbar_top",
    	"extraLights1",
    	"lightbar_front",
    	"extraLights2",
    	"lightbar_back",
    	"extraLights2_off",
    	"cage",
    	"extraLights1_off",
    	"directional",
    	"fullLights1_on",
    	"rambar",
    	"fulllights1_off",
    	"fulllights2_off",
    	"fulllights2_on",
    	"radar",
    	"auxiliarylights1_pos",          // probably shouldn't be here unless the light is steerable somehow?
    	"auxiliarylights1_dir",          // probably shouldn't be here unless the light is steerable somehow?
    	"auxiliarylights1_hitpoint",     // probably shouldn't be here unless the light is steerable somehow?
    	// blank bone entries below should be removed
    	"",
    	"",
    	"",
    	"",
    	"",
    	"",
    	"",
    	""
    };

     

     


  8. I might be forgetting something, but I'm fairly sure class Reflectors only activate when the driver switches the lights on at night. "L"

    You can still use a UserAction to turn on/off specific lights, but nothing happens before the driver turns on the main lights first.

    The only thing you can do for daytime lights is look at using the Marker and Beacon classes, along with emissive object textures, but they don't provide a reflective light that shines off other surfaces.

    Don't forget to add your lights to the Sections area of model.cfg.

    You can take a look at how I did it for the Land Rover Ambulance blue lights, or the Snatch searchlight in the 3CB BAF Vehicles mod pack.




  9. Try adding an extra 

    };

    to the end of your file. The CfgWeapons class is not closed.

     

    The best way to find these problems is to use a text editor such as Notepad++, with the language set to C++ for .cpp files.

    Then be rigorous in your formatting indentations and missing closed brackets will show fairly easily.

    • Like 2

  10. Try this:

     

    class CfgPatches {
        class BSP_Vests {
            author = "BloodshotPico";
            name = "BloodshotPico - Vests";
            url = "";
            requiredAddons[] = {"A3_Data_F"};
            requiredVersion = 0.1;
            units[] = {};
            weapons[] = {
                "Custom_Vest1",
                "Custom_Vest2",
                "Custom_Vest3"
            };
            magazines[] = {};
        };
    };    
    		
    class CfgWeapons {	
        class ItemCore;
        class VestItem; 
        class Vest_Camo_Base : ItemCore { 
            class ItemInfo; 
        }; 
         
        class Custom_Vest1 : Vest_Camo_Base { 
            scope = 2; 
            author = "BloodshotPico";
            displayName = "Custom Platecarrier"; 
            picture = "-"; 
            model = "A3\Characters_F\BLUFOR\equip_b_Vest01"; 
            hiddenSelections[] = {"Camo"}; 
            hiddenSelectionsTextures[] = {"DTI_Vests\Data\testvest_co.paa"}; 
            class ItemInfo : VestItem { 
                uniformModel = "A3\Characters_F\BLUFOR\equip_b_Vest01.p3d"; 
                containerClass = "Supply120"; 
                mass = 80; 
                armor = "5"; 
                passThrough = 0.3; 
                hiddenSelections[] = {"camo"}; 
            }; 
        };
        class Custom_Vest2 : Vest_Camo_Base {
            scope = 2; 
            author = "BloodshotPico";
            displayName = "Custom Platecarrier Lite"; 
            picture = "-"; 
            model = "A3\Characters_F\BLUFOR\equip_b_Vest02"; 
            hiddenSelections[] = {"Camo"}; 
            hiddenSelectionsTextures[] = {"DTI_Vests\Data\testvest_co.paa"}; 
            class ItemInfo : VestItem { 
                uniformModel = "A3\Characters_F\BLUFOR\equip_b_Vest02.p3d"; 
                containerClass = "Supply120"; 
                mass = 80; 
                armor = "5"; 
                passThrough = 0.3; 
                hiddenSelections[] = {"camo"}; 
            }; 
        };
        class Custom_Vest3 : Vest_Camo_Base { 
            scope = 2; 
            author = "BloodshotPico";
            displayName = "Custom Platecarrier Kerry"; 
            picture = "-"; 
            model = "A3\Charactrs_F_EPA\BLUFOR\equip_b_vest_kerry"; 
            hiddenSelections[] = {"Camo"}; 
            hiddenSelectionsTextures[] = {"DTI_Vests\Data\testvest_co.paa"}; 
            class ItemInfo : VestItem { 
                uniformModel = "A3\Characters_F_EPA\BLUFOR\equip_b_vest_kerry.p3d"; 
                containerClass = "Supply120"; 
                mass = 80; 
                armor = "5"; 
                passThrough = 0.3; 
                hiddenSelections[] = {"camo"}; 
            }; 
        };
    };

     

    • Like 1

  11. You need to put the author definition in each of your classes, as it does not get inherited from base classes.

    class DTI_barup : Uniform_Base { 
    	scope = 2; 
    	author = "BloodshotPico";
    	displayName = "Black And Red Camo (Digital)"; 
    	picture = "-"; 
    	model = "\A3\characters_f_beta\INDEP\ia_soldier_01.p3d"; 
    	class ItemInfo : UniformItem { 
    		uniformClass = "DTI_barup_d"; 
    		containerClass = "Supply60"; 
    		mass = 50; 
    	}; 
    }; 

     

    • Like 1

  12. This might interest you Burnes. 

    I ran some tests recently (early May) to check what happens to fps with very high poly counts from multiple objects all rendered in-game simultaneously. The results are... interesting.

     

    SP, VR world, multiple vehicles all with only LOD1 present.

    Yes, that is 60 million polys!

     

    "Real life" - at Kavala, Altis, looking at multiple high poly model vehicles.

    - showing the effect of dynamic LOD switching

    blue = no LOD switching (only LOD 1 present)

    red = dynamic LOD switching (LOD's 1-6)

    My PC: i5 2500k @3.3GHz, 16GB RAM, GTX970 4GB

     

    Different people will form different conclusions from the data, and as this is your thread, I hope it won't result in too big of a debate, unless you wish it. But for me, it highlights the importance of continuing to optimise (minimise) the number of polys in each object in LOD1, along with the crucial role that additional lower poly LOD's play in maintaining good performance as object count increases.

    • Like 6
×