Jump to content
Sign in to follow this  
BadHabitz

Bouncing vehicle issue

Recommended Posts

This is the model from the A2 Samples. I couldn't get a good model.cfg that could get the tires spinning, wheels steering and suspension moving. I took the model.cfg from the test car in the BI Tools sample and just changed it to work with the SUV model. Success! The animations are working, but now the vehicle is bouncing. I'm also working on the ArmoredSUV, and I use the same model.cfg and get the same results. Since they have the same model.cfg and different config.cpp files I am suspecting it's the commonality that is the issue, but I can't figure out what's going on.

Any help would be great

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_2_1_damper_land","",
		"wheel_2_2_damper_land","",

		"wheel_1_1_damper","wheel_1_1_damper_land",
		"wheel_1_2_damper","wheel_1_2_damper_land",

		"wheel_2_1_damper","wheel_2_1_damper_land",
		"wheel_2_2_damper","wheel_2_2_damper_land",

		"wheel_1_1_steering","wheel_1_1_damper",
		"wheel_1_2_steering","wheel_1_2_damper",


		"wheel_2_1_steering","wheel_2_1_damper",
		"wheel_2_2_steering","wheel_2_2_damper",


		"wheel_1_1","wheel_1_1_steering",
		"wheel_1_2","wheel_1_2_steering",

		"wheel_2_1","wheel_2_1_steering",
		"wheel_2_2","wheel_2_2_steering",

		"wheel_1_1_unhide","wheel_1_1",
		"wheel_1_2_unhide","wheel_1_2",

		"wheel_2_1_unhide","wheel_2_1",
		"wheel_2_2_unhide","wheel_2_2",

		"wheel_1_1_hide","wheel_1_1",
		"wheel_1_2_hide","wheel_1_2",

		"wheel_2_1_hide","wheel_2_1",
		"wheel_2_2_hide","wheel_2_2",


		"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 suv: Car
{
	skeletonInherit="Car";
	skeletonBones[]=
	{
		"reverse_light","",
		"daylights","damageHide",
		"door1","",
		"door2","",
		"glass5","damageHide",
	};
};

};

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;		// Minimum half-cooling time (in seconds)
	htMax = 180;	// Maximum half-cooling time (in seconds)
	afMax = 100;	// Maximum temperature in case the model is alive (in celsius)
	mfMax = 8;		// Maximum temperature when the model is moving (in celsius)
	mFact = 1;		// Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
	tBody = 150;	// Metabolism temperature of the model (in celsius)

	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
	{
		// destruct START
		class damageHide
		{
			type="hide";
			source="damage";
			selection="damageHide";
			hideValue=1.0;
		};
		class damageHideVez:damageHide
		{
			selection="OtocVez";
		};
		class damageHideHlaven:damageHide
		{
			selection="OtocHlaven";
		};

		// Wheels START
		// Wheels Complete Destruct START
		class wheel_1_1_destruct
		{
			type="hide";
			selection="wheel_1_1_hide";
			source="HitLFWheel";
			minValue = 0; // upravit na 0.99
			maxValue = 1; // upravit na 1.0
			hidevalue = 0.99999;
		};
		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.00000;
			UnHidevalue = 1.00000;
		};
		class wheel_1_2_destruct_unhide:wheel_1_1_destruct_unhid  e {source="HitLBWheel";selection="wheel_1_2_unhide";};


		class wheel_2_1_destruct_unhide:wheel_1_1_destruct_unhid  e {source="HitRFWheel";selection="wheel_2_1_unhide";};
		class wheel_2_2_destruct_unhide:wheel_1_1_destruct_unhid  e {source="HitRBWheel";selection="wheel_2_2_unhide";};

		// Wheels Complete Destruct END

		#define DamageOffset 0.2

		// Wheels Damage START
		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.0;
			maxValue = 1;
			offset0 = 0;
			offset1 = DamageOffset;
		};
		class wheel_1_2_Damage:wheel_1_1_Damage {source="HitLBWheel";selection="wheel_1_2_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_1_1_Damper_Damage_BackAnim:wheel_1_1_Damage {selection="wheel_1_1_damper";offset1 = -1.2*DamageOffset;};
		class wheel_1_2_Damper_Damage_BackAnim:wheel_1_1_Damper_  Damage_BackAnim {source="HitLBWheel";selection="wheel_1_2_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";};


		// Wheels Damage END
		// Wheels END

			//Glass Damage START
			class Glass1_destruct
			{
				type="hide";
				selection="glass1";
				source="HitGlass1";
				minValue = 0; 
				maxValue = 1; 
				hidevalue = 0.99999;
			};
			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";};
			//Glass Damage END

		// destruct END
		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.000000;
			maxValue=1.000000;
			angle0=-0.087266;
			angle1=-1.658063;
		};
		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.047198;
			angle1=-1.047198;
		};
		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_2_2: Wheel_1_1
		{
			selection="wheel_2_2";
			axis="wheel_2_2_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.8;
			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 suv: Car
{
	skeletonName = "suv";
	sectionsInherit = "Car";
	sections[]=
	{
		"camo",
		"Camo1",
		"Camo2",
		"Camo3",
		"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.8;
			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 Wheel_1_1_Damper: Wheel_1_1_Damper
		{
			type="translation";
			source="damper";
			selection="wheel_1_1_damper_land";
			axis="posun wheel_1_1";
			animPeriod = 0;
			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";		
		};			
	};
};
};

Share this post


Link to post
Share on other sites

Does it have PhysX?, if so what are the maxDroop and maxCompression values.

Share this post


Link to post
Share on other sites

No, just 'simulation=car' for now.

Share this post


Link to post
Share on other sites

I had a similar problem with a tank with PhysX, cannot remember exactly how I fixed it. Try bring this value offset1= "-0.5"; (Wheel_1_1_Damper) closer to zero.

Share this post


Link to post
Share on other sites

I played around with those values, going to -0.1, 0.1, 0.5 and to 1, and it didn't have an effect.

Share this post


Link to post
Share on other sites

Try playing around with the geometry, maybe geometry within the model is colliding with each other, causing the bouncing?

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
Sign in to follow this  

×