Jump to content

Recommended Posts

Can anyone tell me how to fix this suspension? I have modified with many values the physics but nothing works, always it ends up turning.
Below is the video and my configuration of the physics, I tried to modify all the values but still nothing.

 

Spoiler

        /// splendid tutorial by RedPhoenix could be found at
        /// http://forums.bistudio.com/showthread.php?165390-Tutorial-Creating-Custom-Engine-Gearbox-and-Suspension-Vehicle-configuration

        thrustDelay                = 0.2;         /// initial delay to cause lesser slip when on 1st gear - thrust goes from zero to full in this time
        brakeIdleSpeed             = 1.78;     /// under what speed (in m/s) does the brake apply for a vehicle without thrust
        maxSpeed                   = 150;         /// vehicle can go a bit over, but dramatically decreases thrust
        fuelCapacity               = 45;
        wheelCircumference         = 2.277;     /// diameter of 725

        antiRollbarForceCoef    = 10.0;     /// how strong is the anti-roll bar of vehicle preventing it to lose grip in turns (not any magical stuff, real ARB)
        antiRollbarForceLimit    = 5.0;     /// highest possible force of ARB
        antiRollbarSpeedMin     = 0;     /// the roll bar force gets from zero to full in range of min and max speed
        antiRollbarSpeedMax        = 0;      /// this simulates losing grip at high speed turns

        /// Gearbox and transmission  via PhysX
        idleRpm = 900; // RPM at which the engine idles.
        redRpm = 6900; // RPM at which the engine redlines.

        class complexGearbox
        {
            GearboxRatios[]    = {"R1",-3.231,"N",0,"D1",2.462,"D2",1.870,"D3",1.241,"D4",0.970,"D5",0.711};
            TransmissionRatios[] = {"High",4.111}; // Optional: defines transmission ratios (for example, High and Low range as commonly found in offroad vehicles)
            gearBoxMode        = "auto"; //gearbox can be of type: full-auto (only requires 'W' or 'S'), auto (requires shift between drive and reverse), semi-auto, manual
            moveOffGear        = 1; // defines what gear an automatic or semi-automatic gearbox will move off from stationary in. 1 by default.
            driveString        = "D"; // string to display in the HUD for forward gears.
            neutralString      = "N"; // string to display in the HUD for neutral gear.
            reverseString      = "R"; // string to display in the HUD for reverse gears.


        };

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// PhysX parameters
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // <Description>: Defines simulation type of the vehicle. PhysX simulation ends with letter "x", "carx", "tankx" ...
        // <Type>: string
        // <Default>: (required)
        simulation = "carx";

        // <Description>: Defines how much dampers react to random little bumps on surface. It's only visual effect, doesn't influence drive simulation,
        // only taken into account when calculating damper animation.
        // <Type>: float
        // <Default>: 0.0
        dampersBumpCoef = 0.05;

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Differential parameters
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // <Description>: A number of differential types are supported: 4-wheel drive with open differential, 4-wheel drive with limited slip, front-wheel drive
        // with open differential, front-wheel drive with limited slip, rear-wheel drive with open differential, rear-wheel drive with limited slip.
        // <Type>: string; acceptable values: "all_open", "all_limited", "front_open", "front_limited", "rear_open", "rear_limited"
        // <Default>: "all_limited"
        differentialType = "front_open";

        // <Description>: Ratio of engine power that goes to front wheels out of total power for 4-wheel drive differentials.
        // Choosing a value greater than 0.5 delivers more torque to the front wheels, while choosing a value less than 0.5
        // delivers more torque to the rear wheels. This value is ignored for front-wheel drive and rear-wheel drive differentials.
        // <Type>: float
        // <Default>: 0.5
        frontRearSplit = 0.5;

        // <Description>: This is the largest possible relative difference between speed of front wheels. It helps to have outside wheels a bit faster
        // during the turns, but it prevents the faster wheel to take all the power while sliding. The power is shifted to slower wheel once the value is reached.
        // Locked differential has value of 1, the softer is the lock the greater should the value be.
        // This value is ignored except for front-wheel drive or four wheel drive with limited slip.
        // A good starting value is around 1.3.
        // <Type>:
        // <Default>:
        frontBias = 1.5;

        // <Description>: This is similar to frontBias except that it refers to the rear wheels.
        // This value is ignored except for rear-wheel drive or four wheel drive with limited slip.
        // A good starting value is around 1.3.
        // <Type>: float
        // <Default>: 1.3
        rearBias = 1.3;

        // <Description>: This value is similar to the frontBias and rearBias, except that it refers to the sum of the front wheel rotation speeds and the sum
        // of the rear wheel rotation speeds.
        // This value is ignored except for four wheel drive with limited slip.
        // A good starting value is around 1.3.
        // <Type>: float
        // <Default>: 1.3
        centreBias = 1.3;

        // <Description>: How fast is engine power distributed to the wheels. Stronger values mean more aggressive drive performance inclining to
        // slip a little while changing gears while weaker values are better for comfortable seamless ride.
        // <Type>: float
        // <Default>: 10.0
        clutchStrength = 55.0;

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Engine parameters
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // <Description>: Power of the engine in kW.
        // <Type>: float
        // <Default>: (required)
        enginePower = 320;


        // <Description>: This is the maximum rotational speed of the engine expressed in radians per second. It could be calculated from maximum
        // engine RPM like this:
        // maxOmega = (maxRpm*2*Pi)/60.
        // <Type>: float
        // <Default>: 600 which is cca 6000 rounds per minute.
        maxOmega = 720;

        // <Description>: This is the maximum torque that is ever available from the engine. This is expressed in Newton metres.
        // <Type>: float
        // <Default>: value calculated from enginePower according to http://en.wikipedia.org/wiki/Horsepower#Relationship_with_torque
        peakTorque = 1450;

        // <Description>: These three values describe internal damping of the engine. Bigger values mean greater damping. Clutch disengaged value
        // is used while shifting gears, engine interpolates between clutch engaged and full throttle values according to throttle input.
        // We tend to use slightly lower clutch engaged values because it allows cars to turn more smoothly.
        // Typical values in range (0.25,3). The simulation can become unstable with damping rates of 0.
        // <Type>: float, float, float
        // <Default>: 0.08, 2.0, 0.35
        dampingRateFullThrottle = 0.08;
        dampingRateZeroThrottleClutchEngaged = 0.35;
        dampingRateZeroThrottleClutchDisengaged = 0.35;

        // <Description>: This is a graph of peak torque versus engine rotational speed.
        // The x-axis of the curve is the relative engine speed; that is, the engine speed divided by the maximum engine speed. The y-axis of the curve is a
        // multiplier in range (0,1) that is used to scale the peak torque. It is good to keep the values in mind while setting changeGearMinEffectivity.
        // <Type>: Array[2] where i = number of samples, maximum 8;
        // <Default>: {{0.0, 0.8}, {0.33, 1.0}, {1.0, 0.8}}
        torqueCurve[] = {{0.000, 0.000}, {0.178, 0.800}, {0.250, 1.0}, {0.461, 0.900}, {0.900, 0.800}, {1.000, 0.300}};

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Gearbox parameters
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // <Description>: Value of minimal gear effectivity to hold current gear. If there is better gear and effectivity is below this value then change gear.
        // <Range>: (0,1)
        // <Type>: Array where i = number of gears
        // <Default>: 0.95 for every value (Neutral = 0.15 Not sure how important this is but we want to kick out of neutral very quickly)
        changeGearMinEffectivity[]   = {0.95, 0.15, 0.95, 0.95, 0.95, 0.95, 0.95};

        // <Description>: The switch time describes how long it takes (in seconds) for a gear change to be completed. This needs to be set to aggresive shifting
        // or it would cause issues while trying to run aggressively (mainly during evading the enemies).
        // <Type>: float
        // <Default>: 0.01
        switchTime = 0.31;

        // <Description>: Set the latency time of the gearbox, specified in s.
        // This is used to prevent instant shifting after changing gears - there is some power loss during gear change and it could seem that
        // previous gear is better for a brief time after shifting.
        // <Type>: float
        // <Default>: 2.0
        latency = 1.0;

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Wheels parameters
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        class Wheels
        {
            class LF //frente esquerda
            {
                boneName = "wheel_1_1_damper";
                steering = true;
                side = "left";
                center   = "wheel_1_1_axis";
                boundary = "wheel_1_1_bound";
                mass = 20;
                MOI = 5.3;
                dampingRate = 0.5;
                maxBrakeTorque = 2000;
                maxHandBrakeTorque = 0;
                suspTravelDirection[] = {0, -1, 0};
                suspForceAppPointOffset = "wheel_1_1_axis";
                tireForceAppPointOffset = "wheel_1_1_axis";
                maxCompression = 0.2;
                mMaxDroop = 0.15;
                sprungMass = 422.5;
                springStrength = 10562.5;
                springDamperRate = 8400;
                longitudinalStiffnessPerUnitGravity = 100000;
                latStiffX = 25;
                latStiffY = 18000;
                frictionVsSlipGraph[] = {{0, 1}, {0.5, 1}, {1,1}};
            };
            class LR: LF // traseira esquerda
            {
                boneName = "wheel_1_2_damper";
                steering = false;
                center   = "wheel_1_2_axis";
                boundary = "wheel_1_2_bound";
                mass = 20;
                MOI = 3.3;
                dampingRate = 0.5;
                suspForceAppPointOffset = "wheel_1_2_axis";
                tireForceAppPointOffset = "wheel_1_2_axis";
                maxHandBrakeTorque = 3000;
                latStiffY = 180;
                maxCompression = 0.1;
                mMaxDroop = 0.15;
                sprungMass = 822.5;
                springStrength = 20562.5;
                springDamperRate = 8400;
            };
            class RF: LF // frente direita
            {
                boneName = "wheel_2_1_damper";
                center   = "wheel_2_1_axis";
                boundary = "wheel_2_1_bound";
                mass = 20;
                MOI = 5.3;
                dampingRate = 0.5;
                suspForceAppPointOffset = "wheel_2_1_axis";
                tireForceAppPointOffset = "wheel_2_1_axis";
                steering = true;
                side = "right";
                maxCompression = 0.1;
                mMaxDroop = 0.15;
                sprungMass = 422.5;
                springStrength = 10562.5;
                springDamperRate = 8400;
            };
            class RR: RF // traseira direita
            {
                boneName = "wheel_2_2_damper";
                steering = false;
                center   = "wheel_2_2_axis";
                boundary = "wheel_2_2_bound";
                mass = 20;
                MOI = 3.3;
                dampingRate = 0.5;
                suspForceAppPointOffset = "wheel_2_2_axis";
                tireForceAppPointOffset = "wheel_2_2_axis";
                maxHandBrakeTorque = 3000;
                latStiffY = 180;
                maxCompression = 0.2;
                mMaxDroop = 0.15;
                sprungMass = 822.5;
                springStrength = 20562.5;
                springDamperRate = 8400;
            };
        };

 

 

Share this post


Link to post
Share on other sites

There are a number of things it could be.

 

1) What is the total mass (kg) of your vehicle (as shown in the .p3d Geometry LOD)?

2) Please also post your model.cfg

Share this post


Link to post
Share on other sites
5 hours ago, UK_Apollo said:

Há uma série de coisas que poderia ser.

 

1) Qual é a massa total (kg) do seu veículo (como mostrado na .p3d Geometry LOD)?

2) Por favor, também postar seu modelo.cfg

 

1 - 3090 kg

2 - 

Spoiler

#include "basicdefines_A3.hpp"
class DefaultEventhandlers;

#include "CfgPatches.hpp"

class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;


class CfgFactionClasses
{
    class Caveirao
    {
        displayName="Veiculos B.O.P.E.";
        priority=8;
        side=1;
        icon="CAVEIRAOA3\veiculos\data\ui\logo.paa";
    };
};
class CfgVehicleClasses
{
    class ViaturasBOPE
    {
        displayName="Viaturas";
    };
};

class CfgVehicles
{
    class Car;
    class Car_F: Car
    {
        class HitPoints /// we want to use hitpoints predefined for all cars
        {
            class HitLFWheel;
            class HitLF2Wheel;
            class HitRFWheel;
            class HitRF2Wheel;
            class HitBody;
            class HitGlass1;
            class HitGlass2;
            class HitGlass3;
            class HitGlass4;
        };
        class EventHandlers;
    };

    class Caveirao: Car_F
    {
        model     = "\CAVEIRAOA3\veiculo\Caveirao.p3d";  /// simple path to model
        picture    = "\A3\Weapons_F\Data\placeholder_co.paa"; /// just some icon in command bar
        Icon    = "\A3\Weapons_F\Data\placeholder_co.paa"; /// icon in map

        displayName = "CAVEIRÃO ALPHA v0.7"; /// displayed in Editor

        hiddenSelections[] = {"camo1"}; ///we want to allow changing the color of this selection

        //terrainCoef     = 6.5;     /// different surface affects this car more, stick to tarmac
        //turnCoef         = 2.5;     /// should match the wheel turn radius
        //precision         = 10;     /// how much freedom has the AI for its internal waypoints - lower number means more precise but slower approach to way
        //brakeDistance     = 3.0;     /// how many internal waypoints should the AI plan braking in advance
        //acceleration     = 15;     /// how fast acceleration does the AI think the car has

        //fireResistance     = 5;     /// lesser protection against fire than tanks
        armor             = 50;     /// just some protection against missiles, collisions and explosions
        cost            = 50000; /// how likely is the enemy going to target this vehicle

        transportMaxBackpacks     = 3; /// just some backpacks fit the trunk by default
        transportSoldier         = 4; /// number of cargo except driver

        /// some values from parent class to show how to set them up
        wheelDamageRadiusCoef     = 0.9;             /// for precision tweaking of damaged wheel size
        wheelDestroyRadiusCoef     = 0.4;            /// for tweaking of rims size to fit ground
        //maxFordingDepth         = 0.5;            /// how high water would damage the engine of the car
        //waterResistance         = 1;            /// if the depth of water is bigger than maxFordingDepth it starts to damage the engine after this time
        crewCrashProtection        = 0.25;            /// multiplier of damage to crew of the vehicle => low number means better protection
        driverLeftHandAnimName     = "drivewheel"; /// according to what bone in model of car does hand move
        driverRightHandAnimName = "drivewheel";    /// beware, non-existent bones may cause game crashes (even if the bones are hidden during play)

        class TransportItems /// some first aid kits in trunk according to safety regulations
        {
            item_xx(FirstAidKit,4);
        };

        class Turrets{}; /// doesn't have any gunner nor commander
        class HitPoints: HitPoints
        {
            class HitLFWheel: HitLFWheel    {armor=0.125; passThrough=0;}; /// it is easier to destroy wheels than hull of the vehicle
            class HitLF2Wheel: HitLF2Wheel    {armor=0.125; passThrough=0;};

            class HitRFWheel: HitRFWheel    {armor=0.125; passThrough=0;};
            class HitRF2Wheel: HitRF2Wheel     {armor=0.125; passThrough=0;};

            class HitFuel             {armor=0.50; material=-1; name="fueltank"; visual=""; passThrough=0.2;}; /// correct points for fuel tank, some of the damage is aFRLied to the whole
            class HitEngine         {armor=0.50; material=-1; name="engine"; visual=""; passThrough=0.2;};
            class HitBody: HitBody     {name = "body"; visual="camo1"; passThrough=1;}; /// all damage to the hull is aFRLied to total damage

            class HitGlass1: HitGlass1 {armor=0.25;}; /// it is pretty easy to puncture the glass but not so easy to remove it
            class HitGlass2: HitGlass2 {armor=0.25;};
            class HitGlass3: HitGlass3 {armor=0.25;};
            class HitGlass4: HitGlass4 {armor=0.25;};
        };

        driverAction         = driver_offroad01; /// what action is going the driver take inside the vehicle. Non-existent action makes the vehicle inaccessible
        cargoAction[]         = {passenger_low01, passenger_generic01_leanleft, passenger_generic01_foldhands}; /// the same of all the crew
        getInAction         = GetInLow;         /// how does driver look while getting in
        getOutAction         = GetOutLow;         /// and out
        cargoGetInAction[]     = {"GetInLow"};     /// and the same for the rest, if the array has fewer members than the count of crew, the last one is used for the rest
        cargoGetOutAction[] = {"GetOutLow"};     /// that means all use the same in this case

        #include "sounds.hpp"    /// sounds are in a separate file to make this one simple
        #include "pip.hpp"        /// PiPs are in a separate file to make this one simple
        #include "physx.hpp"    /// PhysX settings are in a separate file to make this one simple

        class PlayerSteeringCoefficients /// steering sensitivity configuration
        {
             turnIncreaseConst     = 0.3; // basic sensitivity value, higher value = faster steering
             turnIncreaseLinear = 0.3; // higher value means less sensitive steering in higher speed, more sensitive in lower speeds
             turnIncreaseTime     = 0.3; // higher value means smoother steering around the center and more sensitive when the actual steering angle gets closer to the max. steering angle

             turnDecreaseConst     = 0.5; // basic caster effect value, higher value = the faster the wheels align in the direction of travel
             turnDecreaseLinear = 0.5; // higher value means faster wheel re-centering in higher speed, slower in lower speeds
             turnDecreaseTime     = 0.0; // higher value means stronger caster effect at the max. steering angle and weaker once the wheels are closer to centered position

             maxTurnHundred     = 0.5; // coefficient of the maximum turning angle @ 100km/h; limit goes linearly to the default max. turn. angle @ 0km/h
        };

        /// memory points where do tracks of the wheel appear
        // front left track, left offset
        memoryPointTrackFLL = "TrackFLL";
        // front left track, right offset
        memoryPointTrackFLR = "TrackFLR";
        // back left track, left offset
        memoryPointTrackBLL = "TrackBLL";
        // back left track, right offset
        memoryPointTrackBLR = "TrackBLR";
        // front right track, left offset
        memoryPointTrackFRL = "TrackFRL";
        // front right track, right offset
        memoryPointTrackFRR = "TrackFRR";
        // back right track, left offset
        memoryPointTrackBRL = "TrackBRL";
        // back right track, right offset
        memoryPointTrackBRR = "TrackBRR";

        class Damage /// damage changes material in specific places (visual in hitPoint)
        {
            tex[]={};
            mat[]=
            {
                "A3\data_f\glass_veh_int.rvmat",         /// material mapped in model
                "A3\data_f\Glass_veh_damage.rvmat",     /// changes to this one once damage of the part reaches 0.5
                "A3\data_f\Glass_veh_damage.rvmat",        /// changes to this one once damage of the part reaches 1

                "A3\data_f\glass_veh.rvmat",            /// another material
                "A3\data_f\Glass_veh_damage.rvmat",        /// changes into different ones
                "A3\data_f\Glass_veh_damage.rvmat"
            };
        };

        class Exhausts /// specific exhaust effects for the car
        {
            class Exhaust1 /// the car has two exhausts - each on one side
            {
                position     = "exhaust";          /// name of initial memory point
                direction     = "exhaust_dir";    /// name of memory point for exhaust direction
                effect         = "ExhaustsEffect";    /// what particle effect is it going to use
            };

            class Exhaust2
            {
                position     = "exhaust2_pos";
                direction     = "exhaust2_dir";
                effect         = "ExhaustsEffect";
            };
        };

        class Reflectors    /// only front lights are considered to be reflectors to save CPU
        {
            class LightCarHeadL01     /// lights on each side consist of two bulbs with different flares
            {
                color[]         = {1900, 1800, 1700};        /// approximate colour of standard lights
                ambient[]        = {5, 5, 5};                /// nearly a white one
                position         = "LightCarHeadL01";        /// memory point for start of the light and flare
                direction         = "LightCarHeadL01_end";    /// memory point for the light direction
                hitpoint         = "Light_L";                /// point(s) in hitpoint lod for the light (hitPoints are created by engine)
                selection         = "Light_L";                /// selection for artificial glow around the bulb, not much used any more
                size             = 1;                        /// size of the light point seen from distance
                innerAngle         = 100;                        /// angle of full light
                outerAngle         = 179;                        /// angle of some light
                coneFadeCoef     = 10;                        /// attenuation of light between the above angles
                intensity         = 1;                        /// strength of the light
                useFlare         = true;                        /// does the light use flare?
                dayLight         = false;                    /// switching light off during day saves CPU a lot
                flareSize         = 1.0;                        /// how big is the flare

                class Attenuation
                {
                    start             = 1.0;
                    constant         = 0;
                    linear             = 0;
                    quadratic         = 0.25;
                    hardLimitStart     = 30;        /// it is good to have some limit otherwise the light would shine to infinite distance
                    hardLimitEnd     = 60;        /// this allows adding more lights into scene
                };
            };

            class LightCarHeadL02: LightCarHeadL01
            {
                position     = "LightCarHeadL02";
                direction     = "LightCarHeadL02_end";
                FlareSize     = 0.5;                        /// side bulbs aren't that strong
            };

            class LightCarHeadR01: LightCarHeadL01
            {
                position     = "LightCarHeadR01";
                direction     = "LightCarHeadR01_end";
                hitpoint     = "Light_R";
                selection     = "Light_R";
            };

            class LightCarHeadR02: LightCarHeadR01
            {
                position     = "LightCarHeadR02";
                direction     = "LightCarHeadR02_end";
                FlareSize     = 0.5;
            };
        };

        aggregateReflectors[] = {{"LightCarHeadL01", "LightCarHeadL02"}, {"LightCarHeadR01", "LightCarHeadR02"}}; /// aggregating reflectors helps the engine a lot
        /// it might be even good to aggregate all lights into one source as it is done for most of the cars

        class EventHandlers: EventHandlers
        {
            // (_this select 0): the vehicle
            // """" Random texture source (pick one from the property textureList[])
            // []: randomize the animation sources (accordingly to the property animationList[])
            // false: Don't change the mass even if an animation source has a defined mass
            init="if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle;};";
        };

        // Must be kept as fail-safe in case of issue with the function
        hiddenSelectionsTextures[]={"\A3\Weapons_F\Data\placeholder_co.paa"};     /// we could use any texture to cover the car

        // Definition of texture sources (skins), used for the VhC (Vehicle customization)
        // Also, because the Garage uses the VhC, it will make them available from the garage
        // [_textureSourceClass1, _probability1, _textureSourceClass2, _probability2, ...]
        // Default behavior of the VhC is to select one of these sources, with a weighted random
        textureList[]=
        {
            "red", 1,
            "green", __EVAL(1/3), // You can also use EVAL to evaluate an expression
            "blue", 1,
            "black", 1
            // You can noticed that the white source is missing, therefore, it won't be part of the random
        };

        class MFD /// Clocks on the car board
        {
            class ClockHUD
            {
                #include "cfgHUD.hpp"
            };
        };
    };
    class C_Caveirao: Caveirao /// some class that is going to be visible in editor
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "B_Soldier_F";     /// we need someone to fit into the car
        side    = 1;             /// civilian car should be on civilian side
        faction="BOPE";        /// and with civilian faction
        author="MathiasEAP";
        displayName="Caveirão";
        vehicleClass="ViaturasBOPE";
    };
};

 

Share this post


Link to post
Share on other sites

Check in the Geometry LOD that the centre of gravity (mass) is mid-way between the axles of the car.

 

Then adjust the wheels so that they have the same springs on both front and back, so all 4 wheels are the same:

sprungMass = 772.5;         // 3090kg / 4
springStrength = 38625;     // try sprungMass x 50
springDamperRate = 10925;   // 2 x SQRT(sprungMass x SpringStrength)

You have posted more of your config.cpp - can you instead post the MODEL.CFG?

Share this post


Link to post
Share on other sites
11 hours ago, UK_Apollo said:

Verifique o LOD Geometry que o centro de gravidade (massa) está a meio caminho entre os eixos do carro.

 

Em seguida, ajuste as rodas para que elas tenham as mesmas molas na frente e nas costas, então todas as 4 rodas são as mesmas:


Você postou mais seu config.cpp - você pode, em vez disso, publicar o MODEL.CFG?

 

I'll try the way you told me, but I did it that way and it did not work, but I'll put the information you told me

 

Spoiler

class Rotation
{
    type="rotation";
    memory=1;
    minValue=0;
    maxValue=1;
    angle0=0;
    angle1=1;
};
class CfgSkeletons
{
    class Default
    {
        isDiscrete=1;
        skeletonInherit="";
        skeletonBones[]={};
    };
    class Vehicle: Default
    {
    };
    class Car: Vehicle
    {
        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",
            "",
            "OtocHlaven",
            "OtocVez",
            "damageHide",
            "",
            "damageVez",
            "OtocVez",
            "damageHlaven",
            "OtocHlaven",
            "ukaz_rychlo",
            "",
            "ukaz_rychlo2",
            "",
            "ukaz_rpm",
            "",
            "mph",
            "",
            "rpm",
            "",
            "fuel",
            "",
            "fuel_1",
            "",
            "fuel_01",
            "",
            "fuel_2",
            "",
            "fuel_3",
            "",
            "prop_01",
            "",
            "prop_02",
            "",
            "prop_2",
            "",
            "prop_1",
            "",
            "glass1",
            "damageHide",
            "glass2",
            "damageHide",
            "glass3",
            "damageHide",
            "glass4",
            "damageHide"
        };
    };
    class civil_car: Car
    {
        skeletonInherit="Car";
        skeletonBones[]=
        {
            "reverse_light",
            "",
            "daylights",
            "damageHide",
            "door1",
            "",
            "door2",
            "",
            "glass5",
            "damageHide",
            "wheel_1_2_damper",
            "wheel_1_2_damper_land"
        };
    };
};
class CfgModels
{
    class Default
    {
        sectionsInherit="";
        sections[]={};
        skeletonName="";
    };
    class Vehicle: Default
    {
        sections[]=
        {
            "cislo",
            "grupa",
            "side",
            "sektor",
            "clan",
            "clan_sign",
            "podsvit pristroju",
            "poskozeni",
            "L svetlo",
            "P svetlo",
            "zasleh"
        };
    };
    class Car: Vehicle
    {
        htMin=60;
        htMax=180;
        afMax=100;
        mfMax=8;
        mFact=1;
        tBody=150;
        sections[]=
        {
            "ammo",
            "zadni svetlo",
            "brzdove svetlo",
            "spz",
            "motor",
            "body",
            "clan",
            "clan_sign",
            "zasleh",
            "Light_R",
            "Light_L",
            "podsvit pristroju",
            "glass1",
            "glass2",
            "glass3",
            "glass4",
            "glass5",
            "glass6"
        };
        skeletonName="Car";
        class Animations
        {
            class damageHide
            {
                type="hide";
                source="damage";
                selection="damageHide";
                hideValue=1;
            };
            class damageHideVez: damageHide
            {
                selection="OtocVez";
            };
            class damageHideHlaven: damageHide
            {
                selection="OtocHlaven";
            };
            class wheel_1_1_destruct
            {
                type="hide";
                selection="wheel_1_1_hide";
                source="HitLFWheel";
                minValue=0;
                maxValue=1;
                hidevalue=0.99998999;
            };
            class wheel_1_2_destruct: wheel_1_1_destruct
            {
                source="HitLBWheel";
                selection="wheel_1_2_hide";
            };
            class wheel_1_3_destruct: wheel_1_1_destruct
            {
                source="HitLMWheel";
                selection="wheel_1_3_hide";
            };
            class wheel_1_4_destruct: wheel_1_1_destruct
            {
                source="HitLF2Wheel";
                selection="wheel_1_4_hide";
            };
            class wheel_2_1_destruct: wheel_1_1_destruct
            {
                source="HitRFWheel";
                selection="wheel_2_1_hide";
            };
            class wheel_2_2_destruct: wheel_1_1_destruct
            {
                source="HitRBWheel";
                selection="wheel_2_2_hide";
            };
            class wheel_2_3_destruct: wheel_1_1_destruct
            {
                source="HitRMWheel";
                selection="wheel_2_3_hide";
            };
            class wheel_2_4_destruct: wheel_1_1_destruct
            {
                source="HitRF2Wheel";
                selection="wheel_2_4_hide";
            };
            class wheel_1_1_destruct_unhide
            {
                type="hide";
                selection="wheel_1_1_unhide";
                source="HitLFWheel";
                minValue=0;
                maxValue=1;
                hidevalue=0;
                UnHidevalue=1;
            };
            class wheel_1_2_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitLBWheel";
                selection="wheel_1_2_unhide";
            };
            class wheel_1_3_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitLMWheel";
                selection="wheel_1_3_unhide";
            };
            class wheel_1_4_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitLF2Wheel";
                selection="wheel_1_4_unhide";
            };
            class wheel_2_1_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitRFWheel";
                selection="wheel_2_1_unhide";
            };
            class wheel_2_2_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitRBWheel";
                selection="wheel_2_2_unhide";
            };
            class wheel_2_3_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitRMWheel";
                selection="wheel_2_3_unhide";
            };
            class wheel_2_4_destruct_unhide: wheel_1_1_destruct_unhide
            {
                source="HitRF2Wheel";
                selection="wheel_2_4_unhide";
            };
            class wheel_1_1_Damage: wheel_1_1_destruct
            {
                type="translation";
                axis="Basic_Damper_Destruct_Axis";
                memory=1;
                selection="wheel_1_1_damper";
                source="HitLFWheel";
                minValue=0;
                maxValue=1;
                offset0=0;
                offset1=0.2;
            };
            class wheel_1_2_Damage: wheel_1_1_Damage
            {
                source="HitLBWheel";
                selection="wheel_1_2_damper";
            };
            class wheel_1_3_Damage: wheel_1_1_Damage
            {
                source="HitLMWheel";
                selection="wheel_1_3_damper";
            };
            class wheel_1_4_Damage: wheel_1_1_Damage
            {
                source="HitLF2Wheel";
                selection="wheel_1_4_damper";
            };
            class wheel_2_1_Damage: wheel_1_1_Damage
            {
                source="HitRFWheel";
                selection="wheel_2_1_damper";
            };
            class wheel_2_2_Damage: wheel_1_1_Damage
            {
                source="HitRBWheel";
                selection="wheel_2_2_damper";
            };
            class wheel_2_3_Damage: wheel_1_1_Damage
            {
                source="HitRMWheel";
                selection="wheel_2_3_damper";
            };
            class wheel_2_4_Damage: wheel_1_1_Damage
            {
                source="HitRF2Wheel";
                selection="wheel_2_4_damper";
            };
            class wheel_1_1_Damper_Damage_BackAnim: wheel_1_1_Damage
            {
                selection="wheel_1_1_damper";
                offset1="-1.2*0.2";
            };
            class wheel_1_2_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitLBWheel";
                selection="wheel_1_2_damper";
            };
            class wheel_1_3_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitLMWheel";
                selection="wheel_1_3_damper";
            };
            class wheel_1_4_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitLF2Wheel";
                selection="wheel_1_4_damper";
            };
            class wheel_2_1_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitRFWheel";
                selection="wheel_2_1_damper";
            };
            class wheel_2_2_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitRBWheel";
                selection="wheel_2_2_damper";
            };
            class wheel_2_3_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitRMWheel";
                selection="wheel_2_3_damper";
            };
            class wheel_2_4_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                source="HitRF2Wheel";
                selection="wheel_2_4_damper";
            };
            class Glass1_destruct
            {
                type="hide";
                selection="glass1";
                source="HitGlass1";
                minValue=0;
                maxValue=1;
                hidevalue=0.99998999;
            };
            class Glass2_destruct: Glass1_destruct
            {
                selection="glass2";
                source="HitGlass2";
            };
            class Glass3_destruct: Glass1_destruct
            {
                selection="glass3";
                source="HitGlass3";
            };
            class Glass4_destruct: Glass1_destruct
            {
                selection="glass4";
                source="HitGlass4";
            };
            class Glass5_destruct: Glass1_destruct
            {
                selection="glass5";
                source="HitGlass5";
            };
            class Glass6_destruct: Glass1_destruct
            {
                selection="glass6";
                source="HitGlass6";
            };
            class Fuel: Rotation
            {
                source="fuel";
                selection="fuel";
                axis="fuel_axis";
                maxValue=1;
                memory=1;
                angle0="rad -110";
                angle1=0;
            };
            class IndicatorSpeed: Rotation
            {
                source="speed";
                selection="mph";
                axis="mph_axis";
                memory=1;
                maxValue=38.900002;
                angle1="rad -265";
            };
            class IndicatorFuel: Rotation
            {
                type="rotation";
                source="fuel";
                selection="fuel_1";
                axis="fuel_1_axis";
                memory=1;
                minValue=0;
                maxValue=1;
                angle0=-0.087265998;
                angle1=-1.6580631;
            };
            class IndicatorRPM: Rotation
            {
                source="rpm";
                selection="rpm";
                axis="rpm_axis";
                memory=1;
                angle1="rad 80";
            };
            class DrivingWheel: Rotation
            {
                source="drivingWheel";
                selection="drivewheel";
                axis="drivewheel_axis";
                minValue=-1;
                maxValue=1;
                angle0="(rad 80)";
                angle1="(rad -80)";
            };
            class Steering_1_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_1_1_steering";
                axis="wheel_1_1_steering_axis";
                memory=1;
                minValue=-1;
                maxValue=1;
                angle0=1.0471981;
                angle1=-1.0471981;
            };
            class Steering_2_1: Steering_1_1
            {
                selection="wheel_2_1_steering";
                axis="wheel_2_1_steering_axis";
            };
            class Wheel_1_1
            {
                type="rotationX";
                source="wheel";
                selection="wheel_1_1";
                axis="wheel_1_1_axis";
                memory=1;
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1="rad -360";
            };
            class wheel_2_1: Wheel_1_1
            {
                selection="wheel_2_1";
                axis="wheel_2_1_axis";
            };
            class wheel_1_2: Wheel_1_1
            {
                selection="wheel_1_2";
                axis="wheel_1_2_axis";
            };
            class wheel_1_3: Wheel_1_1
            {
                selection="wheel_1_3";
                axis="wheel_1_3_axis";
            };
            class Wheel_2_2: Wheel_1_1
            {
                selection="wheel_2_2";
                axis="wheel_2_2_axis";
            };
            class Wheel_2_3: Wheel_1_1
            {
                selection="wheel_2_3";
                axis="wheel_2_3_axis";
            };
            class Wheel_1_4: Wheel_1_1
            {
                selection="wheel_1_4";
                axis="wheel_1_4_axis";
            };
            class Wheel_2_4: Wheel_1_1
            {
                selection="wheel_2_4";
                axis="wheel_2_4_axis";
            };
            class Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_1_damper_land";
                axis="posun wheel_1_1";
                animPeriod=1;
                minValue="0";
                maxValue="1";
                offset0="0.5";
                offset1="-0.5";
                memory=1;
            };
            class wheel_2_1_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_1_damper_land";
            };
            class wheel_1_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_1_2_damper_land";
            };
            class Wheel_2_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_2_damper_land";
            };
            class daylights
            {
                type="hide";
                source="rpm";
                selection="daylights";
                minValue=-0.80000001;
                maxValue=0.2;
                unhidevalue=1;
                sourceAddress="clamp";
            };
            class reverse_light
            {
                type="Hide";
                selection="reverse_light";
                sourceAddress="clamp";
                source="Gear";
                minValue=-1;
                maxValue=0;
                hideValue="0.2";
            };
        };
    };
    class Caveirao: Car
    {
        skeletonName="civil_car";
        sectionsInherit="Car";
        sections[]=
        {
            "Camo1",
            "body",
            "karoserie",
            "palivo"
        };
        class Animations: Animations
        {
            class wheel_1_1_Damage: wheel_1_1_Damage
            {
                offset1=0.18000001;
            };
            class wheel_1_2_Damage: wheel_1_2_Damage
            {
                offset1=0.18000001;
            };
            class wheel_2_1_Damage: wheel_2_1_Damage
            {
                offset1=0.18000001;
            };
            class wheel_2_2_Damage: wheel_2_2_Damage
            {
                offset1=0.18000001;
            };
            class wheel_1_1_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim
            {
                offset1=-0.18000001;
            };
            class wheel_1_2_Damper_Damage_BackAnim: wheel_1_2_Damper_Damage_BackAnim
            {
                offset1=-0.18000001;
            };
            class wheel_2_1_Damper_Damage_BackAnim: wheel_2_1_Damper_Damage_BackAnim
            {
                offset1=-0.18000001;
            };
            class wheel_2_2_Damper_Damage_BackAnim: wheel_2_2_Damper_Damage_BackAnim
            {
                offset1=-0.18000001;
            };
            class DrivingWheel
            {
                type="rotation";
                source="drivingWheel";
                selection="drivewheel";
                axis="drivewheel_axis";
                memory=1;
                minValue=-1;
                maxValue=1;
                angle0="(rad 70)";
                angle1="(rad -70)";
            };
            class Steering_1_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_1_1_steering";
                axis="wheel_1_1_steering_axis";
                memory=1;
                minValue="rad -90";
                maxValue="rad +90";
                angle0=1.0471981;
                angle1=-1.0471981;
            };
            class Steering_2_1: Steering_1_1
            {
                selection="wheel_2_1_steering";
                axis="wheel_2_1_steering_axis";
                angle0=1.0471981;
                angle1=-1.0471981;
            };
            class IndicatorSpeed: Rotation
            {
                source="speed";
                selection="mph";
                axis="mph_axis";
                memory=1;
                maxValue=28;
                angle0=0.17453299;
                angle1=-3.141593;
            };
            class IndicatorRPM: Rotation
            {
                type="rotation";
                source="rpm";
                selection="rpm";
                axis="rpm_axis";
                memory=1;
                minValue=0;
                maxValue=7500;
                angle0="(rad 0)";
                angle1="(rad 250)";
            };
            class fuel
            {
                type="rotation";
                source="fuel";
                selection="fuel";
                axis="fuel_axis";
                memory=1;
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1="rad +55";
            };
            class prop_01
            {
                type="rotation";
                source="rpm";
                selection="prop_1";
                axis="prop_1_axis";
                memory=1;
                minValue=1000;
                maxValue=7000;
                angle0="rad 30";
                angle1="rad 35";
            };
            class daylights
            {
                type="hide";
                source="rpm";
                selection="daylights";
                minValue=-0.80000001;
                maxValue=0.2;
                unhidevalue=1;
                sourceAddress="clamp";
            };
            class reverse_light
            {
                type="Hide";
                selection="reverse_light";
                sourceAddress="clamp";
                source="Gear";
                minValue=-1;
                maxValue=0;
                hideValue="0.2";
            };
            class damageHidedoor1: damageHide
            {
                selection="door1";
            };
            class damageHidedoor2: damageHide
            {
                selection="door2";
            };
            class Glass5_destruct
            {
                type="hide";
                selection="glass5";
                source="HitGlass5";
                minValue=0;
                maxValue=1;
                hidevalue=0.99998999;
            };
            class Wheel_1_1_Damper: Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_1_damper_land";
                axis="posun wheel_1_1";
                animPeriod=1;
                minValue="0";
                maxValue="1";
                offset0="0.5";
                offset1="-0.5";
                memory=1;
            };
            class wheel_2_1_Damper: Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_2_1_damper_land";
                axis="posun wheel_2_1";
                animPeriod=1;
                minValue="0";
                maxValue="1";
                offset0="0.5";
                offset1="-0.5";
                memory=1;
            };
            class wheel_1_2_Damper: Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_2_damper_land";
                axis="posun wheel_1_2";
                animPeriod=1;
                minValue="0";
                maxValue="1";
                offset0="0.5";
                offset1="-0.5";
                memory=1;
            };
            class Wheel_2_2_Damper: Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_2_2_damper_land";
                axis="posun wheel_2_2";
                animPeriod=1;
                minValue="0";
                maxValue="1";
                offset0="0.5";
                offset1="-0.5";
                memory=1;
            };
        };
    };
};
 

 

Share this post


Link to post
Share on other sites

What is the length (in metres) of each of the damper axis in the Memory LOD (distance between the axis memory points)?

 

axis="posun wheel_1_1";

axis="posun wheel_1_2";

axis="posun wheel_2_1";

axis="posun wheel_2_2";

 

Are your wheel boundary memory points exactly vertically below the wheel axis?

What are the names of the memory points in the LandContact LOD? Post a screenshot if you can.

Share this post


Link to post
Share on other sites
4 hours ago, UK_Apollo said:

What is the length (in metres) of each of the damper axis in the Memory LOD (distance between the axis memory points)?

 

axis="posun wheel_1_1";

axis="posun wheel_1_2";

axis="posun wheel_2_1";

axis="posun wheel_2_2";

 

Are your wheel boundary memory points exactly vertically below the wheel axis?

What are the names of the memory points in the LandContact LOD? Post a screenshot if you can.

 

landcontact LOD - wheel_1_2_damper_land

 

zk6cjPh.png

 

posun wheel_1_1 

R7ybdRp.png

 

 

 

Sorry for my ignorance, I'm newbie, I'm creating the addon by videos and the model of the arma.

how can i length the size of the damper axis

 

Share this post


Link to post
Share on other sites
2 minutes ago, MathiasEAP said:

how can i length the size of the damper axis

 

 

Window > Measuring (Ctrl+Alt+M)

"Move Pin" (R)

  • Like 1

Share this post


Link to post
Share on other sites

Yes it might be 0.189m between the memory points looking at the scale of your model.

I'll assume this is correct and that all 4 axis are the same length.

 

Try changing the suspension values as follows:

 

In config.cpp, in 4 places, make the suspension travel of all wheels = 0.10m (compression and droop):

maxCompression = 0.10;      // +-0.10m suitable suspension travel for a civilian car in Arma
mMaxDroop = 0.10;

In model.cfg, match the suspension travel of the animation with the config.cpp value:

    maxCompression = offset0 x distance between damper axis memory points

    maxDroop = offset1 x distance between damper axis memory points

 

offset0 = 0.10 / 0.189 = 0.529

class Caveirao : Car {
   	...
    class Animations : Animations {
	...
        class Wheel_1_1_Damper : Wheel_1_1_Damper {
            type="translation";
            source="damper";
            selection="wheel_1_1_damper_land";
            axis="posun wheel_1_1";
            animPeriod=1;
            minValue=0;
            maxValue=1;
            offset0=0.529;
            offset1=-0.529;
            memory=1;
        };
        class wheel_2_1_Damper : Wheel_1_1_Damper {
            type="translation";
            source="damper";
            selection="wheel_2_1_damper_land";
            axis="posun wheel_2_1";
            animPeriod=1;
            minValue=0;
            maxValue=1;
            offset0=0.529;
            offset1=-0.529;
            memory=1;
        };
        class wheel_1_2_Damper : Wheel_1_1_Damper {
            type="translation";
            source="damper";
            selection="wheel_1_2_damper_land";
            axis="posun wheel_1_2";
            animPeriod=1;
            minValue=0;
            maxValue=1;
            offset0=0.529;
            offset1=-0.529;
            memory=1;
        };
        class Wheel_2_2_Damper : Wheel_1_1_Damper {
            type="translation";
            source="damper";
            selection="wheel_2_2_damper_land";
            axis="posun wheel_2_2";
            animPeriod=1;
            minValue=0;
            maxValue=1;
            offset0=0.529;
            offset1=-0.529;
            memory=1;
        };

Lastly, check that the suspension is moving in the correct direction - drive over a small rock, and observe the wheel moving up - if it moves downwards instead, reverse the +- on the offsets in model.cfg.

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

×