scotg 204 Posted September 27, 2017 One of my cars is faceplanting over hills and even the smallest of bumps. The effect is so bad it ends up on its back, like it's trying to tumble forward in-air. Being a buggy, part of its testing involves jumping from berms and off of cliffs to kind of gauge its balance, which is how I discovered this. It also hugs smaller bumps in the front while the rear wheels are really bouncy, even though all wheels inherit the front-left's suspension values. The buggy was working fine until I did a series of minor tweaks for suspension adjustment. Since discovering the problem, I have worked backwards trying to restore it to its working state, only to keep seeing this problem. It's as if there's a tank-sized mass sitting on its front bumper. I have already looked into the model's geom LOD. Unless I need another look, the mass distribution and CoG is on point. So here's what I'm wondering: Are there any config settings that will affect this so dramatically, despite the geometry positioning? Here's a list of some things that seem to have no affect on the nose-heavy action: - terrainCoef class Wheels: - mass - MOI - dampingRate - sprungMass - springStrength - springDamperRate - latStiffX - latStiffY Pertinent Config Section (anything missing?): Spoiler class aweStriker_01_base_F: Car_F { mapSize = 6.18; author = "Scot Gilmore"; _generalMacro = "aweStriker_01_base_F"; displayName = "AWE Striker"; class Library { libTextDesc = "All Weather Environment Striker"; }; model = "aweStriker\aweStriker1"; picture = "aweStriker\Data\UI\icon_aweStriker_co.paa"; Icon = "aweStriker\Data\UI\map_aweStriker_co.paa"; cost = 50000; slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"}; unitInfoType = "RscUnitInfoNoWeapon"; class Turrets{}; class HitPoints: HitPoints { class HitLFWheel: HitLFWheel { armor = 0.15; }; class HitLF2Wheel: HitLF2Wheel { armor = 0.15; }; class HitRFWheel: HitRFWheel { armor = 0.15; }; class HitRF2Wheel: HitRF2Wheel { armor = 0.15; }; class HitFuel { armor = 0.14; material = -1; name = "palivo"; visual = ""; passThrough = 1; }; class HitEngine { armor = 0.5; material = -1; name = "engine"; visual = ""; passThrough = 1; }; class HitGlass1: HitGlass1 { armor = 1; }; class HitGlass2: HitGlass2 { armor = 1; }; class HitGlass3: HitGlass3 { armor = 1; }; class HitGlass4: HitGlass4 { armor = 1; }; class HitGlass5: HitGlass5 { armor = 1; }; class HitGlass6: HitGlass6 { armor = 0.5; }; }; transportSoldier = 1; class TransportItems { class _xx_FirstAidKit { name = "FirstAidKit"; count = 4; }; }; driverAction = "awes_driver"; cargoAction[] = {"awes_cargo"}; armor = 5; fireResistance = 5; terrainCoef = 1; turnCoef = 2.8; //3.1; precision = 20; brakeDistance = 5; acceleration = 12; class AnimationSources: AnimationSources { class Hide { source = "user"; animPeriod = 1; initPhase = 0; }; }; #include "sounds.hpp" //separate file for better work flow thrustDelay = 2.0; brakeIdleSpeed = 1.78; maxSpeed = 211; fuelCapacity = 45; wheelCircumference = 3.0; antiRollbarForceCoef = 2.0;//2 antiRollbarForceLimit = 5; antiRollbarSpeedMin = 10; antiRollbarSpeedMax = 200; idleRpm = 800; redRpm = 6400; class complexGearbox { GearboxRatios[] = {"R1",-6.575,"N",0,"D1",4.827,"D2",2.855,"D3",1.716,"D4",1.073,"D5",0.755,"D6",0.575}; TransmissionRatios[] = {"High",5.69}; gearBoxMode = "auto"; moveOffGear = 1; driveString = "D"; neutralString = "N"; reverseString = "R"; }; simulation = "carx"; dampersBumpCoef = 0.3; differentialType = "rear_limited"; frontRearSplit = 0.5; frontBias = 1.9; rearBias = 1.9; centreBias = 1.9; clutchStrength = 50.0; enginePower = 82; normalSpeedForwardCoef = 0.75; maxOmega = 437; peakTorque = 680; dampingRateFullThrottle = 0.1; dampingRateZeroThrottleClutchEngaged = 1.0; dampingRateZeroThrottleClutchDisengaged = 0.35; torqueCurve[] = {{0.0,0.0},{0.185,0.713},{0.35,1.0},{0.5,0.975},{0.75,0.755},{0.85,0.627},{1.0,0.415}}; changeGearMinEffectivity[] = {0.95,0.15,0.65,0.65,0.65,0.55,0.55,0.55}; switchTime = 0.21; latency = 0.25; class Wheels { class LF { boneName = "wheel_1_1_damper"; steering = 1; side = "left"; center = "wheel_1_1_axis"; boundary = "wheel_1_1_bound"; width = "0.2"; mass = 20; MOI = 78.625; dampingRate = 0.5; maxBrakeTorque = 4000; maxHandBrakeTorque = 0; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "wheel_1_1_axis"; tireForceAppPointOffset = "wheel_1_1_axis"; maxCompression = 0.1; mMaxDroop = 0.1; sprungMass = 150; springStrength = 45000; springDamperRate = 5240; longitudinalStiffnessPerUnitGravity = 100000; latStiffX = 2.5; latStiffY = 180.0; frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}}; }; class LR { boneName = "wheel_1_2_damper"; steering = 0; side = "left"; center = "wheel_1_2_axis"; boundary = "wheel_1_2_bound"; width = "0.2"; mass = 20; MOI = 78.625; dampingRate = 0.5; maxBrakeTorque = 4000; maxHandBrakeTorque = 0; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "wheel_1_2_axis"; tireForceAppPointOffset = "wheel_1_2_axis"; maxCompression = 0.2; mMaxDroop = 0.1; sprungMass = 150; springStrength = 45000; springDamperRate = 5240; longitudinalStiffnessPerUnitGravity = 100000; latStiffX = 2.5; latStiffY = 180.0; frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}}; }; 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 PlayerSteeringCoefficients /// steering sensitivity configuration { turnIncreaseConst = 0.3; // basic sensitivity value, higher value = faster steering turnIncreaseLinear = 1.0; // higher value means less sensitive steering in higher speed, more sensitive in lower speeds turnIncreaseTime = 1.0; // higher value means smoother steering around the center and more sensitive when the actual steering angle gets closer to the max. steering angle turnDecreaseConst = 5.0; // basic caster effect value, higher value = the faster the wheels align in the direction of travel turnDecreaseLinear = 3.0; // 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.7; // coefficient of the maximum turning angle @ 100km/h; limit goes linearly to the default max. turn. angle @ 0km/h }; }; It should be noted that this is a 650 kg RWD, Rear engine buggy. If there should be any imbalance, it should be back-heavy. Strangely, whenever I shift the Geom LOD weights toward the rear in OB and recompile, the result is the rear suspension is compressed all the way, and it still nose dives off of cliffs -- another reason I think there might be some config setting that defeats the weight distribution. PLEASE HELP?!?!?! Share this post Link to post Share on other sites
UK_Apollo 476 Posted September 28, 2017 Adjusting the physx to get it right does take time, as so many factors are interlinked, both in the config and the p3d. Anyone of them can severely mess things up. This might help for starters - change these values in all 4 wheels: sprungMass = 163; // 650kg / 4 --- all of the mass of the vehicle must be supported by the suspensionspringStrength = 4075; // start at 25 x sprungMassspringDamperRate = 1630; // 2 x sqrt(springStrength x sprungMass) You might want to look at lowering the MOI to somewhere between 10 and 40 (and probably in the lower end of that range). Check that your centre of mass in the Geometry LOD is above a line joining the top of the suspension movement (so simplistically, c of m above the tops of the wheels). It doesn't like being below it. Run the Arma development branch, and use the diagnostic exe, then you can toggle on PhysX debug to look in detail at the suspension and other engine parameters as it moves in game. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 6 hours ago, UK_Apollo said: Check that your centre of mass in the Geometry LOD is above a line joining the top of the suspension movement (so simplistically, c of m above the tops of the wheels). It doesn't like being below it. Is there any impact CoM position in relation to the world axis/origin (0,0,0)? I.E.: Should the CoM be there? Share this post Link to post Share on other sites
UK_Apollo 476 Posted September 28, 2017 2 hours ago, scotg said: Is there any impact CoM position in relation to the world axis/origin (0,0,0)? I.E.: Should the CoM be there? No. I usually build vehicles with the base of the wheels sitting on the [0,0] plane, but that's just preference. Use the LandContact LOD points (give them the damper named selection) and the wheel boundary memory points to sit the car flush on the ground. Make sure the CoM is centred (from side to side) and I recommend also centred from front to back. If you position the CoM off-centre (perhaps towards the rear, because you said it's rear engined), you may need to adjust the wheel sprung mass and spring strengths to keep it level. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 Just for eliminating all possibilities, I've re-centered the CoM to the F/B; it was already L/R centered. I've yet to check it out in Dev Branch mode. Are there any forewarnings for that, like will I be able to revert back? Share this post Link to post Share on other sites
UK_Apollo 476 Posted September 28, 2017 Yes, you can revert back. Last time I did it, it was something like a 9GB download to switch one way or the other, and of course dev branch gets updated almost daily. So if you have unlimited fast internet, it's no problem. Here's the info for the diagnostics .exe: https://community.bistudio.com/wiki/Arma_3_Diagnostics_Exe Relevant to you will be 'EPEVehicle' and 'EPEForce'. 1 Share this post Link to post Share on other sites
Redphoenix 1540 Posted September 28, 2017 Show a side view of your geometry LOD. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 4 hours ago, Redphoenix said: Show a side view of your geometry LOD. I've tried all sorts of weight distribution combinations. This is the current set up with each wheel as 20kg. The little decimeter cube in the back helps me move the weight around and try different distribution. I have tried using four cubes containing most of the weight (using the same principle of moving them around for balance shifting), while the main geometry weighed 5 kg total (as per the BIS examples). Side View Geom LOD Share this post Link to post Share on other sites
UK_Apollo 476 Posted September 28, 2017 You don't have any "Componentnn" named selections. Structure > Topology > Find Components Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 4 minutes ago, UK_Apollo said: You don't have any "Componentnn" named selections. Structure > Topology > Find Components LOL. True, but that's not the issue. I re-component convex hull whenever I reassign weights - habit. I just forgot to re-CCH for the picture. Share this post Link to post Share on other sites
Redphoenix 1540 Posted September 28, 2017 Can you maybe make a short video? 1 Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 ok. presumably of the vehicle in motion? Setting up a scenario now. EDIT: Here's the video:https://www.youtube.com/watch?v=btLa687XxRI Share this post Link to post Share on other sites
Redphoenix 1540 Posted September 29, 2017 I can take a deeper look into it, but I would need the source files to compile and test it locally. Shoot me a PM if you like. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 30, 2017 I think I might be on to something now... possibly. The game is not looking at the new config, or something. First, I tried renaming the vehicle in the displayName value. In the garage, it kept coming up as the old name. Next, I tried just deleting the PBO completely, but the name STILL appeared in the virtual garage. However, selecting the vehicle immediately puts me in "try it" mode, without a buggy, and without actually hitting the try it button. Whenever I have made a change to the model itself, there has been a notable difference in game. That, combined with the name still in the game when the PBO is gone, leads me to believe the compile process is probably working. BTW, when I was done with the garage, I pressed escape, then ctrl+F4 to quit. Usually it just quits, but this time it gave me the warning message about "ArmA 3 unexpectedly stopped." Something wrong with my game? Share this post Link to post Share on other sites
scotg 204 Posted September 30, 2017 Update Some of my config file updates are not being recognised by ARMA3, including the buggy. I copied all the buggy's files and components and created a "new" vehicle folder by simply changing every instance of "striker" to "shocker" inside and out. The new buggy was not visible in the virtual garage, but I could load it in the editor and test it in a mission. Although not even close to perfect, there was a noticeable improvement from the original buggy. These are the exact same build, except with different names. Next I tried to adjust the new buggy, but ran into the same problem as the old one - the update is not taking hold. I opened the PBO in eliteness and found it was indeed compiled anew. I then made a simple displayName change to another car, the LM002 to The BULL, and it was not recognised in game. I did tbe same to my Sky Hawk VTOL, renaming it Seahawk, and it took! So either the game doesn't like car mods, doesn't like MY car mods, or most likely all my cars have inherited some bad joujou. Or maybe it loves NFL :-D. At least I can identify the problem. Share this post Link to post Share on other sites
UK_Apollo 476 Posted September 30, 2017 It sounds like you have an old pbo being loaded from a location that you don't expect and they're conflicting. Launch Arma without loading your buggy pbo, go to your rpt file and look at the pbo list that is being loaded. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 30, 2017 Yup. It turned out I had saved a PBO to an old location, but it was accessed sooner in the hierarchy. Since then, the updated PBOs I've been trying to get working were being bypassed (and to think of all the missed results!), except for the model information. See, but that's the part that was throwing me off. This all sucks, because I had set aside some time to do more art work on my models. Researching and fixing this ate up most of that time, and aside from its two improved crew poses I made, I'm practically right where I stood before this mess. What really stings is how simple the problem was to fix once I discovered it. At least I can move forward now, and I got some good advice from you guys! Thanks for all the help UK_Apollo and RedPhoenix!! Share this post Link to post Share on other sites
scotg 204 Posted October 3, 2017 Good news! After finally getting to the bottom of the problem, and with thanks to UK_Apollo and RedPhoenix for their tips and support, the AWE Striker buggy is driving and performing even better than before. I've been recording it in motion hopping around the hills of Stratis, Altis, and Tanoa, and will hopefully have a video of it on YouTube soon. I've also sorted out the problem with the Crew poses, mostly. EDIT: Here's the video! 1 Share this post Link to post Share on other sites