Jump to content
Yoilon

Floating Vehicle

Recommended Posts

pretty self explanatory from the title, but ive got a vehicle that im in the process of making and ive come into a bit of a snag:
WjrD4Fb.jpg

any ideas?

Share this post


Link to post
Share on other sites

Could you post your config and model.cfg files? Looks like a your suspension and model movement don't line up

 

Share this post


Link to post
Share on other sites

Is it floating in objectbuilder too? Could have various reasons. My suggestion would be that the geometry LOD is not on the same level as the Vlods.

 

I got similar results once in blender. I fixed it by snapping the cursor to Center and setting origin of every LOD to 3d Cursor.

 

Share this post


Link to post
Share on other sites
14 minutes ago, EllaElectro said:

Is it floating in objectbuilder too? Could have various reasons. My suggestion would be that the geometry LOD is not on the same level as the Vlods.

 

I got similar results once in blender. I fixed it by snapping the cursor to Center and setting origin of every LOD to 3d Cursor.

 

na mate, ive tried all that in object builder its all good. in blender ive applied rotation and location so the origin is all at the center

Share this post


Link to post
Share on other sites

likely reason: wheel damper animation (model.cfg) isn't linked correctly to physx damper movement. Try reversed direction of animation.

Share this post


Link to post
Share on other sites

What happens if you change to

    maxCompression = 0.5;

    mMaxDroop = 0.5;

 

in physX.hpp.

Share this post


Link to post
Share on other sites
36 minutes ago, Whitefame said:

What happens if you change to

    maxCompression = 0.5;

    mMaxDroop = 0.5;

 

in physX.hpp.

nothing changes, still floating. maybe a little bit lower, but yeah. still floating

Share this post


Link to post
Share on other sites
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;
};

Like i said - invert values of offset0 and offset1.  These values MUST be identical to maxDroop and maxCompression as well.

Share this post


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

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;
};

Like i said - invert values of offset0 and offset1.  These values MUST be identical to maxDroop and maxCompression as well.

do us a favor and give me your address so i can come and kiss your feet. thanks a bunch bud. shes workin now. just gotta adjust the mass values so it isnt riding so high 

Share this post


Link to post
Share on other sites

now the wheels are about an inch in the ground, whats the go for fixing that?

Share this post


Link to post
Share on other sites

Just lower the ground an inch  :)

  • Like 1

Share this post


Link to post
Share on other sites
On 8/2/2017 at 3:49 PM, Yoilon said:

now the wheels are about an inch in the ground, whats the go for fixing that?

I am having similar problems with a 2nd 4-wheel vehicle, even though I never experienced them the 1st time. So I have a few questions for you that might help narrow down a common symptom for both of us:
- Is your vehicle light weight? Mine is under 600kg.
- Do you have 4 independent damper axes, or are you just using "basic_damper_destruct?" My vehicle has four distinct, non-vertical, damper axes.

- Are the wheels aligned at the same degree under the vehicle? Mine are not; the rear wheels hang a little lower with the intention of the vehicle leaning forward once it is on the ground.

- Do your wheels' suspension seem to animate at all, or is there more sinking into the ground when you take a turn? Mine have this problem. There is some very subtle visible animation, but it's far less than the movement of the vehicle implies.

Share this post


Link to post
Share on other sites

In your PhysX configuration, make sure that sprungMass and values derived from this actually reflect the real weight of your vehicle geo lod. If those are wrongm the wheels might actually float

Sent from my SM-T580 using Tapatalk

Share this post


Link to post
Share on other sites
3 hours ago, Varanon said:

In your PhysX configuration, make sure that sprungMass and values derived from this actually reflect the real weight of your vehicle geo lod. If those are wrongm the wheels might actually float

Sent from my SM-T580 using Tapatalk
 

not in my experience. If sprungMass is wrong, the vehicle gets pushed up more than usual (if its too high), but not float with wheels not touching the ground. Floating is either memorypoints not matching visuals or visual animations not matching physx movements

Share this post


Link to post
Share on other sites

I may be wrong on this and cannot find documentation on it, but I think the length of your suspension axes (that is, the distance between two memory points that represent one axis) can influence the outcome of what the defined offset values are.

Share this post


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

I may be wrong on this and cannot find documentation on it, but I think the length of your suspension axes (that is, the distance between two memory points that represent one axis) can influence the outcome of what the defined offset values are.

 

Distance moved = offset value x length between memory points axis

A good way to deal with this is to set the memory points at the required travel length, with the offsets at 0 and 1. Then only move the mem points to adjust.

 

But that's not the OP's problem with the wheels being underground.

He may need to move the wheel_x_x_bound mem points, and check the physx wheelCircumference value.

Share this post


Link to post
Share on other sites
On 8/28/2017 at 4:20 AM, UK_Apollo said:

 

Distance moved = offset value x length between memory points axis

A good way to deal with this is to set the memory points at the required travel length, with the offsets at 0 and 1. Then only move the mem points to adjust.

 

But that's not the OP's problem with the wheels being underground.

He may need to move the wheel_x_x_bound mem points, and check the physx wheelCircumference value.

I've been experimenting with all these for the past few days, and though I have yet to nail it perfectly, I have found out that there's more to the sinking problem than bounds and circumference. It seems the wheelCircumference is not even needed if you have set the bounds in the memLOD. There is a documented comment that it's used for tractors, which seems odd to me considering tractors have two very different wheel sizes.

@Yoilon: UK_Apollo is right to say you may need to adjust your mem points; that's the first thing I'd check, too. If setting the bounds isn't working for you, however, then there are other factors to consider for wheels sinking/floating. Spring strength and weight (and weight distribution) can offset the effectiveness of your compression/droop values. It can also affect if the sink/float stays consistent when the car is leaning. Your compression/droop values can be within the offset limits of the dampers (set in the model file). If they match the offset value exactly, and your weight and spring strength values are low, you might find it looks great at a sit still but looks horrible in the turns. Your car looks like it would be as heavy as the vanilla BIS MRAPs, but maybe you altered its weight? Also, could it be your adjustments aren't having the desired effect because the whole model is too high or too low on the horizon?

Sorry if any of this is a bit confusing, it's first thing in the morning for me. If you need clarification, I'll be happy to reiterate after some coffee.

Share this post


Link to post
Share on other sites

Car leaning to one side, need help seeing problem (w/pics)

 

[Admins: I didn't want to hijack a thread, but it seemed related to the topic. If this needs its own thread, then by all means please move it and delete the contents of these brackets.][Edit/Update: I seem to have fixed the problem of the wheels floating for my vehicle, but the leaning problem still persists. I'm not sure if it is relative to this topic anymore...??]


Hey everyone!
I need some extra eyes to see what I might be overlooking. Another vehicle I've made is leaning back-right, as pictured below. Depending on whatever value I give the spring strength, the wheels will either float or sink through the ground, but none are level to each other, which gives it the leaning and bad handling. (Green lines added to clarify distance from ground within shadow area). The closest to accurate wheel is wheel_2_2, which is still a little raised by about 3mm. Configs included below the pics. I've been over it again and again, but my eyes are getting tired. I feel like there might be a simple solution that I am overlooking because of fatigue.
vamp_lean_va_by_rooster3d-dc4jyfk.jpg
vamp_geom_by_rooster3d-dc4jyfv.jpg

vamp_mem_by_rooster3d-dc4jyfb.jpg

 

portion of model.cfg:

Spoiler


			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.5;
				offset1=0.8;
				animPeriod=0;
				initPhase=0;
			};
			class wheel_2_1_Damper: Wheel_1_1_Damper
			{
				selection="wheel_2_1_damper_land";
				axis="wheel_2_1_damper_land_axis";
			};
			class wheel_1_2_Damper: Wheel_1_1_Damper
			{
				selection="wheel_1_2_damper_land";
				axis="wheel_1_2_damper_land_axis";
			};
			class Wheel_2_2_Damper: Wheel_1_1_Damper
			{
				selection="wheel_2_2_damper_land";
				axis="wheel_2_2_damper_land_axis";
			};

 

 

config.cpp:

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 E:/Program Files (x86)/Steam/SteamApps/common/Arma 3/Addons/soft_f/a3/soft_f/MRAP_02/config.bin{
class DefaultEventhandlers;
class CfgPatches
{
	class GIJoeVAMP
	{
		units[] = {"vamp1"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {"A3_Soft_F"};
	};
};
class CfgFactionClasses
{
	class GIJOE
	{
		displayName = "GI*JOE";
		author = "Scot Gilmore";
		icon = "vamp\data\ui\faction_gijoe_co.paa";
		priority = 2;
		side = 1; 
	};
};
class CfgVehicleClasses
{
	class GIJoe_Ground
	{
		displayName = "GI*JOE Ground";
	};
};
 
class CfgMovesBasic
{
	class Default;
	class DefaultDie;
	class ManActions
	{
		
		vamp_driver = "vamp_driver";
		vamp_cargo = "vamp_cargo";
	};
};
class CfgMovesMaleSdr: CfgMovesBasic
{
	class States
	{
		class Crew;
		class vamp_driver: Crew
		{
			file = "vamp\Anims\vamp_driver.rtm";
			InterpolateTo[] = {"Unconscious",0.1};
		}; 
		 class vamp_cargo: Crew
		{
			file = "vamp\Anims\vamp_cargo.rtm";
			actions = "CargoAction";
			leaning = "crewShake";
			InterpolateTo[] = {"Unconscious",0.1};
		}; 
		
	};
};


class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;
class RCWSOptics;
class CfgVehicles
{
	class LandVehicle;
	class Car: LandVehicle
	{
		class NewTurret;
		class HitPoints;
	};
	class Car_F: Car
	{
		class AnimationSources;
		class Turrets
		{
			class MainTurret: NewTurret{};
		};
		class HitPoints
		{
			class HitLFWheel;
			class HitLF2Wheel;
			class HitRFWheel;
			class HitRF2Wheel;
			class HitGlass1;
			class HitGlass2;
			class HitGlass3;
			class HitGlass4;
			class HitGlass5;
		};
	};
	class vamp_01_base_F: Car_F
	{
		mapSize = 8.5;
		author = "Scot Gilmore";
		_generalMacro = "vamp_01_base_F";
		displayName = "VAMP";
		class Library
		{
			libTextDesc = "Vehicle, Assault/Multi-Purpose";
		};
		model 	= "vamp\vamp1";
		picture	= "vamp\Data\UI\icon_vamp_co.paa"; 
		Icon	= "vamp\Data\UI\map_vamp_co.paa"; 
		transportMaxBackpacks = 2;
		vehicleClass = "Car";
		transportSoldier = 1;
		hideWeaponsDriver = 1;
		hideWeaponsCargo = 1;
		maxFordingDepth = 0.5;
		waterResistance = 1;
		crewVulnerable = 1;
		crewCrashProtection = 0.15;
		crewExplosionProtection = 0.4999;
		slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"};
		armor = 50;
		armorStructural = 6;
		cost = 500000;
		threat[] = {0.8,0.6,0.3};
		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 Exhausts
		{
			class Exhaust1
			{
				position = "exhaust1_pos";
				direction = "exhaust1_dir";
				effect = "ExhaustEffectHTruck";
			};
			class Exhaust2
			{
				position = "exhaust2_pos";
				direction = "exhaust2_dir";
				effect = "ExhaustEffectHTruck";
			};
		};
		class Damage
		{
			tex[] = {};
			mat[] = {"A3\Data_F\Glass_veh.rvmat","A3\Data_F\Glass_veh_armored_damage.rvmat","A3\Data_F\Glass_veh_armored_damage.rvmat","A3\Data_F\Glass_veh_int.rvmat","A3\Data_F\Glass_veh_armored_damage.rvmat","A3\Data_F\Glass_veh_armored_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_01.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_01_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_01_destruct.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_02.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_02_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_ext_02_destruct.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base_destruct.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board_destruct.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base_VP.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_base_destruct.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board_VP.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board_damage.rvmat","A3\Soft_F\MRAP_02\Data\MRAP_02_int_board_destruct.rvmat"};
		};
		hiddenSelections[] = {"Camo1"};
		class AnimationSources: AnimationSources
		{
			class Door_LF
			{
				source = "door";
				animPeriod = 0.8;
			};
			class Door_RF
			{
				source = "door";
				animPeriod = 0.8;
			};
			class Door_rear
			{
				source = "door";
				animPeriod = 0.8;
			};
			class HitGlass6
			{
				source = "Hit";
				hitpoint = "HitGlass6";
				raw = 1;
			};
			class HitGlass7: HitGlass6
			{
				hitpoint = "HitGlass7";
			};
			class HitGlass8: HitGlass6
			{
				hitpoint = "HitGlass8";
			};
			class HitGlass9: HitGlass6
			{
				hitpoint = "HitGlass9";
			};
		};
		class HitPoints: HitPoints
		{
			class HitLFWheel: HitLFWheel
			{
				armor = 1;
				explosionShielding = 4;
				radius = 0.33;
			};
			class HitLF2Wheel: HitLF2Wheel
			{
				armor = 1;
				explosionShielding = 4;
				radius = 0.33;
			};
			class HitRFWheel: HitRFWheel
			{
				armor = 1;
				explosionShielding = 4;
				radius = 0.33;
			};
			class HitRF2Wheel: HitRF2Wheel
			{
				armor = 1;
				explosionShielding = 4;
				radius = 0.33;
			};
			class HitReserveWheel
			{
				armor = 1;
				material = -1;
				name = "wheel_reserve_hit";
				visual = "";
				passThrough = 0.3;
				explosionShielding = 0.8;
			};
			class HitFuel
			{
				armor = 1.0;
				material = -1;
				name = "palivo";
				visual = "";
				passThrough = 1.0;
				minimalHit = 0.2;
				explosionShielding = 0.1;
				radius = 0.25;
			};
			class HitEngine
			{
				armor = 1.0;
				material = -1;
				name = "motor";
				visual = "";
				passThrough = 0.2;
				minimalHit = 0.2;
				explosionShielding = 0.4;
				radius = 0.45;
			};
			class HitBody
			{
				armor = 8.0;
				material = -1;
				name = "karoserie";
				visual = "zbytek";
				passThrough = 1.0;
				minimalHit = 0.01;
				explosionShielding = 0.6;
				radius = 0.45;
			};
			class HitGlass1: HitGlass1
			{
				armor = 3;
				explosionShielding = 3;
				radius = 0.25;
			};
			class HitGlass2: HitGlass2
			{
				armor = 3;
				explosionShielding = 3;
				radius = 0.25;
			};
			class HitGlass3: HitGlass3
			{
				armor = 3;
				explosionShielding = 3;
				radius = 0.25;
			};
			class HitGlass4: HitGlass4
			{
				armor = 3;
				explosionShielding = 3;
				radius = 0.25;
			};
			class HitGlass5: HitGlass5
			{
				armor = 3;
				explosionShielding = 3;
				radius = 0.25;
			};
			class HitGlass6: HitGlass5
			{
				name = "glass6";
				visual = "glass6";
			};
			class HitGlass7: HitGlass5
			{
				name = "glass7";
				visual = "glass7";
			};
			class HitGlass8: HitGlass5
			{
				name = "glass8";
				visual = "glass8";
			};
			class HitGlass9: HitGlass5
			{
				name = "glass9";
				visual = "glass9";
			};
			class HitGlass10: HitGlass5
			{
				name = "glass10";
				visual = "glass10";
			};
			class HitGlass11: HitGlass5
			{
				name = "glass11";
				visual = "glass11";
			};
		};
		class UserActions
		{
			class DoorLF_Open
			{
				userActionID = 50;
				displayName = "$STR_A3_CfgVehicles_MRAP_02_base_F_UserActions_DoorLF_Open0";
				displayNameDefault = "<img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />";
				textToolTip = "$STR_DN_OUT_O_DOOR";
				priority = 0.1;
				radius = 2.5;
				radiusView = 0.2;
				showIn3D = 17;
				available = 0;
				position = "door1_axis";
				showWindow = 1;
				onlyForPlayer = 1;
				shortcut = "";
				condition = "((this doorPhase 'Door_LF')  ==  0) && (alive this) && this != vehicle player && false";
				statement = "this animateDoor ['Door_LF', 1]";
			};
			class DoorLF_Close: DoorLF_Open
			{
				userActionID = 51;
				displayName = "$STR_A3_CfgVehicles_MRAP_02_base_F_UserActions_DoorLF_Close0";
				displayNameDefault = "<img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />";
				textToolTip = "$STR_DN_OUT_C_DOOR";
				condition = "((this doorPhase 'Door_LF') > 0) && (alive this) && false";
				statement = "this animateDoor ['Door_LF', 0]";
			};
			class DoorRF_Open: DoorLF_Open
			{
				userActionID = 52;
				displayName = "$STR_A3_CfgVehicles_MRAP_02_base_F_UserActions_DoorRF_Open0";
				position = "door3_axis";
				condition = "((this doorPhase 'Door_RF')  ==  0) && (alive this) && this != vehicle player && false";
				statement = "this animateDoor ['Door_RF', 1]";
			};
			class DoorRF_Close: DoorRF_Open
			{
				userActionID = 53;
				displayName = "$STR_A3_CfgVehicles_MRAP_02_base_F_UserActions_DoorRF_Close0";
				displayNameDefault = "<img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />";
				textToolTip = "$STR_DN_OUT_C_DOOR";
				condition = "((this doorPhase 'Door_RF') > 0) && (alive this) && false";
				statement = "this animateDoor ['Door_RF', 0]";
			};
		};
		wheelDamageThreshold = 0.7;
		wheelDestroyThreshold = 0.99;
		wheelDamageRadiusCoef = 0.95;
		wheelDestroyRadiusCoef = 0.45;
		driverAction = "driver_mantis";
		cargoAction[] = {"passenger_MRAP_03exgunner","passenger_generic01_foldhands","passenger_mantisrear","passenger_mantisrear"};
		getInAction = "GetInLow";
		getOutAction = "GetOutLow";
		cargoGetInAction[] = {"GetInLow"};
		cargoGetOutAction[] = {"GetOutLow"};
		commanderCanSee = 31;
		driverDoor = "";
		cargoDoors[] = {};
		terrainCoef = 1;
		turnCoef = 2.2;
		precision = 15;
		smokeLauncherGrenadeCount = 8;
		smokeLauncherVelocity = 14;
		smokeLauncherOnTurret = 0;
		smokeLauncherAngle = 150;
		weapons[] = {"TruckHorn"};
		//magazines[] = {"SmokeLauncherMag"};
		
		
		#include "sounds.hpp" //separate file for better work flow
		
		class RenderTargets
		{
			class Driver_display
			{
				renderTarget = "rendertarget1";
				class CameraView1
				{
					pointPosition = "PIP1_pos";
					pointDirection = "PIP1_dir";
					renderVisionMode = 4;
					renderQuality = 2;
					fov = 0.7;
				};
			};
		};
		thrustDelay = 2;
		brakeIdleSpeed = 1.78;
		maxSpeed = 225;
		fuelCapacity = 90;
		wheelCircumference = 3.1;
		antiRollbarForceCoef = 3.0;
		antiRollbarForceLimit = 5;
		antiRollbarSpeedMin = 10;
		antiRollbarSpeedMax = 200;
		idleRpm = 800;
		redRpm = 6800;
		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.5;
		differentialType = "all_limited";
		frontRearSplit = 0.4;
		frontBias = 1.3;
		rearBias = 1.3;
		centreBias = 1.6;
		clutchStrength = 50.0;
		enginePower = 276;
		maxOmega = 471;
		peakTorque = 1546;
		dampingRateFullThrottle = 0.08;
		dampingRateZeroThrottleClutchEngaged = 2.0;
		dampingRateZeroThrottleClutchDisengaged = 0.35;
		torqueCurve[] = {{0.0,0.3},{0.178,0.5},{0.25,0.85},{0.4,0.95},{0.5,1.0},{0.625,0.95},{0.75,0.7},{1.0,0.5}};
		changeGearMinEffectivity[] = {0.95,0.15,0.95,0.95,0.95,0.95,0.95,0.98};
		switchTime = 0.3;
		latency = 2.0;
		class Wheels
		{
			class LF
			{
				boneName = "wheel_1_1_damper";
				side = "left";
				steering = 1;
				center = "wheel_1_1_axis";
				boundary = "wheel_1_1_bound";
				width = "0.2";
				mass = 30;
				MOI = 8;
				dampingRate = 0.3;
				dampingRateDamaged = 5;
				dampingRateInAir = 0.8;
				maxBrakeTorque = 2000;
				maxHandBrakeTorque = 0;
				suspTravelDirection[] = {0,-1,0};
				suspForceAppPointOffset = "wheel_1_1_axis";
				tireForceAppPointOffset = "wheel_1_1_axis";
				maxCompression = 0.2;
				mMaxDroop = 0.1;
				sprungMass = 566; //163;
				springStrength = 14800; //4075
				springDamperRate = 661; //651;
				longitudinalStiffnessPerUnitGravity = 100000;
				latStiffX = 40; //25; //2.5;
				latStiffY = 18; //180.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;
				sprungMass = 560; //163;
				springStrength = 14800; //4075
				springDamperRate = 651;
			};
			class RF: LF
			{
				boneName = "wheel_2_1_damper";
				side = "right";
				center = "wheel_2_1_axis";
				boundary = "wheel_2_1_bound";
				suspForceAppPointOffset = "wheel_2_1_axis";
				tireForceAppPointOffset = "wheel_2_1_axis";
			};
			class RR: LR
			{
				boneName = "wheel_2_2_damper";
				side = "right";
				center = "wheel_2_2_axis";
				boundary = "wheel_2_2_bound";
				suspForceAppPointOffset = "wheel_2_2_axis";
				tireForceAppPointOffset = "wheel_2_2_axis";
			};
		};
		class TransportMagazines
		{
			class _xx_30Rnd_65x39_caseless_green
			{
				magazine = "30Rnd_65x39_caseless_green";
				count = 16;
			};
			class _xx_150Rnd_762x54_Box
			{
				magazine = "150Rnd_762x54_Box";
				count = 4;
			};
			class _xx_HandGrenade
			{
				magazine = "HandGrenade";
				count = 10;
			};
			class _xx_SmokeShell
			{
				magazine = "SmokeShell";
				count = 4;
			};
			class _xx_SmokeShellRed
			{
				magazine = "SmokeShellRed";
				count = 4;
			};
			class _xx_SmokeShellYellow
			{
				magazine = "SmokeShellYellow";
				count = 4;
			};
			class _xx_SmokeShellOrange
			{
				magazine = "SmokeShellOrange";
				count = 4;
			};
			class _xx_1Rnd_HE_Grenade_shell
			{
				magazine = "1Rnd_HE_Grenade_shell";
				count = 10;
			};
			class _xx_1Rnd_Smoke_Grenade_shell
			{
				magazine = "1Rnd_Smoke_Grenade_shell";
				count = 4;
			};
			class _xx_1Rnd_SmokeYellow_Grenade_shell
			{
				magazine = "1Rnd_SmokeYellow_Grenade_shell";
				count = 4;
			};
			class _xx_1Rnd_SmokeOrange_Grenade_shell
			{
				magazine = "1Rnd_SmokeOrange_Grenade_shell";
				count = 4;
			};
			class _xx_1Rnd_SmokeRed_Grenade_shell
			{
				magazine = "1Rnd_SmokeRed_Grenade_shell";
				count = 4;
			};
			class _xx_16Rnd_9x21_Mag
			{
				magazine = "16Rnd_9x21_Mag";
				count = 12;
			};
			class _xx_RPG32_F
			{
				magazine = "RPG32_F";
				count = 2;
			};
		};
		class TransportItems
		{
			class _xx_FirstAidKit
			{
				name = "FirstAidKit";
				count = 10;
			};
		};
		/*class TransportWeapons
		{
			class _xx_arifle_Katiba_F
			{
				weapon = "arifle_Katiba_F";
				count = 2;
			};
		};*/
	};
	class vamp1: vamp_01_base_F
	{
		author = "Scot Gilmore";
		_generalMacro = "vamp1";
		scope = 2;
		crew = "awes_cargo";
		typicalCargo[] = {"awes_cargo"};
		side = 1;
		faction = "GIJOE";
		displayName = "** VAMP **";
		vehicleClass = "GIJoe_Ground";
		accuracy = 1.25;
		hiddenSelectionsTextures[] = {"vamp\data\vamp_ext_co.paa"};
		transportSoldier = 1;
		cost = 600000;
		threat[] = {1,0.4,0.6};
		class AnimationSources: AnimationSources
		{
			class muzzle_rot
			{
				source = "ammorandom";
				weapon = "HMG_127";
			};
			class muzzle_hide
			{
				source = "reload";
				weapon = "HMG_127";
			};
		};
		cargoDoors[] = {};
		class Turrets: Turrets
		{
			class MainTurret: MainTurret
			{
				body = "mainTurret";
				gun = "mainGun";
				gunBeg = "muzzle";
				gunEnd = "chamber";
				weapons[] = {"HMG_127"};
				magazines[] = {"200Rnd_127x99_mag_Tracer_Green","200Rnd_127x99_mag_Tracer_Green"};
				soundServo[] = {"A3\sounds_f\dummysound",0.01,1.0,10};
				gunnerAction = "gunner_MRAP_01";
				viewGunnerInExternal = 1;
				hideWeaponsGunner = 1;
				castGunnerShadow = 1;
				stabilizedInAxes = 3;
				memoryPointGunnerOptics = "PIP0_dir";
				gunnerOpticsModel = "\A3\weapons_f\reticle\Optics_Gunner_02_F";
				discreteDistance[] = {100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500};
				discreteDistanceInitIndex = 2;
				turretInfoType = "RscOptics_crows";
				usePip = 1;
				minElev = -8;
				maxElev = 48;
				LODTurnedIn = 1000;
				class ViewOptics: RCWSOptics{};
				class ViewGunner: ViewOptics
				{
					initAngleX = -45;
					minAngleX = -55;
					maxAngleX = -20;
					initFov = 0.9;
					minFov = 0.42;
					maxFov = 0.9;
					visionMode[] = {};
				};
				class HitPoints: HitPoints
				{
					class HitTurret
					{
						armor = 1.2;
						material = -1;
						name = "vez";
						visual = "vez";
						passThrough = 0;
						minimalHit = 0.1;
						explosionShielding = 0.4;
						radius = 0.6;
					};
					class HitGun
					{
						armor = 0.6;
						material = -1;
						name = "zbran";
						visual = "zbran";
						passThrough = 0;
						minimalHit = 0.1;
						explosionShielding = 0.2;
						radius = 0.6;
					};
				};
				gunnerDoor = "";
			};
		};
		class RenderTargets
		{
			class Gunner_display
			{
				renderTarget = "rendertarget2";
				class CameraView1
				{
					pointPosition = "PIP0_pos";
					pointDirection = "PIP0_dir";
					renderVisionMode = 2;
					renderQuality = 2;
					fov = 0.7;
				};
			};
			class Driver_display
			{
				renderTarget = "rendertarget1";
				class CameraView1
				{
					pointPosition = "PIP1_pos";
					pointDirection = "PIP1_dir";
					renderVisionMode = 4;
					renderQuality = 2;
					fov = 0.7;
				};
			};
		};
	};
};
//};

 


Anyone trying to figure it out, LMK if I need to post anything else for solving this.

Share this post


Link to post
Share on other sites

It can be due not centered mass of vehicle components in Geometry / Phys LOD.

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, Yano said:

It can be due not centered mass of vehicle components in Geometry / Phys LOD.

This occurred to me as well. I have placed 4 mass distribution cubes in the geometry LOD to better govern the mass. The sides are 400kg each, and same distance from the center of the vehicle/world axis. The front cube is 750kg while the rear is 700kg; both are centered (L/R). The rest of the geometry weighs 5kg. It's a small amount to make such a difference, and the geometry is L/R symmetrical anyway. I think I can rule out the center of mass, unless there is some unseen heavy point floating somewhere in the sky...

Share this post


Link to post
Share on other sites

Here's a list of things that didn't work so far:

- I had the front wheel steering axes sharing vertices with the front damper axes. I created new axes for the steering, but there is still a lean.
- I have tried using two different methods for the damper motion. 1. Using 4 independent axes, one for each wheel/damper. 2. Using one center axis, Basic Damper Destruct Axis, for governing all wheel dampers. Each method yielded slightly different unfavorable results.
- I tried relocating all desirable LOD contents, geometry, etc. into a new file by copy-paste. I was hoping this would leave behind any unseen points that might be causing problems. If it did, there was no benefit.
- Specifying in the config spring strength on all wheels, rather than inheriting from wheel_1_1, and increasing the value (the same for all 4), has fixed the floating problem, but there is still a lean to the right side of the vehicle.
- I wasn't completely sure if having a bunch of items in the "transport magazines" section would weigh it down adversely. There were a lot of magazines listed (I used the Ifrit/MRAP_02 config for a big chunk of this vehicle), so I deleted all but one item. No change.
- imported new geom and geom phys LODs. no change.

- tried the geom LODs on another otherwise working vehicle. There was no lean in those vehicles, so I ruled out the geom/mass being the culprit.
- totally replaced the configs with configs from other vehicles and left the suspension parameters alone. Aside from different suspension performance, the lean was still happening, so I reverted to previous configs.


Now that the wheels are all on the ground, but the car is still leaning, it does seem like there is an imbalance in the mass, as @Yano suggested. I combed over the geometry a few times, but still cannot identify the problem.

EDIT: FIXED! One of two things did the trick:
1. wheel parts in the shadow LOD did not correspond with the ones in LOD1. In LOD1, I have wheel_#_#_hide and wheel_#_#_unhide, but in the shadow LOD I just had wheel_#_#. It doesn't seem like it would affect things, but to be safe, and consistent, I made the shadow parts hide and unhide for when the tire gets blown.
2. I deleted all the related "wheel_*" memory points and recreated them from scratch (e.g.: axis, bound, land_damper_axis, steering, etc.). I'm not sure why the old ones were not working, but the new ones are not causing a lean. Whatever I deleted, I recreated; I didn't add or omit any points.

All in all, it just goes to show that when you think you have it mostly figured out, the simplest, least obvious thing can cause problems.

Edited by scotg
Problem fixed; possible soultion given.
  • Like 1

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

×