Jump to content
.Tom

Vehicle doesn't accelerate faster than 12kph

Recommended Posts

As the title says, i have a problem with the physx.hpp and the tank only reaches 12kph, it doesn't change gears.

This is the physx that i'm using
 

simulation= tankX;
maxSpeed=75;
waterResistanceCoef=0.4200;
enginePower=536.904;
maxOmega=251.327;
minOmega=83.776;
peakTorque=2000;

torqueCurve[] 		= {
	{0, 0},
	{(1600/2640), (2650/2850)},
	{(1800/2640), (2800/2850)},
	{(1900/2640), (2850/2850)},
	{(2000/2640), (2800/2850)},
	{(2200/2640), (2750/2850)},
	{(2400/2640), (2600/2850)},
	{(2640/2640), (2350/2850)}
};
thrustDelay			= 0.42;    	/// how much time does it take to get the full thrust (default 1), used to reduce initial wheel slipping
clutchStrength 		= 180.0;
fuelCapacity		= 2000;
brakeIdleSpeed		= 0.75; 	/// speed in m/s below which braking is applied
switchTime			= 0;
latency 			= 2;
tankTurnForce		= 335500; /// Random magic number, expected to be something like 11 x mass of vehicle

/// Gearbox and transmission
idleRpm = 800; // RPM at which the engine idles.
redRpm = 2400; // RPM at which the engine redlines.

engineLosses = 20; // power losses on the engine's crank-shaft (before the gearbox) in Nm. (Multiplied by the gear ratio)
transmissionLosses = 15; // power losses on wheel axis (in/after the gearbox) in Nm. (Constant)
changeGearType="rpmratio";
changeGearOmegaRatios[] = {             
	__EVAL(2400/2400)    , __EVAL(1200/2400),   // R1
	__EVAL(800/2400)     , 0,                   // N
	__EVAL(2300/2400)    , __EVAL(1200/2400),   // D1
	__EVAL(2300/2400)    , __EVAL(1200/2400),   // D2
	__EVAL(2300/2400)    , __EVAL(1200/2400),   // D3
	__EVAL(2300/2400)    , __EVAL(1200/2400),   // D4
	__EVAL(2300/2400)    , __EVAL(1200/2400),	// D5
	__EVAL(2300/2400)    , __EVAL(1200/2400),   // D6
	__EVAL(2300/2400)    , __EVAL(1200/2400)    // D7
};

class complexGearbox {
	GearboxRatios[]    = {
		"R2",-1.709,
		"N",0,
		"D1",6.267,
		"D2",4.7,
		"D3",3.318,
		"D4",1.709,
		"D5",1.128,
		"D6",0.910,
		"D7",0.752
	};
	gearBoxMode        = "full-auto"; //gearbox can be of type: full-auto (only requires 'W' or 'S'), auto (requires shift between drive and reverse), semi-auto, manual
	moveOffGear        = 2; // 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.
	transmissionDelay  = 0.1;
};
/// end of gearbox

class Wheels {
	class L2 {
		boneName = "wheel_podkoloL1";
		center   = "wheel_1_2_axis";
		boundary = "wheel_1_2_bound";
		damping  = 75.0;
		// tanks do not have steerable wheels
		steering = 0;
		/// We need to distinguish the side to apply the right thrust value
		side = "left";
		/// weight of the wheel is defined per wheel, it reduces overall mass of vehicle
		weight = 150;
		mass = 150;
		MOI = 25;
		latStiffX = 25;
		latStiffY = 280;
		longitudinalStiffnessPerUnitGravity = 100000;
		maxBrakeTorque = 40000;
		sprungMass = 4000.0;
		springStrength = 324000;
		springDamperRate = 36000;
		dampingRate = 1.0;
		dampingRateInAir = 8830.0;
		dampingRateDamaged = 10.0;
		dampingRateDestroyed = 10000.0;
		maxDroop = 0.15;
		maxCompression = 0.15;
	};
	class L3: L2 {
		boneName = "wheel_podkolol2";
		center   = "wheel_1_3_axis";
		boundary = "wheel_1_3_bound";
	};
	class L4: L2 {
		boneName = "wheel_podkolol3";
		center   = "wheel_1_4_axis";
		boundary = "wheel_1_4_bound";
	};
	class L5: L2 {
		boneName = "wheel_podkolol4";
		center   = "wheel_1_5_axis";
		boundary = "wheel_1_5_bound";
	};
	class L6: L2 {
		boneName = "wheel_podkolol5";
		center   = "wheel_1_6_axis";
		boundary = "wheel_1_6_bound";
	};
	class L7: L2 {
		boneName = "wheel_podkolol6";
		center   = "wheel_1_7_axis";
		boundary = "wheel_1_7_bound";
	};
	// rear left wheel, usually Idler or Drive Sproket
	// Note, this wheel may not always be touching the ground, but we need it anyway!
	class L9: L2 {
		boneName = "wheel_podkolol9";
		center   = "wheel_1_9_axis";
		boundary = "wheel_1_9_bound";
		sprungMass = 1500.0;
		springStrength = 37500;
		springDamperRate = 7500;
		maxDroop = 0;
		maxCompression = 0;
	};
	// front left wheel, usually Idler or Drive Sproket
	// Note, this wheel may not always be touching the ground, but we need it anyway!
	class L1: L2 {
		boneName = "";
		center   = "wheel_1_1_axis";
		boundary = "wheel_1_1_bound";
		sprungMass = 1500.0;
		springStrength = 37500;
		springDamperRate = 7500;
		maxDroop = 0;
		maxCompression = 0;
	};

	class R2: L2 {
		boneName = "wheel_podkolop1";
		center   = "wheel_2_2_axis";
		boundary = "wheel_2_2_bound";
		side = "right";
	};
	class R3: R2 {
		boneName = "wheel_podkolop2";
		center   = "wheel_2_3_axis";
		boundary = "wheel_2_3_bound";
	};
	class R4: R2 {
		boneName = "wheel_podkolop3";
		center   = "wheel_2_4_axis";
		boundary = "wheel_2_4_bound";
	};
	class R5: R2 {
		boneName = "wheel_podkolop4";
		center   = "wheel_2_5_axis";
		boundary = "wheel_2_5_bound";
	};
	class R6: R2 {
		boneName = "wheel_podkolop5";
		center   = "wheel_2_6_axis";
		boundary = "wheel_2_6_bound";
	};
	class R7: R2 {
		boneName = "wheel_podkolop6";
		center   = "wheel_2_7_axis";
		boundary = "wheel_2_7_bound";
	};
	// rear right wheel, usually Idler or Drive Sproket
	// Note, this wheel may not always be touching the ground, but we need it anyway!
	class R9: R2 {
		boneName = "wheel_podkolop9";
		center   = "wheel_2_9_axis";
		boundary = "wheel_2_9_bound";
		sprungMass = 1500.0;
		springStrength = 37500;
		springDamperRate = 7500;
		maxDroop = 0;
		maxCompression = 0;
	};
	// front right wheel, usually Idler or Drive Sproket
	// Note, this wheel may not always be touching the ground, but we need it anyway!
	class R1: R2 {
		boneName = "";
		center   = "wheel_2_1_axis";
		boundary = "wheel_2_1_bound";
		sprungMass = 1500.0;
		springStrength = 37500;
		springDamperRate = 7500;
		maxDroop = 0;
		maxCompression = 0;
	};
};

 

Share this post


Link to post
Share on other sites
		mass		= 188;
		MOI			= __EVAL(1.0*(0.5*188*(0.387^2)));		// radius 0.378626m

Use above equation to calculate MOI & then tweak dampingRate & dampingRateInAir - it's important that both parameters are keeping same value. Depending on amount of wheels, their size, spacing & mass that value can go anywhere from 1 to 9000.

To make is easier, try to follow following algorithm:

1. Start with dampingRateInAir at 4500

a) If it's too fast then pick value between 4500 & 9000 - in this case it will be 6750

b) If it's too slow then pick value between 4500 & 0- in this case it will be 2250

Generally, try to narrow down correct value by taking between middle value till you are closer to correct one. It's quite essential to diag_mergeConfigFile ( you can search for information about it on forums or Bohemia wiki - i.e. 

 


		dampingRate				= 1385.0;
		dampingRateInAir		= 1385.0;


 

  • Like 2

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

×