Jump to content
scotg

Visual Suspension not Aligned with Physical

Recommended Posts

I'm having trouble with the visual suspension animations matching the actual suspension of a vehicle I created.

To elaborate, it's a four-wheeled buggy with fairly big wheels for its body. When driving, the body overall reacts to the terrain as expected within the parameters of the wheel settings in the config. Also, the wheels turn properly in all ways they should (i.e.: steering, driving, and braking). The suspension, on the other hand, moves only very minimally, but it is indeed moving. I have set the maxDroop/maxCompression and offsets to a high value, but this only puts the wheels into the ground. I tried a low value, but then they are only hovering. With an offset value where the wheels actually touch the ground without sinking, it is only good while the vehicle is not in motion. When taking a corner, for example, the outer wheels sink into the ground and the inner wheels come up. There is a slight visual effect, but it is not enough to keep up with the physical effect.

MODEL (p3d): I checked the named selections of all LODs in the model, comparing them to the vanilla BIS Offroad truck (listed via eliteness) as well as my own LM002 model, and everything in the new model looks in place. There are some minor discrepancies, though: In the buggy, the rear wheels are positioned a little lower than the front wheels. The body and all components are aligned to the horizon, with the intention of everything leaning forward once the wheels touch the ground. Another small detail is that the front two damper_land_axis are angled up and slightly rearward, while the rear two damper_land_axis are angled up and slightly forward. The front and rear wheels converge as they compress. I don't see how these minor differences would affect the visual suspension, but I mention them in case somehow they do. Also, when I tried the suspension paths strictly vertical, the problem remained.

Leaning turn in the problem vehicle

The script was borrowed and modified from another vehicle I made in which it was working:

 

Leaning turn in the working vehicle

The two vehicles together

I'm including the scripts in the likely event that I overlooked something.
Here's the config for the buggy:

Spoiler

#define _ARMA_

//ndefs=13
enum {
    destructengine = 2,
    destructdefault = 6,
    destructwreck = 7,
    destructtree = 3,
    destructtent = 4,
    stabilizedinaxisx = 1,
    stabilizedinaxesxyz = 4,
    stabilizedinaxisy = 2,
    stabilizedinaxesboth = 3,
    destructno = 0,
    stabilizedinaxesnone = 0,
    destructman = 5,
    destructbuilding = 1
};


class DefaultEventhandlers;
class CfgPatches
{
    class GIJoeAWEStriker
    {
        units[] = {"C_aweStriker_01_F"};
        weapons[] = {};
        requiredVersion = 0.1;
        requiredAddons[] = {"A3_Soft_F"};
    };
};
class CfgFactionClasses
{
    class GIJOE
    {
        displayName = "GI*JOE";
        author = "Scot Gilmore";
        icon = "aweStriker\data\ui\faction_gijoe_co.paa"
        priority = 2;
        side = 1;
    };
};
class CfgVehicleClasses
{
    class GIJoe_Ground
    {
        displayName = "GI*JOE Ground";
    };
};
class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;
class CfgVehicles
{
    class LandVehicle;
    class Car: LandVehicle
    {
        class HitPoints;
    };
    class Car_F: Car
    {
        class HitPoints
        {
            class HitLFWheel;
            class HitLF2Wheel;
            class HitRFWheel;
            class HitRF2Wheel;
            class HitGlass1;
            class HitGlass2;
            class HitGlass3;
            class HitGlass4;
            class HitGlass5;
            class HitGlass6;
        };
        class EventHandlers;
        class AnimationSources;
    };
    class aweStriker_01_base_F: Car_F
    {
        //features = "Randomization: Yes, 8 skins, disabled by: this setVariable [""BIS_enableRandomization"",false];                        <br />Specific skin may be set by: this setVariable [""color"",X]; (the number ranges from 0 to 7)                        <br />Camo selections: 1 - the whole body                        <br />Script door sources: None                        <br />Script animations: None                        <br />Executed scripts: \scripts\clock.sqf, \randomize.sqf                         <br />Firing from vehicles: No                        <br />Slingload: Slingloadable                        <br />Cargo proxy indexes: 1 to 3";
        mapSize = 6.18;
        author = "Scot Gilmore";
        _generalMacro = "aweStriker_01_base_F";
        displayName = "AWE Striker";
        class Library
        {
            libTextDesc = "All Weather Environment Striker";
        };
        model     = "aweStriker\aweStriker1";
        picture    = "aweStriker\Data\UI\icon_aweStriker_co.paa";
        Icon    = "aweStriker\Data\UI\map_aweStriker_co.paa";
        cost = 50000;
        slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"};
        unitInfoType = "RscUnitInfoNoWeapon";
        class Turrets{};
        class HitPoints: HitPoints
        {
            class HitLFWheel: HitLFWheel
            {
                armor = 0.15;
            };
            class HitLF2Wheel: HitLF2Wheel
            {
                armor = 0.15;
            };
            class HitRFWheel: HitRFWheel
            {
                armor = 0.15;
            };
            class HitRF2Wheel: HitRF2Wheel
            {
                armor = 0.15;
            };
            class HitFuel
            {
                armor = 0.14;
                material = -1;
                name = "palivo";
                visual = "";
                passThrough = 1;
            };
            class HitEngine
            {
                armor = 0.5;
                material = -1;
                name = "engine";
                visual = "";
                passThrough = 1;
            };
            class HitGlass1: HitGlass1
            {
                armor = 1;
            };
            class HitGlass2: HitGlass2
            {
                armor = 1;
            };
            class HitGlass3: HitGlass3
            {
                armor = 1;
            };
            class HitGlass4: HitGlass4
            {
                armor = 1;
            };
            class HitGlass5: HitGlass5
            {
                armor = 1;
            };
            class HitGlass6: HitGlass6
            {
                armor = 0.5;
            };
        };
        transportSoldier = 3;
        class TransportItems
        {
            class _xx_FirstAidKit
            {
                name = "FirstAidKit";
                count = 4;
            };
        };
        driverAction = "driver_low01";
        cargoAction[] = {"passenger_low01","passenger_generic01_leanright","passenger_generic01_leanleft"};
        armor = 32;
        fireResistance = 5;
        terrainCoef = 2.5;
        turnCoef = 3.1;
        precision = 20;
        brakeDistance = 5;
        acceleration = 12;
        class AnimationSources: AnimationSources
        {
            class Hide
            {
                source = "user";
                animPeriod = 1;
                initPhase = 0;
            };
        };
        
        
        #include "sounds.hpp" //separate file for better work flow
        
        thrustDelay = 0.2;
        brakeIdleSpeed = 1.78;
        maxSpeed = 249;
        fuelCapacity = 45;
        //wheelCircumference = 2.0;
        antiRollbarForceCoef = 2.0;
        antiRollbarForceLimit = 10;
        antiRollbarSpeedMin = 10;
        antiRollbarSpeedMax = 200;
        idleRpm = 800;
        redRpm = 6000;
        class complexGearbox
        {
            GearboxRatios[] = {"R1",-6.575,"N",0,"D1",4.827,"D2",2.855,"D3",1.716,"D4",1.073,"D5",0.755,"D6",0.575};
            TransmissionRatios[] = {"High",5.69};
            gearBoxMode = "auto";
            moveOffGear = 1;
            driveString = "D";
            neutralString = "N";
            reverseString = "R";
        };
        simulation = "carx";
        dampersBumpCoef = 0.3;
        differentialType = "rear_limited";
        frontRearSplit = 0.5;
        frontBias = 1.9;
        rearBias = 1.9;
        centreBias = 1.9;
        clutchStrength = 50.0;
        enginePower = 408;
        maxOmega = 600;
        peakTorque = 680;
        dampingRateFullThrottle = 0.1;
        dampingRateZeroThrottleClutchEngaged = 1.0;
        dampingRateZeroThrottleClutchDisengaged = 0.35;
        torqueCurve[] = {{0.0,0.0},{0.185,0.713},{0.35,1.0},{0.5,0.975},{0.75,0.755},{0.85,0.627},{1.0,0.415}};
        changeGearMinEffectivity[] = {0.95,0.15,0.65,0.65,0.65,0.55,0.55,0.55};
        switchTime = 0.21;
        latency = 0.25;
        class Wheels
        {
            class LF
            {
                boneName = "wheel_1_1_damper";
                steering = 1;
                side = "left";
                center = "wheel_1_1_axis";
                boundary = "wheel_1_1_bound";
                width = "0.2";
                mass = 25;
                MOI = 8;
                dampingRate = 0.3;
                maxBrakeTorque = 4000;
                maxHandBrakeTorque = 0;
                suspTravelDirection[] = {0,-1,0};
                suspForceAppPointOffset = "wheel_1_1_axis";
                tireForceAppPointOffset = "wheel_1_1_axis";
                maxCompression = 0.5;
                mMaxDroop = 0.5;
                sprungMass = 135;
                springStrength = 8000;
                springDamperRate = 1000;
                longitudinalStiffnessPerUnitGravity = 100000;
                latStiffX = 2.5;
                latStiffY = 18.0;
                frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}};
            };
            class LR: LF
            {
                boneName = "wheel_1_2_damper";
                steering = 0;
                center = "wheel_1_2_axis";
                boundary = "wheel_1_2_bound";
                suspForceAppPointOffset = "wheel_1_2_axis";
                tireForceAppPointOffset = "wheel_1_2_axis";
                maxHandBrakeTorque = 12000;
            };
            class RF: LF
            {
                boneName = "wheel_2_1_damper";
                center = "wheel_2_1_axis";
                boundary = "wheel_2_1_bound";
                suspForceAppPointOffset = "wheel_2_1_axis";
                tireForceAppPointOffset = "wheel_2_1_axis";
                steering = 1;
                side = "right";
            };
            class RR: RF
            {
                boneName = "wheel_2_2_damper";
                steering = 0;
                center = "wheel_2_2_axis";
                boundary = "wheel_2_2_bound";
                suspForceAppPointOffset = "wheel_2_2_axis";
                tireForceAppPointOffset = "wheel_2_2_axis";
                maxHandBrakeTorque = 12000;
            };
        };
        class RenderTargets
        {
            class LeftMirror
            {
                renderTarget = "rendertarget0";
                class CameraView1
                {
                    pointPosition = "PIP0_pos";
                    pointDirection = "PIP0_dir";
                    renderQuality = 2;
                    renderVisionMode = 0;
                    fov = 0.6;
                };
            };
            class RightMirror
            {
                renderTarget = "rendertarget2";
                class CameraView1
                {
                    pointPosition = "PIP2_pos";
                    pointDirection = "PIP2_dir";
                    renderQuality = 2;
                    renderVisionMode = 0;
                    fov = 0.6;
                };
            };
            class IntMirror
            {
                renderTarget = "rendertarget1";
                class CameraView1
                {
                    pointPosition = "PIP1_pos";
                    pointDirection = "PIP1_dir";
                    renderQuality = 2;
                    renderVisionMode = 0;
                    fov = 0.6;
                };
            };
        };
        class Reflectors
        {
            class Left
            {
                color[] = {1900,1800,1700};
                ambient[] = {5,5,5};
                position = "light_L";
                direction = "light_L_end";
                hitpoint = "light_L";
                selection = "light_L";
                size = 1;
                innerAngle = 100;
                outerAngle = 179;
                coneFadeCoef = 10;
                intensity = 1;
                useFlare = 1;
                dayLight = 0;
                flareSize = 1.0;
                class Attenuation
                {
                    start = 1.0;
                    constant = 0;
                    linear = 0;
                    quadratic = 0.25;
                    hardLimitStart = 60;
                    hardLimitEnd = 120;
                };
            };
            class Right: Left
            {
                position = "light_R";
                direction = "light_R_end";
                hitpoint = "light_R";
                selection = "light_R";
            };
        };
        aggregateReflectors[] = {{"Left","Right"}};
        class Damage
        {
            tex[] = {};
            mat[] = {"A3\soft_f_gamma\SUV_01\Data\SUV_01_ext.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_ext_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_ext_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_VP.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_VP.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_destruct.rvmat","a3\data_f\glass_veh.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_int.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_damage.rvmat"};
        };
        hiddenSelections[] = {"Camo1"};
        class Exhausts
        {
            class Exhaust1
            {
                position = "exhaust_1";
                direction = "exhaust_1_dir";
                effect = "ExhaustsEffect";
            };
            class Exhaust2
            {
                position = "exhaust_2";
                direction = "exhaust_2_dir";
                effect = "ExhaustsEffect";
            };
        };
        /* class textureSources
        {
            class fpg
            {
                displayName = "Faceplant Games, Yo";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base01_co.paa"};
                materials[] ={"aweStriker\data\awes_ext_02.rvmat"};
                factions[] = {};
            };
            class gray
            {
                displayName = "Gray";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base02_co.paa"};
                factions[] = {};
            };
            class red
            {
                displayName = "Red";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base03_co.paa"};
                factions[] = {};
            };
            class blue
            {
                displayName = "Blue";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base04_co.paa"};
                materials[] ={"aweStriker\data\awes_ext_03.rvmat"};
                factions[] = {};
            };
            class yellow
            {
                displayName = "Yellow";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base05_co.paa"};
                factions[] = {};
            };
            class white
            {
                displayName = "White";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base06_co.paa"};
                factions[] = {};
            };
            class black
            {
                displayName = "Black";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base07_co.paa"};
                materials[] ={"aweStriker\data\awes_ext_02.rvmat"};
                factions[] = {};
            };
            class blkItl
            {
                displayName = "Italian colors on Black";
                author = "Scot Gilmore";
                textures[] = {"aweStriker\data\awes_ext_base08_co.paa"};
                factions[] = {};
            };
        };
        textureList[] = {"FPG",1,"Gray",1,"Red",1,"Blue",1,"Yellow",1,"White",1,"Black",1,"BlkItl",1};
         */
        class MFD
        {
            class AirplaneHUD
            {
                topLeft = "HUD_top_left";
                topRight = "HUD_top_right";
                bottomLeft = "HUD_bottom_left";
                borderLeft = 0;
                borderRight = 0;
                borderTop = 0;
                borderBottom = 0.0;
                color[] = {0.15,0.15,1.0,1.0};
                enableParallax = 0;
                class Bones{};
                class Draw
                {
                    color[] = {0.07,0.67,0.745};
                    alpha = 1;
                    class ClockHour
                    {
                        type = "text";
                        source = "ClockHour";
                        sourceScale = 12;
                        align = "right";
                        scale = 2;
                        pos[] = {{0.05,0.0},1};
                        right[] = {{0.4,0.0},1};
                        down[] = {{0.05,1.0},1};
                    };
                    class ClockMinute
                    {
                        type = "text";
                        source = "ClockMinute";
                        sourceScale = 60;
                        align = "right";
                        scale = 2;
                        pos[] = {{0.55,0.0},1};
                        right[] = {{0.9,0.0},1};
                        down[] = {{0.55,1.0},1};
                    };
                };
            };
        };
    };
    class aweStriker1: aweStriker_01_base_F
    {
        author = "Scot Gilmore";
        _generalMacro = "aweStriker1";
        scope = 2;
        crew = "C_man_1";
        typicalCargo[] = {"C_man_1"};
        side = 1;
        faction = "GIJOE";
        displayName = "** AWE Striker **";
        vehicleClass = "GIJoe_Ground";
        accuracy = 1.25;
        hiddenSelectionsTextures[] = {"aweStriker\data\awes_ext_W_co.paa"};
        class EventHandlers: EventHandlers
        {
            init = "if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle;};";
        };
    };
    /* class aweStriker_01_base_blkItl_F: C_aweStriker_01_F
    {
        displayName = "Italian colors on black";
        scope = 1;
        scopeCurator = 0;
        author = "Scot Gilmore";
        textureList[] = {"BlkItl",1};
    };
     */
};

Here's the buggy's model file:

Spoiler

class cfgSkeletons
{
    class Default
    {
        isDiscrete=1;
        skeletonInherit="";
        skeletonBones[]={};
    };
    class awesbones: Default
    {
        isDiscrete = 1;
        skeletonInherit = "";
        SkeletonBones[]=
        {
            "drivewheel", "",
            "wheel_1_1_damper_land", "",
            "wheel_1_1_damper", "wheel_1_1_damper_land",
            "wheel_1_1_steering", "wheel_1_1_damper",
            "wheel_1_1", "wheel_1_1_steering",
            "wheel_1_1_unhide", "wheel_1_1",
            "wheel_1_1_hide", "wheel_1_1",
            "wheel_1_2_damper_land", "",
            "wheel_1_2_damper", "wheel_1_2_damper_land",
            "wheel_1_2_steering", "wheel_1_2_damper",
            "wheel_1_2", "wheel_1_2_steering",
            "wheel_1_2_unhide", "wheel_1_2",
            "wheel_1_2_hide", "wheel_1_2",
            "wheel_2_1_damper_land", "",
            "wheel_2_1_damper", "wheel_2_1_damper_land",
            "wheel_2_1_steering", "wheel_2_1_damper",
            "wheel_2_1", "wheel_2_1_steering",
            "wheel_2_1_unhide", "wheel_2_1",
            "wheel_2_1_hide", "wheel_2_1",
            "wheel_2_2_damper_land", "",
            "wheel_2_2_damper", "wheel_2_2_damper_land",
            "wheel_2_2_steering", "wheel_2_2_damper",
            "wheel_2_2", "wheel_2_2_steering",
            "wheel_2_2_unhide", "wheel_2_2",
            "wheel_2_2_hide", "wheel_2_2",
            "otocvez", "",
            "otochlaven", "otocvez",
            "damagehlaven", "otochlaven",
            "damagevez", "otocvez",
            "damagehide", "",
            "glass1", "damagehide",
            "glass2", "damagehide",
            "glass3", "damagehide",
            "glass4", "damagehide",
            "glass5", "damagehide",
            "glass6", "damagehide",
            "ukaz_rychlo", "",
            "ukaz_rychlo2", "",
            "ukaz_rpm", "",
            "mph", "",
            "rpm", "",
            "fuel", "",
            "temp", "",
            "oil", "",
            "volt", "",
            "fuel_3", "",
            "light_reverse", "",
            "daylights", "",
            "pedal_brake", "",
            "pedal_thrust", "",
            "door1", "",
            "door2", "",
            "door3", "",
            "door4", "",
            "door5", "",
            "door6", "",
            "display_off", ""
        };
    };
};
class CfgModels
{
    class Default
    {
        sections[]={};
        sectionsInherit="";
        skeletonName="";
    };
    class aweStriker1: Default
    {
        skeletonName="awesbones";
        sections[]=
        {
            "glass1",
            "glass2",
            "glass3",
            "glass4",
            "glass5",
            "glass6",
            "zbytek",
            "light_r",
            "light_l",
            "camo1",
            "camo2",
            "zadni svetlo",
            "spz",
            "brzdove svetlo",
            "clan"
        };
        class Animations
        {
            class damageHide
            {
                type="hide";
                source="damage";
                selection="damagehide";
                minValue=0;
                maxValue=1;
                hideValue=1;
                animPeriod=0;
                initPhase=0;
            };
            class damageHideVez
            {
                type="hide";
                source="damage";
                selection="otocvez";
                minValue=0;
                maxValue=1;
                hideValue=1;
                animPeriod=0;
                initPhase=0;
            };
            class damageHideHlaven
            {
                type="hide";
                source="damage";
                selection="otochlaven";
                minValue=0;
                maxValue=1;
                hideValue=1;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_1_destruct
            {
                type="hide";
                source="HitLFWheel";
                selection="wheel_1_1_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2_destruct
            {
                type="hide";
                source="HitLBWheel";
                selection="wheel_1_2_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_3_destruct
            {
                type="hide";
                source="HitLMWheel";
                selection="wheel_1_3_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_4_destruct
            {
                type="hide";
                source="HitLF2Wheel";
                selection="wheel_1_4_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1_destruct
            {
                type="hide";
                source="HitRFWheel";
                selection="wheel_2_1_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_2_destruct
            {
                type="hide";
                source="HitRBWheel";
                selection="wheel_2_2_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_3_destruct
            {
                type="hide";
                source="HitRMWheel";
                selection="wheel_2_3_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_4_destruct
            {
                type="hide";
                source="HitRF2Wheel";
                selection="wheel_2_4_hide";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_1_destruct_unhide
            {
                type="hide";
                source="HitLFWheel";
                selection="wheel_1_1_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2_destruct_unhide
            {
                type="hide";
                source="HitLBWheel";
                selection="wheel_1_2_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_3_destruct_unhide
            {
                type="hide";
                source="HitLMWheel";
                selection="wheel_1_3_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_4_destruct_unhide
            {
                type="hide";
                source="HitLF2Wheel";
                selection="wheel_1_4_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1_destruct_unhide
            {
                type="hide";
                source="HitRFWheel";
                selection="wheel_2_1_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_2_destruct_unhide
            {
                type="hide";
                source="HitRBWheel";
                selection="wheel_2_2_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_3_destruct_unhide
            {
                type="hide";
                source="HitRMWheel";
                selection="wheel_2_3_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_4_destruct_unhide
            {
                type="hide";
                source="HitRF2Wheel";
                selection="wheel_2_4_unhide";
                sourceAddress="mirror";
                minValue=-1;
                maxValue=0;
                hideValue=9.9999997e-006;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_3_Damage
            {
                type="translation";
                source="HitLMWheel";
                selection="wheel_1_3_damper";
                axis="wheel_1_3_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.2;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_4_Damage
            {
                type="translation";
                source="HitLF2Wheel";
                selection="wheel_1_4_damper";
                axis="wheel_1_4_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.2;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_3_Damage
            {
                type="translation";
                source="HitRMWheel";
                selection="wheel_2_3_damper";
                axis="wheel_2_3_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.2;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_4_Damage
            {
                type="translation";
                source="HitRF2Wheel";
                selection="wheel_2_4_damper";
                axis="wheel_2_4_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.2;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_3_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitLMWheel";
                selection="wheel_1_3_damper";
                axis="wheel_1_3_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.24000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_4_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitLF2Wheel";
                selection="wheel_1_4_damper";
                axis="wheel_1_4_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.24000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_3_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitRMWheel";
                selection="wheel_2_3_damper";
                axis="wheel_2_3_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.24000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_4_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitRF2Wheel";
                selection="wheel_2_4_damper";
                axis="wheel_2_4_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.24000001;
                animPeriod=0;
                initPhase=0;
            };
            class Glass1_destruct
            {
                type="hide";
                source="HitGlass1";
                selection="glass1";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Glass2_destruct
            {
                type="hide";
                source="HitGlass2";
                selection="glass2";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Glass3_destruct
            {
                type="hide";
                source="HitGlass3";
                selection="glass3";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Glass4_destruct
            {
                type="hide";
                source="HitGlass4";
                selection="glass4";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Glass5_destruct
            {
                type="hide";
                source="HitGlass5";
                selection="glass5";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Glass6_destruct
            {
                type="hide";
                source="HitGlass6";
                selection="glass6";
                minValue=0;
                maxValue=1;
                hideValue=0.99998999;
                animPeriod=0;
                initPhase=0;
            };
            class Wheel_1_1
            {
                type="rotationX";
                source="wheel";
                selection="wheel_1_1";
                axis="wheel_1_1_axis";
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=-6.2831855;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1
            {
                type="rotationX";
                source="wheel";
                selection="wheel_2_1";
                axis="wheel_2_1_axis";
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=-6.2831855;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2
            {
                type="rotationX";
                source="wheel";
                selection="wheel_1_2";
                axis="wheel_1_2_axis";
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=-6.2831855;
                animPeriod=0;
                initPhase=0;
            };
            class Wheel_2_2
            {
                type="rotationX";
                source="wheel";
                selection="wheel_2_2";
                axis="wheel_2_2_axis";
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=-6.2831855;
                animPeriod=0;
                initPhase=0;
            };
            class daylights
            {
                type="hide";
                source="rpm";
                selection="daylights";
                minValue=-0.80000001;
                maxValue=0.2;
                hideValue=0.2;
                unHideValue=1;
                animPeriod=0;
                initPhase=0;
            };
            class reverse_light
            {
                type="hide";
                source="Gear";
                selection="light_reverse";
                minValue=-1;
                maxValue=0;
                hideValue=0.2;
                animPeriod=0;
                initPhase=0;
            };
            class pedal_thrust
            {
                type="rotation";
                source="Throttle";
                selection="pedal_thrust";
                axis="pedal_thrust_axis";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=-0.52359879;
                animPeriod=1;
                initPhase=0;
            };
            class pedal_brake
            {
                type="rotation";
                source="Brake";
                selection="pedal_brake";
                axis="pedal_brake_axis";
                minValue=0;
                maxValue=0.5;
                angle0=0;
                angle1=-0.52359879;
                animPeriod=1;
                initPhase=0;
            };
            class wheel_1_1_Damage
            {
                type="translation";
                source="HitLFWheel";
                selection="wheel_1_1_damper";
                axis="wheel_1_1_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2_Damage
            {
                type="translation";
                source="HitLBWheel";
                selection="wheel_1_2_damper";
                axis="wheel_1_2_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1_Damage
            {
                type="translation";
                source="HitRFWheel";
                selection="wheel_2_1_damper";
                axis="wheel_2_1_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_2_Damage
            {
                type="translation";
                source="HitRBWheel";
                selection="wheel_2_2_damper";
                axis="wheel_2_2_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_1_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitLFWheel";
                selection="wheel_1_1_damper";
                axis="wheel_1_1_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitLBWheel";
                selection="wheel_1_2_damper";
                axis="wheel_1_2_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitRFWheel";
                selection="wheel_2_1_damper";
                axis="wheel_2_1_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_2_Damper_Damage_BackAnim
            {
                type="translation";
                source="HitRBWheel";
                selection="wheel_2_2_damper";
                axis="wheel_2_2_damper_axis";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=-0.18000001;
                animPeriod=0;
                initPhase=0;
            };
            class DrivingWheel
            {
                type="rotation";
                source="drivingWheel";
                selection="drivewheel";
                axis="drivewheel_axis";
                minValue=-1;
                maxValue=1;
                angle0=1.3962635;
                angle1=-1.3962635;
                animPeriod=0;
                initPhase=0;
            };
            class Steering_1_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_1_1_steering";
                axis="wheel_1_1_steering_axis";
                minValue=-1.5707964;
                maxValue=1.5707964;
                angle0=0.5;
                angle1=-0.5;
                animPeriod=0;
                initPhase=0;
            };
            class Steering_2_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_2_1_steering";
                axis="wheel_2_1_steering_axis";
                minValue=-1.5707964;
                maxValue=1.5707964;
                angle0=0.5;
                angle1=-0.5;
                animPeriod=0;
                initPhase=0;
            };
            class IndicatorSpeed
            {
                type="rotation";
                source="speed";
                selection="mph";
                axis="mph_axis";
                minValue=0;
                maxValue=65.269997;
                angle0=0.17453299;
                angle1=-3.9749999;
                animPeriod=0;
                initPhase=0;
            };
            class IndicatorRPM
            {
                type="rotation";
                source="rpm";
                selection="rpm";
                axis="rpm_axis";
                minValue=0;
                maxValue=6000;
                angle0=0;
                angle1=-3.4906588;
                animPeriod=0;
                initPhase=0;
            };
            class fuel
            {
                type="rotation";
                source="fuel";
                selection="fuel";
                axis="fuel_axis";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=1.5358899;
                animPeriod=0;
                initPhase=0;
            };
            
            class Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_1_damper_land";
                axis="wheel_1_1_damper_land_axis";
                minValue=0;
                maxValue=1;
                offset0=-0.4;
                offset1=0.4;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_2_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_2_1_damper_land";
                axis="wheel_2_1_damper_land_axis";
                minValue=0;
                maxValue=1;
                offset0=-0.4;
                offset1=0.4;
                animPeriod=0;
                initPhase=0;
            };
            class wheel_1_2_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_2_damper_land";
                axis="wheel_1_2_damper_land_axis";
                minValue=0;
                maxValue=1;
                offset0=-0.4;
                offset1=0.4;
                animPeriod=0;
                initPhase=0;
            };
            class Wheel_2_2_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_2_2_damper_land";
                axis="wheel_2_2_damper_land_axis";
                minValue=0;
                maxValue=1;
                offset0=-0.4;
                offset1=0.4;
                animPeriod=0;
                initPhase=0;
            };
            class Display_off_hide
            {
                type="hide";
                source="rpm";
                selection="display_off";
                minValue=0;
                maxValue=1;
                hideValue=0.001;
                animPeriod=0;
                initPhase=0;
            };
        };
    };
};

 

 

Notes: Changing values of the wheel settings and damper settings in the scripts has an impact on the handling and stability of the vehicle (as expected), but very little impact on the visual performance (as not expected). The most noticeable change is from increasing/decreasing the range of the offsets and maxDroop/maxCompression. It will visibly raise/lower the wheels and steering parts initially, but when moving it's very hard to notice any animation.

Edited by scotg
changed code blocks to spoiler blocks for compactness

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

×