Sign in to follow this  
Rapha

[Car Physics] Sharing work, ideas, formulas and car parameters

Recommended Posts

Hi again to everyone

I noticed we are now at least 3 on this forum, trying to create a proper car simulation. It seems everyones main goal is to create something fun (drifts...), based on realistic physics, but not too hard for the player. So closer to something like GRID than Forza.

I think i am right when i say this : we all want the kind of fun we can find in games like NFS. If a game like NFS or GRID (or even the Steam racing casual games) can only be achieved by using some cheats or specific player input tweaking, i suppose we all want to know what they are.

What i propose here is :[list=1]
[*]Share the fundamental basics every car simulation based on newton physics should have. eg : weight transfer, pacejka-like curves for getting output of SR/SA....
[*]Share one or two basics car models and parameters to be sure we are talking about the same thing.
[*]Share some reference values/behaviours in predetermined situations, so that everyone can compare their own values with some reference to know if things are going right or wrong.
[*]Share math/physics formula, tips & tricks, or cheats & shortcuts that would allow us to make the game more fun. Because we must not forget, it is all about fun in the end.
[/list]
I would try to maintain the first post as updated as possible as people bring their contributions. So if this thing is going well, it could be a very good starting point in the future for programmers wanting to create their own car simulation.

I'll start to fill the blanks, and i hope the car experts will bring their knowledge to be sure future readers won't be misleaded by the things listed here.

One of the goals here is to cover 2D and 3D games, as the car behaviour will be similar in both situations.

[size=5][b]Part 1 - What should i absolutly do to make this a fun game with drifts, skids and such things ?[/b][/size]

Let's make an exhaustive list of things needed to achieve a drifting behaviour on a racing car.[list=1]
[*]Get [b]basic newton physics[/b] right : forces, acceleration, torque, integration. You can use a physics engine for this, like box2d or PhysX.
[*]At first use a [b]1ms timestep[/b] to update the simulation at a decent rate and avoid bad approximations.
[*]Create [b]4 wheels and attach them[/b] to the body.
[*]Use wheel distance to CG to [b]calculate weight transfer lateraly and longitudinal[/b]. Combine those two.
[*]Use [b]real car suspension/springs/anti roll bars[/b], or the weight transfer will just be instantaneous and make the car highly unstable.
Subsidiary question : is it vital to have proper car suspensions ?
[*]Use some [b]"soft" player inputs, and try to limit steer angle[/b] at high speed to get good lateral forces, or the car might be totally uncontrolable. Or use realistic driving accessories.
[*]Find out [b]velocity for each wheel contact patch[/b], transformed in the wheel space. So if the wheel is heading 45° and the car going straight, the front wheels will have both X/Y velocities, as rear wheels will only have Y (if Y is front).
[*]Use the powered wheels velocity to [b]determine motor RPMs[/b]. Based on player throttle input, and engine torque curve, [b]generate a torque force for powered wheels[/b].
[*][b]Apply torque on wheel so it increase their angular velocity.[/b]
[*]Calculate wheel [b]slip angles[/b] and [b]slip ratios[/b].
[*]Use a plotted [b]pacejka curve[/b], or a real formula to find out the normalized force the tire must produce front/lat.
Subsidiary question : is it vital to have the original formula instead of a simple pre-plotted curve ?
Subsidiary question : is it vital for nice drifting to have combined lateral/front formula ?
Subsidiary question : is it vital for nice drifting to feed directly the real load to the formula ? If i multiply the normalized 1N value by the wheel Fz result is supposed identical right ?
[*][b]Create a vector for front/lat forces[/b], and [b]check this vector on friction circle/ellipse[/b]. Cut any part which is not inside the circle.
Subsidiary question : should ellipse max values be the same as pacejka normalized max values ?
[*]You can now [b]multiply the remaining vector by the wheel weight[/b] (Fz)
[*]For the [b]longitudinal component[/b] of the force, reintegrate it in the wheel (with the radius), so it [b]decrease their angular velocity[/b]. That part is what makes the wheel angular velocity adapt to the car speed.
[*]Apply [b]the resulting forces to the body[/b], at the attach point of the wheel, or directly the contact patch in 3D, and calculate resulting torque/acceleration on the body.
[*]When 4 wheels have generated torque/forces for the car body, [b]integrate those values in the physical[/b] engine to produce velocity and move the car.
[*][b]Apply damping forces (rolling friction, air drag)[/b]. It is not supposed to be vital to car behaviour, but it might help a little. It will mostly influence acceleration time and maximum speed.
[/list]


That should be all what is needed to get a car simulation right. At least theorically. I think i have forgotten nothing.

[size=5][b]Part 2 - The reference car(s)[/b][/size]

The goal of this part is to have reference values for a classic car, so we can compare our values and behaviours.

The classic car inspired from some Corvette C5 values and other frequent values seen here and there. Let's call it X-Car-1
[spoiler]
[CODE]
/** GENERAL BODY CONFIGURATION **/
// Length of the car (m)
body_length = 4.57;
// Width of the car (m)
body_width = 1.87;
// Mass of the car in Kgs
body_mass = 1500;
// Inertia of the car
// Rectangular box inertia formula is : (mass * (boxWidth² + boxLength²)) / 12 --- (height doesnt count)
body_inertia = 3000;


/** WHEEL ATTACH POINT AND STATIC WEIGHT DISTRIBUTION **/
// Vertical distance from front axle to gravity center horizontal line (if car is heading vertical)
geometry_frontAxleDistanceToCG = 1.60;
// Vertical distance from rear axle to gravity center horizontal line (if car is heading vertical)
geometry_rearAxleDistanceToCG = 1.60;
// Horizontal distance from any wheel attach point car vertical middle line
geometry_wheelDistanceToCarCenter = 0.80;
// Height of the CG (in meters)
geometry_heightOfCG = 0.30;

/** ENGINE SETUP **/
// Values of the power curve for each RPM
engine_torquePowerCurveValues = [ 400, 430, 448, 460, 480, 486, 480, 500, 550, 500];
// Values of the RPMs for the power curve
engine_torquePowerCurveRPMs = [1000, 2000, 2500, 3000, 4000, 4500, 5000, 5500, 5800, 6000];
// Used in dev to quickly enhance engine power by a flat multiplier
engine_torquePowerCurve_multiplier = 1;
// RPMs at wich the driver should shift up
engine_shiftUpRPMs = 5800;
// RPMs at wich the driver should shift down
engine_shiftDownRPMs = 3000;
// Some values used to slow down car engine when no throttle is applied
engine_brakeCurveValues = [ -40, -40, -50, -60, -70, -80, -100];
// The RPM values
engine_brakeCurveRPMs = [ 1000, 1050, 2000, 3000, 4000, 5000, 6000];
// Used in dev to quickly enhance engine brake curve effect by a flat multiplier
engine_brakeCurve_multiplier = 1;
// The gear ratios of the gearbox
engine_gearRatios = [-2.90, 2.66, 1.78, 1.30, 1.10, 0.96, 0.80];
// The differential ratio (between gearbox output and motorized axle input)
engine_differentialRatio = 3.42;
// Efficiency of power transmission
engine_transmissionEfficiency = 0.7;
// Ratio of power going to rear axle (1 means 100%)
engine_rearAxlePowerRatio = 1.0;
// Ratio of power going to front axle
engine_frontAxlePowerRatio = 0.0;


/** WHEELS SETUP **/
// Time in seconds to reach max steering angle
wheel_steerSpeed = 0.500;
// Maximum steer angle when the car is stopped/low speed (in radians !)
wheel_steerAngleMax = Math.PI / 4;
// If setted to yes, the driver will not be allowed to steer to much at higher speed
wheel_optimizeSteerAngle = true;
// Adjusts autosteer level, from 0 to 1 : 1 will be perfect knowledge of actual cruise speed
wheel_optimizeSteerAngleValue = 1.0;
// Bonus : autosteer formula | max_steer = Math.min(maxSteerAngle, Math.PI/2 - Math.acos(peakLateralSlipAngleInDegrees / absFrontSpeed))
// Inertia of the wheel
// TODO : it should depend of the actual gear but i have no formula for it
wheel_inertia = 25;
// The radius of the wheel (in meters)
wheel_radius = 0.33;

/** FRONT FRICTION FORCES SETUP */
// The front pacejka curve values for a load of 1N (for slip ratio output)
friction_front_longitudinalPacejkaCurve_valuesFor1Nload = [0, 1.00, 1.20, 1.30, 1.20, 0.90, 0.70];
// The front pacejka curve slip ratios corresponding to the above force outputs
friction_front_longitudinalPacejkaCurve_slipRatioValues = [0, 0.01, 0.03, 0.05, 0.10, 0.20, 1.00];
// Used in dev mode to multiply pacejka output for testing purposes
friction_front_longitudinalPacejkaCurve_valuesMultiplier = 1;
// The front pacejka curve values for a load of 1N (for slip angle output)
friction_front_lateralPacejkaCurve_valuesFor1Nload = [0, 0.10, 0.20, 0.30, 0.41, 0.49, 0.58, 0.66, 0.73, 0.80, 0.87, 0.92, 0.97, 1.01, 1.05, 1.08, 1.11, 1.13, 1.14, 1.15, 1.16, 1.15, 1.10, 1.03, 0.94, 0.79, 0.66, 0.55, 0.50, 0.46, 0.39];
// The front pacejka curve slip angles corresponding to the above force outputs
friction_front_lateralPacejkaCurve_slipAngleValues = [0, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 25.00, 30.00, 35.00, 40.00, 50.00, 60.00, 70.00, 75.00, 80.00, 90.00];
// The slip angle for which you get maximum force
friction_front_lateralPacejkaCurve_slipAngle_peakGrip = 20;
// Used in dev mode to multiply pacejka output for testing purposes
friction_front_lateralPacejkaCurve_valuesMultiplier = 1;
// The front traction ellipse longitudinal friction limit
friction_front_longitudinalLimit = 1.30;
// The front traction ellipse lateral friction limit
friction_front_lateralLimit = 1.30;


/** REAR FRICTION FORCES SETUP */
// The rear pacejka curve values for a load of 1N (for slip ratio output)
friction_rear_longitudinalPacejkaCurve_valuesFor1Nload = [0, 1.00, 1.20, 1.30, 1.20, 0.90, 0.70];
// The rear pacejka curve slip ratios corresponding to the above force outputs
friction_rear_longitudinalPacejkaCurve_slipRatioValues = [0, 0.01, 0.03, 0.05, 0.10, 0.20, 1.00];
// Used in dev mode to multiply pacejka output for testing purposes
friction_rear_longitudinalPacejkaCurve_valuesMultiplier = 1;
// The rear pacejka curve values for a load of 1N (for slip angle output)
friction_rear_lateralPacejkaCurve_valuesFor1Nload = [0, 0.10, 0.20, 0.30, 0.41, 0.49, 0.58, 0.66, 0.73, 0.80, 0.87, 0.92, 0.97, 1.01, 1.05, 1.08, 1.11, 1.13, 1.14, 1.15, 1.16, 1.15, 1.10, 1.03, 0.94, 0.79, 0.66, 0.55, 0.50, 0.46, 0.39];
// The rear pacejka curve slip angles corresponding to the above force outputs
friction_rear_lateralPacejkaCurve_slipAngleValues = [0, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 25.00, 30.00, 35.00, 40.00, 50.00, 60.00, 70.00, 75.00, 80.00, 90.00];
// The slip angle for which you get maximum force
friction_rear_lateralPacejkaCurve_slipAngle_peakGrip = 20;
// Used in dev mode to multiply pacejka output for testing purposes
friction_rear_lateralPacejkaCurve_valuesMultiplier = 1;
// The rear traction ellipse longitudinal friction limit
friction_rear_longitudinalLimit = 1.30;
// The rear traction ellipse lateral friction limit
friction_rear_lateralLimit = 1.30;

/** DRAG FRICTION FORCES SETUP **/
// The air drag value, wich is multiplied by speed²
// Bonus : air drag formula
// AIR_DRAG_FORCE_CONSTANT = 0.5 * Cd * A * rho
// Cd = coefficient of friction > depends on the shape of the car and determined via wind tunnel tests (Approximate value for a Corvette: 0.30)
// A is frontal area of car > approx. 2.2 m2
// rho (Greek symbol )= density of air > 1.29 kg/m3
// AIR_DRAG_FORCE_CONSTANT = 0.5 * 0.30 * 2.2 * 1.29 = 0.4257
friction_air_drag = 0.4257;
// The rolling friction value, wich is multiplied by speed (applied blindly in X, Y)
friction_roll_drag = 15;


/** CAR SUSPENSION SETUP **/
// TODO : implement real car suspensions
// Flat front/rear weight transfer division
suspension_frontRearWeightDisplacement_divider = 2;
// Flat lateral weight transfer division
suspension_leftRightWeightDisplacement_divider = 4;
// Time for a new load value to be fully applied in milliseconds
suspension_timeToReachForce = 1500;
[/CODE]
[/spoiler]

To be honest i must say this reference values don't make a nice car. I'll post a general handling video soon.

Here are some parameters taken from [url="http://www.edy.es/dev/vehicle-physics/live-demo/"]Edys Car Vehicle Physics[/url] for the Red Pickup you can try in the demo. Some of the values can be monitored with B and the SHIFT+B in the demo. I post it here to give some elements to discuss about as a part of those values are not present above, and for some i just dont know what they mean. Any idea / insight would be appreciated.
[spoiler]
[img]http://imageshack.us/a/img842/1227/edysphyicsparams.jpg[/img]
[/spoiler]

[b][size=5]Part 3 - Reference handling and values[/size][/b]

The goal of this part is to put the car in a typical situation with controlled environment, and to look at what happens. Game may be written in Java, .NET, Unity or whatever, if you have taken control of the physics, and if you have the right car parameters, the values should look like these.

[b]X-Car-1_T01[/b] : apply 100% throttle for 10.00 seconds
Coming soon...

[b]X-Car-1_T02[/b] : launching directly the car with a front velocity of 50 meters/s
Coming soon...

[b]X-Car-1_T03[/b] : launching directly the car with a side velocity of 50 meters/s
Coming soon...

[b]X-Car-1_T04[/b] : launching directly the car with an angular velocity of 10 radians/s
Coming soon...

[b]X-Car-1_T05[/b] : launching directly the car with a combined front/lateral velocity : 50m/s in each direction
Coming soon...

[b]X-Car-1_T06[/b] : launching directly the car with a combined front/lateral velocity : 50m/s in each direction and a 10 radians/s angular velocity
Coming soon...

[b]X-Car-1_T07[/b] : apply 100% throttle for 10.00 seconds, then without releasing throttle, press the right key for the next 10.00 seconds (right + full throttle)
Coming soon...

[b]X-Car-1_T08[/b] : apply 100% throttle for 10.00 seconds, then release throttle, and press the right key for the next 10.00 seconds (right + free roll)
Coming soon...

[b]X-Car-1_T09[/b] : apply 100% throttle for 10.00 seconds, then apply brake, and press the right key for the next 10.00 seconds (right + brake)
Coming soon...

[b]X-Car-1_T10[/b] : a controled drift situation (still have to find a reference test)
Coming soon...


[b][size=5]Part 4 - Tips & tricks[/size][/b]

This part is still R&D, and i am more open to debate and wanting to collect ideas and tests than trying to explain to do this or not. I do not have the solution for doing most of those things anyway.

List of "legit" tricks :[list=1]
[*]Limit maximum steer angle according to speed & max grip peak SA
[*]Same for throttle/brakes with peak slip ratio output
[*]Decrease gently (or not) steer angle after input release
[*]Be aware (you, programmer) of when a drift situation occurs and change car control inputs to help player have more fun
[*]Instead of modelizing a complex combined front/lat grip formula, just determine how much percent of lateral grip you lose in function of the slip ratio
[/list]

Cheap tricks or cheats :[list=1]
[*]If player apply throttle, just directly add front Y velocity to car
[*]Disable real front/rear weight calculations. Just decide of a prefixed weight change on acceleration/braking situations
[*]Gently decrease forces near/after traction circle max value, instead of just cutting it
[*]Rotate directly car velocity vector by a very small percent of the front wheels slip angle
[*]Use a linear slipAngleInRadians * someConstant formula for lateral pacejka output
[/list]

[b][size=5]Part 5 - Reference formulas and ressources[/size][/b]

More content to come...

Reference physics formulas, tutorials and references...

[b][size=5]Part 6 - Questions, FAQ, things we don't know[/size][/b]

[b][size=4]Questions :[/size][/b][list=1]
[*]What is the formula to have a friction ellipse instead of a circle ?
[*]Where can we find a simple formula for combined long/lat grip ?
[*]Should we apply a static friction force or something like that or just pacejka ?
[/list]

[b]FAQ :[/b][list=1]
[*]Should i apply forces lateraly to car body or to the wheel ?
To the wheel.
[*]More classic question and answers to come...
[*]What value can i use to decide if i must draw lateral drift skidmarks ?
[*]What value can i use to decide if i must draw burnout skidmarks ?
[/list]
I am a little bit tired, but i will update with more basics.

I'm looking forward to read your answers and contributions, if anyone interested ! Edited by PochyPoch

Share this post


Link to post
Share on other sites
Dude, sorry if my post won't help you, but i don't understand the point of your new thread.
As far as i understand, you are doing a 2D car sim right ?

The problem that you face in a 2D car sim are really different from any 3D car sim so it make your thread evern harder to understand.
Also, we are not just 3 but maybe hundred of people on this forum are trying to get car Physics right.

Also, to be honest, everyone have its own vision about what is fun car physics, what is realistic car physics and what is arcade style car physics.
So there is no easy way to share stuff on it in my opinion.

Share this post


Link to post
Share on other sites
wow.. huge post.. it'll take me ages to go through it all.
All I can say straight away is that 1ms deltaT is waaaaaaay more than what you would need for a simple racing game, >=1000Hz and you are in the realm of professional simulators and, starting to get in trouble with 32 bit floating point accuracy.

Probably a 100Hz or 200Hz physics rate should be enough if the car isn't too stiff.

EDIT: More notes..

[b]Use wheel distance to CG to calculate weight transfer lateraly and longitudinal. Combine those two.[/b]

This is most probably wrong... you don't calculate weight transfer, it should be automatically happening in your rigid body physics

[b]Subsidiary question : is it vital to have proper car suspensions ?[/b]

For a simple racing game you can get away with a simple "slider" suspension only going up and down. For a proper sim, you'll need a much more complex and realistic movements but that will also require engineering skills to set it up in the sim and lots of tools to understand where it goes wrong.

[b]Use the powered wheels velocity to determine motor RPMs. Based on player throttle input, and engine torque curve, generate a torque force for powered wheel[/b]

You can get away with it, but again, this is backwards thinking, torque goes from engine to wheels, wheel speed is a result, not an input. Once you stick a differential in the mix things get really complicated, proper differential modeling is tricky... but essential for "on the limit and over" driving styles. Edited by kunos

Share this post


Link to post
Share on other sites
Hi !

Thanks for your answer[u]s[/u] !

Well, indeed it doesn't help that much ^^ Instead of focusing on fun, i know at least a part of the posting people seems to want to have the basic physics right. So knowing if a typical car launched at X velocity should more or less stop in 1 sec or 100 sec might help future beginners to start implementing physics. I know i really had a hard time to get the basics right, and the lack of reference values was a great pain.

AFAIK, most of 2D simulations simulates a part of inner 3D (eg : weight transfer), and as long as you consider driving on a flat surface, things are quite similar. For a beginner starting right away with 3D terrain and car model might be a good thing to make stupid mistakes.

A few weeks ago i asked if a lateral pacejka force should be applied lateraly to wheel body or to car model, and response was not clear to everyone. A LOT of basics things are not well understood by beginners, and we have a few people here who have successfully created full racing games. So again, i think it might be a good idea to have some shareable and stored knowledge on the subject.

As for the "what is fun" part, i guess you are right. But again AFAIK, getting controled drifts and natural car behaviour is kind of what every carsim dev wants,no ?(independant of arcadish/simu considerations)

I haven't been able to find very simple and important car setup parameters, so why not trying at least to share those somewhere ? My max_steer function comes from a 3D game and it works well for my 2D sim ;) I really think we can try to bring light to some dark places, instead of always creating topics to ask something precise and then realize a few answers laters that we have missed other things or that we just didn't think of a key feature. Almost all car related topics end like that. And the only tutorials are the one from marco, gamedev and unity, which i personnaly think are really vague on a lot of key subjects like proper car inputs management or how pacejka works. And PHORs is way too complicated for most readers to implement it i guess. I know i do not want to implement the Maths, altough the reading helped me to understand many things.

[quote]Probably a 100Hz or 200Hz physics rate should be enough if the car isn't too stiff[/quote]
Well, the 1000Hz value in test/dev purpose allow us to be sure any instability does not come from there. Objective of the thread is to try to enlight newcomers to the subject. For a game in early prototype stage, the computer can handle it well. And everyone is free to adapt the value to its needs later, but for the scientifical accurate part, i think 1000Hz is doable and a simple value.

[quote][b]Use wheel distance to CG to calculate weight transfer lateraly and longitudinal. Combine those two[/b].
This is most probably wrong... you don't calculate weight transfer, it should be automatically happening in your rigid body physics[/quote]
Sorry, i meaned load transfer and not weight transfer, i offen misuse those two words. My dynamic load transfer happens with acceleration in the car body. So to know the real weight on a body point, i have to find out its distance to CG, and then use long/lat acceleration. As i do not use a physics engine (except for the collision detection part), i code weight transfer as much as simple forces integration. So AFAIK it cannot happen automatically unless i use a real 3D engine and feed him with some values. I get front/lat acceleration depending on current acceleration values, which themselves depends on previous ticks generated forces.
The real weight transfer, which happens when the car CG is displaced occurs indeed automatically as a suspension or an other is going up or down. I'll edit my post to use correct terms. Edited by PochyPoch

Share this post


Link to post
Share on other sites
I believe that by best contribution to this thread is my article about the pacejka formulas, including the interesting debate at the bottom comments:

[indent=1][url="http://www.edy.es/dev/2011/12/facts-and-myths-on-the-pacejka-curves/"]Facts and myths on the Pacejka curves[/url][/indent]

In summary, you need these kind of formulas only when developing high-end ultra-realistic vehicle simulation with real tire sets (think on netKar Pro, rFactor, etc). But you are not required at all to use these approaches for developing realistic vehicle physics. These methods are inherited from the automotive industry and it's quite difficult to implement them properly in video games.

In my tests I was able to develop a very fun and realistic vehicle simulation using basic vector math only, with the vehicle reacting properly to burnouts, drifting, brake locks... everything in a few lines and running at 50 Hz.

Forget those numbers and quantities on Edy's Vehicle Physics. That system was developed as workaround for the bad implementation of the wheel component in PhysX 2.8 (nxWheel, used by Unity as WheelCollider). As one of the nVidia developers confirmed me recently, that implementation was cheap and easily tuned for specific applications. My Vehicle Physics package makes the wheel component behave in a barely acceptable realistic way, but none of its parameters has to do with real vehicle dynamics.

I'm now developing a new tire simulation model designed form scratch specifically for video games. It provides a complete tire simulation that reacts realistically on almost all possible situations of the wheel, including static friction and wheel spin. I expect it to be completed by the end of this year.

About the 1ms deltaT subject: in my opinion the problem with this is that the [i]traditional [/i]methods are way too dependent of the deltaT. In a regular implementation of [i]slip ratio[/i], the resulting force exerted by the tire could double if deltaT is doubled. So you could find that your simulation works exactly as expected at a specific deltaT only. This is why I'm developing a method that doesn't depend directly on the deltaT. A small deltaT (< 20ms) helps avoiding instabilities at certain extreme situations, but the resulting force doesn't depend directly on it. Edited by Edy

Share this post


Link to post
Share on other sites
[quote name='PochyPoch' timestamp='1348743357' post='4984305']
[quote][b]Use wheel distance to CG to calculate weight transfer lateraly and longitudinal. Combine those two[/b].
This is most probably wrong... you don't calculate weight transfer, it should be automatically happening in your rigid body physics[/quote]
Sorry, i meaned load transfer and not weight transfer, i offen misuse those two words. My dynamic load transfer happens with acceleration in the car body. So to know the real weight on a body point, i have to find out its distance to CG, and then use long/lat acceleration. As i do not use a physics engine (except for the collision detection part), i code weight transfer as much as simple forces integration. So AFAIK it cannot happen automatically unless i use a real 3D engine and feed him with some values. I get front/lat acceleration depending on current acceleration values, which themselves depends on previous ticks generated forces.
The real weight transfer, which happens when the car CG is displaced occurs indeed automatically as a suspension or an other is going up or down. I'll edit my post to use correct terms.
[/quote]

actually the two terms are almost equivalent and, as I said, using body acceleration to calculate load transfer is the wrong way of doing it:)

intuition should suggest you that load on a tyre should be influenced by the movement of the tyre, not from the movement of the car body.

Share this post


Link to post
Share on other sites
[quote name='Edy' timestamp='1348758851' post='4984376']
In a regular implementation of [i]slip ratio[/i], the resulting force exerted by the tire could double if deltaT is doubled
[/quote]

that doesn't make sense at all. deltaT doesnt even appear in a slip ratio definition how can it influence it? There is no reason for a sim to change behaviour if dT is changed, the ENTIRE point of having a dT in the first place is to make things indipendent of time :)

Share this post


Link to post
Share on other sites
Well, thanks everybody for the answers, as always, i am still learning interesting things.

Edy, i am really glad to see you participating in here, your experience is very valuable. Actually i bought Edy's Car Physics for unity, just to be able to look at car setup parameters and to have a better understanding of some of the mechanics. But with the system based on Unity WheelColliders how it really works is kind of hidden + i have trouble reading spanish comments ^^ Too bad my game is javascript and not Unity ^^

Anyway i have read all of your articles and the interesting comments too. Helpful, but it didn't gave me a real alternative to pacejka curves. To be clear i am working with simple curves plotted for 1N i am scaling afterward. I never messed with those complicated parameters and as pacejka just produce some value, it seems clear it is a very small part of a proper driving game.

[quote name='kunos' timestamp='1348759644' post='4984379']
that doesn't make sense at all. deltaT doesnt even appear in a slip ratio definition how can it influence it? There is no reason for a sim to change behaviour if dT is changed, the ENTIRE point of having a dT in the first place is to make things indipendent of time
[/quote]
Well, it makes a lot of sense to me, actually a lot of articles explain this. Basically if you have 200% slip ratio, and produce 5kN of force for a 50ms timestep, you are stuck with the same force applying for 50ms. With smaller timestep, physics engine actually has a chance to see that slip ratio may have go down to 100% around 25ms, and for the remaining 25ms you will produce a different amount of force for example. You seem to have some experience in car physics (with 2010 posts !), so i guess you already know this and maybe we are not talking about the same thing [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] Or you have eliminated any numerical instability issue in your simulation and just have forgot about it ^^ Anyway it is not that hard to emulate some equivalent to SR with similar results, but improved stability. My lateral forces are quite stable too at 50Hz, the difference is not really noticeable with 1000Hz.

[quote name='Edy' timestamp='1348758851' post='4984376']
In summary, you need these kind of formulas only when developing high-end ultra-realistic vehicle simulation with real tire sets (think on netKar Pro, rFactor, etc). But you are not required at all to use these approaches for developing realistic vehicle physics. These methods are inherited from the automotive industry and it's quite difficult to implement them properly in video games.
[/quote]
Really ? oO i just learned it. I had the feeling a lot of games (like GTA, or even more arcade games) use the curve approach, even if they tweak it rather than directly implementing the formula. Your framework doesnt seems too much realistic to me, and it's using it right ? I was just plotting simple curves scaled by weight load, and (re)discovered today, that forces do not linearly increase with Fz, thus making proper use of the formula important to me, or at least it is what i was thinking until i read this.

[quote name='Edy' timestamp='1348758851' post='4984376']
In my tests I was able to develop a very fun and realistic vehicle simulation using basic vector math only, with the vehicle reacting properly to burnouts, drifting, brake locks... everything in a few lines and running at 50 Hz.
[/quote]
Oh man, you just blowed up my entire world ^^ just kidding. I know we can have stable behaviours at 50Hz, but having controled/fun drifts over/under steer with really simple maths, without getting into wheel angular vels or SA/SR, and weight-dependant curves seems quite hard to me without recreating this entire logic out of nothing with math hacks or such things. I'd really love to have a look or even be able to buy such a piece of code [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img] (seriously). Right now, my best hope to control the drifts without having a naturally oversteering car is to have better load transfer calculations and to stop to apply Fz linearly after normalized pacejka output. Maybe i am once again very wrong to hope that it will greatly improve car handling and capabilities... :'(

I have the intuition without a little of weight transfer and some dumb but credible suspension and traction circle or at least combined slips you can't have the driving feeling of your red pickup for example : if i brake enough in a corner i am able to produce controled oversteer to turn sharply at 100Kmh in your 90° curves in the city demo.

The best i can do to have "fun" physics with very little code is to directly rotate car and to let the lateral forces of the tire do the rest of the job. Not good enough if i want my player to have car parts and i guess you are suggesting something more sophisticated than this.

[quote name='kunos' timestamp='1348759195' post='4984377']
actually the two terms are almost equivalent and, as I said, using body acceleration to calculate load transfer is the wrong way of doing it:)
intuition should suggest you that load on a tyre should be influenced by the movement of the tyre, not from the movement of the car body.
[/quote]
Wow, that is really confusing me. What do you mean by tyre movement ? As in the tire going up and down (spring/suspesion) ? Unless there is a bump in the road, AFAIK, acceleration is responsible for load transfer.
Wikipedia is quite clear on this :
[quote name="Wikipedia"]In wheeled vehicles, load transfer is the measurable change of load borne by different wheels during acceleration (both longitudinal and lateral). This includes braking, and deceleration (which is an acceleration at a negative rate).[6] No motion of the center of mass relative to the wheels is necessary, and so load transfer [b]may be experienced by vehicles with no suspension at all[/b]. Load transfer is a crucial concept in understanding vehicle dynamics. The same is true in bikes, though only longitudinally.[/quote]
Again, when i read what you say and compare it with my "knowledge" of the subject, i can't stop me of thinking i have clearly messed up something... Please enlight me [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

[quote name='Edy' timestamp='1348758851' post='4984376']
I'm now developing a new tire simulation model designed form scratch specifically for video games. It provides a complete tire simulation that reacts realistically on almost all possible situations of the wheel, including static friction and wheel spin. I expect it to be completed by the end of this year.
[/quote]
I'm looking forward to it, but sadly i'd like to have my game runing in alpha stage before that time. And anyway i would still have to rewrite the entire thing in javascript, which i would not be able to do without a lot of detailed english comments everywhere ^^

Actually in my sim everything is fine, except i cannot really combine different behaviours, and it really seem to me everything is VERY weightload related. If i cut a vector using friction circle, it usually makes the car spin very fast. Same goes if too much weight goes to one of the outside front wheels. So have i missed really important things, or am i going the wrong way trying to get more reasonnable load transfer ?
I mean if you can achieve credible drifts behaviours without load transfer or lateral pacejka... I'd really like to know where to look to do it [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

As always, really looking forward to your answers ! i have spent 6 months reading a lot of docs and trying many things, but i still need to learn A LOT. Main problem is to when you get the basics "right" and it still not fun, is to find out what to try to move forward.

I have seen in a lot of threads, a lot of people trying the same things, learning slowly the hard way, to finally give up or be unsatisfied with their car handling. If i get better understanding of the problems and manage to get my car simulation running fine (failure is not option, the rest of the game is going very well), i would be very happy if sharing that knowledge helps future racing developers. Edited by PochyPoch

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1348759644' post='4984379']
[quote name='Edy' timestamp='1348758851' post='4984376']
In a regular implementation of [i]slip ratio[/i], the resulting force exerted by the tire could double if deltaT is doubled
[/quote]

that doesn't make sense at all. deltaT doesnt even appear in a slip ratio definition how can it influence it? There is no reason for a sim to change behaviour if dT is changed, the ENTIRE point of having a dT in the first place is to make things indipendent of time [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
[/quote]

[img]http://www.edy.es/dev/wp-content/uploads/2011/12/Slip-formulas.png[/img]

The problem arises when calculating w (angular velocity). If the wheel is in the air, applying torque at the axle results in an angular acceleration a = Torque / Inertia. Then w = a · dT. Thus, doubling dT means double w. Everything is fine to this point: applying a constant torque during twice the time produces twice the angular velocity.

But if the tire is grounded, applying the same Torque at the axle requires calculating the slip ratio and looking up the value in the friction curve in order to get the final force at the tire. And here is it: how to calculate w now? All I was able to find over there is that one must simply calculate w as if the wheel was unloaded, then use the ground speed V and the slip ratio definition to get it. Thus, double dT means more slip ratio. Locking up the friction curve returns a different force at the wheel depending on dT. Of course, the smaller dT, the smaller are the difference among results. This is why many people recommends a minimum of 500Hz for these calculations.

Of course, this is all I was able to find and deduct from the information and source code available over there. Surely there are other methods, but they are either a secret available only for gurus of vehicle simulation, or so complicated that I just didn't recognize them ("not my war, I want it simple"). So I'd really love to hear your point on this specific issue [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

Share this post


Link to post
Share on other sites
[quote name='Edy' timestamp='1348789087' post='4984535']

But if the tire is grounded, applying the same Torque at the axle requires calculating the slip ratio and looking up the value in the friction curve in order to get the final force at the tire. And here is it: how to calculate w now? All I was able to find over there is that one must simply calculate w as if the wheel was unloaded, then use the ground speed V and the slip ratio definition to get it. Thus, double dT means more slip ratio. Locking up the friction curve returns a different force at the wheel depending on dT. Of course, the smaller dT, the smaller are the difference among results. This is why many people recommends a minimum of 500Hz for these calculations.

[/quote]

That makes even less sense.. I read what you wrote several times and it really doesn't :P wherever you found these info they are just wrong all the way. Your wheel angular speed should be a function of all the torques (and forces transformed to torque) acting on the entire transmission system, from the engine to the wheels. All these are integrated with the same formulas and, unless they are wrong, deltaT won't change the result in any tangible way. You should make sure to double check your sources because the big risk here is you claiming to have a solution to a problem that never existed in the first place but it's just a result of your fantasy.

@PochyPoch .. what you are talking about has nothing to do with slip ratio, it's a "problem" common to every physical simulation integrated in discrete steps..of course a bigger integration time will lead to a bigger error.. it's obvious and it isn't what we were talking about.
Regarding the weight transfer, you are perfectly right.. on a vehicle with no suspension, (100% rigid body and 100% rigid steel tyres) load at one corner is EXACTLY the load transfer calculated analytically from the body's acceleration.. but there is no such a a vehicle.. even for a kart you'll have at the very least consider flexible tyres.. which are actually acting like a suspension.
Even worse with a car, where you have your tyres' springs and then your suspension springs.. so those analytically calculated load are only valid in steady state (ie. NEVER :P ) .. in every other situation load is a function of all those springs... the easiest and more common way of getting load is to treat the tyre as a spring and get the load from that spring compression... no calculation needed.

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1348808530' post='4984607']
That makes even less sense.. I read what you wrote several times and it really doesn't wherever you found these info they are just wrong all the way. Your wheel angular speed should be a function of all the torques (and forces transformed to torque) acting on the entire transmission system, from the engine to the wheels. All these are integrated with the same formulas and, unless they are wrong, deltaT won't change the result in any tangible way. You should make sure to double check your sources because the big risk here is you claiming to have a solution to a problem that never existed in the first place but it's just a result of your fantasy.
[/quote]

Ok, imagine the simplest scenario. An electric motor which delivers a constant amount of torque directly to a wheel. In order to calculate the force at the tire, you need to calculate the slip ratio first, so you could look it up in the friction curve and get the force. Calculating the slip ratio requires to calculate w (angular velocity) first. How to calculate w, then? What am I missing?

Share this post


Link to post
Share on other sites
[quote name='Edy' timestamp='1348821879' post='4984662']
[quote name='kunos' timestamp='1348808530' post='4984607']
That makes even less sense.. I read what you wrote several times and it really doesn't wherever you found these info they are just wrong all the way. Your wheel angular speed should be a function of all the torques (and forces transformed to torque) acting on the entire transmission system, from the engine to the wheels. All these are integrated with the same formulas and, unless they are wrong, deltaT won't change the result in any tangible way. You should make sure to double check your sources because the big risk here is you claiming to have a solution to a problem that never existed in the first place but it's just a result of your fantasy.
[/quote]

Ok, imagine the simplest scenario. An electric motor which delivers a constant amount of torque directly to a wheel. In order to calculate the force at the tire, you need to calculate the slip ratio first, so you could look it up in the friction curve and get the force. Calculating the slip ratio requires to calculate w (angular velocity) first. How to calculate w, then? What am I missing?
[/quote]

you don't calculate w.. it's a status. You have your status at t0 and you are calculating your new status at t1. Wheel angular velocity is part of the status t0.

once you calculate all the forces on the system you integrate it and w is part of your result, that becomes the input status for your next iteration.

Share this post


Link to post
Share on other sites
[quote name='jujunosuke' timestamp='1348741220' post='4984300']
The problem that you face in a 2D car sim are really different from any 3D car sim so it make your thread evern harder to understand.
Also, we are not just 3 but maybe hundred of people on this forum are trying to get car Physics right.
[/quote]

I'm not sure about that. I'm also planning a 3D car game, but first I'll make a 2D version to make sure I understand all the fundamental parts that I need.
In 2D everyting is more simple but the physics is more or less the same, eg: use only anular velocity (scalar) instead of a vector, or inertia value instead of tensors, but the principle is the same.

At the current sate I'm in the same situation as PochyPoch. I have a decent working car, only having problem with high speed cornering and stability.
As Kukos seems to be one of the guys from the old RAS discussions I'd aim a couple of questions for you directly (if you don't mind) :)

Just a couple of symptoms and confusions:

Symptoms:
1. The car behaves fine with low speed (the wheels are jerky, but no low speed relaxation, so that's ok for now)
2. Up to 40/60 km/h everything is fine, but over this limit the car becomes very hard to control, especialy with no throttle.
3. Around 80/100 km/h, understeer with throttle, and oversteer without it.
4. I tried to adjust the pacejka curve to have more lateral forces at the rear tyres, so it became mor controllable after a while (no oversteer, but more understeer), and thus the rear end becames more sticky and couldn't spin the car not even with locked rear tyres.
5. I tried modifying weight balance, and smaller body inertia value, but didn't help too much.
6. When the car starts skidding the situation becomes very "slippery", like driving on ice.
7. I tried straight Fx/Fy calcuations like: (Fx=SR*1.0*Fz) and (Fy=SA*0.8*Fz) but didn't help too much.


Confusions:
1. For SA/SR calculations do I need the velocity of the contact pacth or the wheel hub wrt the ground?
In most docs I found the wheel velocity is made up from Car's linear velocity and the Car's angular veloicty at the wheel pos.
But, the CP is moving backward as the wheel is rolling (in case of moving forward), is it an important term, or should I just forget it?
I tried this and get "better" lateral forces, so more stability, but it screws up the SR, the wheels spin slower than expected.
Also should I cap SR, eg: betweeh -1..10 ?

2. I have doubts about the afore mentioned straigh engine RPM calculation. Could that affect cornering stability?
I'm thinking in this model: Engine torque accelerates the whole drivetrain (flywheel/transmission/wheel) (clutch/diff ommitted for simplicity)
The final wheel rotation gives a slip ratio that helps to calculate the reaction torque. And apply this reaction torque back to the whole drivetrain (wheel/transmission/flywheel)
BUT, if i'm thinking right, the two calculations need different inertia values (wheel side/engine side). Is that correct?

3. I noticed some oscillation in SR when not pushing the throttle, only engine brake and drag. SR jumping between (0.03% and -0.08%) is that normal?

4. much more that I don't remember now :)

Share this post


Link to post
Share on other sites
Hi, all these points might be simply a symptom of a bug in the code... which could be anywhere, I'll try to approach it from a car dynamics point of view, assuming basic physics code is correct.


Symptoms:
1. The car behaves fine with low speed (the wheels are jerky, but no low speed relaxation, so that's ok for now)
2. Up to 40/60 km/h everything is fine, but over this limit the car becomes very hard to control, especialy with no throttle.

Unless you have explicitly coded a speed sensitivity ( I doubt that because it's a fairly new development and it is usually neglected in literature) in the car, this is usually the sign of a bug.. a well balanced car (ie, right tyre grip distribution, suspension and anti roll bar setup, aero balance) should get more stable as speed increase.

3. Around 80/100 km/h, understeer with throttle, and oversteer without it.

Could be CG too high, too much "coast" torque.. wrong or missing implementation of a proper differential

4. I tried to adjust the pacejka curve to have more lateral forces at the rear tyres, so it became mor controllable after a while (no oversteer, but more understeer), and thus the rear end becames more sticky and couldn't spin the car not even with locked rear tyres.

That's the fascination of car development, to get a car that is drivable and well behaved in real life is VERY hard.. should it be any different in a simulator? ;) You need to hit a sweet spot that usually comes with experience, real world values and study of car dynamics and setup. Of course wrong tyre modeling or differential modeling could produce bad behaving sims.

5. I tried modifying weight balance, and smaller body inertia value, but didn't help too much.

Usually smaller rotational inertia makes the car more twitchy.

6. When the car starts skidding the situation becomes very "slippery", like driving on ice.

This is usually a sign of blindly trusting some common found pacejka sets, they do a good job in reproducing the "grip" side of the curve but a piss poor job in reproduction the sliding side of the curve. You're pretty much by yourself in this., as there is no reliable way to measure tyre behavior after the grip peak it all comes to the developer driving experience and creativity... so, start spending time on a real car on the limit and try to figure out why and how to reproduce that behavior in the sim... this is currently the most active part in PC driving sim research and most simulator have abandoned the pacejka approach because it just doesn't work.

7. I tried straight Fx/Fy calcuations like: (Fx=SR*1.0*Fz) and (Fy=SA*0.8*Fz) but didn't help too much.

How can they work? It's virtually infinite grip there, they only can give you an idea about what's called the "terminal behavior" of the car.. but that's old theory and is pretty much worthless.

Confusions:
1. For SA/SR calculations do I need the velocity of the contact pacth or the wheel hub wrt the ground?
In most docs I found the wheel velocity is made up from Car's linear velocity and the Car's angular veloicty at the wheel pos.
But, the CP is moving backward as the wheel is rolling (in case of moving forward), is it an important term, or should I just forget it?
I tried this and get "better" lateral forces, so more stability, but it screws up the SR, the wheels spin slower than expected.
Also should I cap SR, eg: betweeh -1..10 ?

You want to use the velocity of the contact point but without the angular velocity component. So if you have a rigid body for the suspension hub you'd call a function such as getVelocityAtWorldPos , or transform the point into hub's frame and call something like getVelocityAtLocalPos .

2. I have doubts about the afore mentioned straigh engine RPM calculation. Could that affect cornering stability?
I'm thinking in this model: Engine torque accelerates the whole drivetrain (flywheel/transmission/wheel) (clutch/diff ommitted for simplicity)
The final wheel rotation gives a slip ratio that helps to calculate the reaction torque. And apply this reaction torque back to the whole drivetrain (wheel/transmission/flywheel)
BUT, if i'm thinking right, the two calculations need different inertia values (wheel side/engine side). Is that correct?

that is correct, because ratio influences inertia. There is a nice document written by Ruud Van Gaal at racer.nl that explain how to calculate "effective inertia" as seen from different sides of the drivetrain.

3. I noticed some oscillation in SR when not pushing the throttle, only engine brake and drag. SR jumping between (0.03% and -0.08%) is that normal?

With the car in movement on a flat road no, that isn't normal... it might be a wheel angular inertia too low wrt to the forces and the deltaT.

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1348840448' post='4984724']
Unless you have explicitly coded a speed sensitivity ( I doubt that because it's a fairly new development and it is usually neglected in literature) in the car, this is usually the sign of a bug.. a well balanced car (ie, right tyre grip distribution, suspension and anti roll bar setup, aero balance) should get more stable as speed increase.
[/quote]
The only speed sensitive parts are aero drag and rolling resistance for now, but I was wondering how aero downforce works as speed increases. Is the front/rear balance constant or changing as the car moves (probably not constant, but is the change significant?)

[quote name='kunos' timestamp='1348840448' post='4984724']
Could be CG too high, too much "coast" torque.. wrong or missing implementation of a proper differential
[/quote]
h=0.5m, L=2.55, track=1.9
It shouldn't be high, but there is no differential at all. First I'll try how the rear wheels behave if I disconnect them from the engine at turning.

[quote name='kunos' timestamp='1348840448' post='4984724']
This is usually a sign of blindly trusting some common found pacejka sets, they do a good job in reproducing the "grip" side of the curve but a piss poor job in reproduction the sliding side of the curve. You're pretty much by yourself in this., as there is no reliable way to measure tyre behavior after the grip peak it all comes to the developer driving experience and creativity... so, start spending time on a real car on the limit and try to figure out why and how to reproduce that behavior in the sim... this is currently the most active part in PC driving sim research and most simulator have abandoned the pacejka approach because it just doesn't work.
[/quote]
You might be right :) But I found those values at the same place, maybe PHORS or Genta's ferrari. So you say, my curves can be right but they don't belong to the same tyre?

In "the sliding side of the curve", you mean over the slip limit?
I read somewhere, it is a common misbelief, that the curve falls off over the slip limit drastically. So a linear appriximation with caping at the limit could give "close enogh" result. If not considering load sensitivity.

Also it would be nice to see some real values, not curves, just sample values eg: (SR=0.01, Fz=3500N, Fx=???) and the same for Fy, just to see if we even have reasonable results.
Is there any "healthy" ratio between Fx and Fy (at peak). I just checked, and my FxMax is greater than FyMax.
Are these values reasonable for a 255/50ZR16 tyre:
Fx: Load=3KN, PeakSR=0.11, MaxFx=3240N, InputSR=0.03, Fx=2211N
Fy: Load=3KN, PeakSA=8.6°, MaxFy=2834N, InputSA=4°. Fy=2519N


[quote name='kunos' timestamp='1348840448' post='4984724']
that is correct, because ratio influences inertia. There is a nice document written by Ruud Van Gaal at racer.nl that explain how to calculate "effective inertia" as seen from different sides of the drivetrain.
[/quote]
Yes, got that :)

[quote name='kunos' timestamp='1348840448' post='4984724']
3. I noticed some oscillation in SR when not pushing the throttle, only engine brake and drag. SR jumping between (0.03% and -0.08%) is that normal?
With the car in movement on a flat road no, that isn't normal... it might be a wheel angular inertia too low wrt to the forces and the deltaT.
[/quote]
DeltaT is 1ms, Wheel mass=15kg, Radius=0.33, Inertia=0.81 In case of free rolling wheel.
Is it worth using the relaxation length method at high speed to smooth the SA/SR values?

Share this post


Link to post
Share on other sites
[quote]The only speed sensitive parts are aero drag and rolling resistance for now, but I was wondering how aero downforce works as speed increases. Is the front/rear balance constant or changing as the car moves (probably not constant, but is the change significant?)[/quote]

Surely the levels of downforce go up as the car speeds up because as the car get closer to the ground it will increase aero efficiency. The forward/aft movement of the aero center of pressure varies a lot, older cars suffered from this a lot, newer cars are less prone to move it around a lot, but it's just a trend, not a automatic fact.

[quote]h=0.5m, L=2.55, track=1.9
It shouldn't be high, but there is no differential at all. First I'll try how the rear wheels behave if I disconnect them from the engine at turning.[/quote]

It's not crazy high. Differentials are one of the key element to tune the car behavior and can really change the way the car is behaving at corner entry, apex and exit. It's really important to get those right... in my games most key improvements came from diffs and not from tyres.


[quote]You might be right [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] But I found those values at the same place, maybe PHORS or Genta's ferrari. So you say, my curves can be right but they don't belong to the same tyre?[/quote]

Sadly, to be a good car simulator developer you need to invest lots of money trying to acquire every available book and paper on the matter. I have a huge library with references to interesting graphs and formulas all collected so I can easily find what I need when I need it. Once you start seeing tyre curves from different sources you start to see patterns and things like tyre models just become tools for you to reproduce those patterns. I don't think those tyres pacejka sets commonly found on the internet are a good starting point to develop a sim at all. I strongly suggest you to start your journey getting the Tyre Dynamics book from Mr. Pacejka himlself.. at least you'll understand what kind of trip you have ahead of you :) (and get good data to start with).


[quote]In "the sliding side of the curve", you mean over the slip limit?
I read somewhere, it is a common misbelief, that the curve falls off over the slip limit drastically. So a linear appriximation with caping at the limit could give "close enogh" result. If not considering load sensitivity.[/quote]
Yep, I would say that is generally true. I would suggest to start with a "Brush Model" instead of a pacejjka, it does have a touch of "floaty" feel to it, but, being a physical based model it's easier to understand and easier to improve, while with pacejka you are starting from nothing every time you have to work on a new tyre.

[quote]Also it would be nice to see some real values, not curves, just sample values eg: (SR=0.01, Fz=3500N, Fx=???) and the same for Fy, just to see if we even have reasonable results.
Is there any "healthy" ratio between Fx and Fy (at peak). I just checked, and my FxMax is greater than FyMax.
Are these values reasonable for a 255/50ZR16 tyre:
Fx: Load=3KN, PeakSR=0.11, MaxFx=3240N, InputSR=0.03, Fx=2211N
Fy: Load=3KN, PeakSA=8.6°, MaxFy=2834N, InputSA=4°. Fy=2519N[/quote]

As I've said, you can find some of those on books.. and, if you get in touch with teams, see some data straight from tyre manufacturer. Fx to Fy ratio varies a lot, I found a ratio of 1.1 (Fx=Fy * 1.1) is a good starting point. In your example I would say Fy is quite low for a 255 tyre.


[quote]DeltaT is 1ms, Wheel mass=15kg, Radius=0.33, Inertia=0.81 In case of free rolling wheel.
Is it worth using the relaxation length method at high speed to smooth the SA/SR values?[/quote]

Relaxation length is needed at low speed not at high speeds. Although 0.8 seems a bit low for a 0.33m radius tyre the time step should be enough to handle that.. I am more inclined to say it's a bug.

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1348897058' post='4984969']
Sadly, to be a good car simulator developer you need to invest lots of money trying to acquire every available book and paper on the matter. I have a huge library with references to interesting graphs and formulas all collected so I can easily find what I need when I need it. Once you start seeing tyre curves from different sources you start to see patterns and things like tyre models just become tools for you to reproduce those patterns. I don't think those tyres pacejka sets commonly found on the internet are a good starting point to develop a sim at all. I strongly suggest you to start your journey getting the Tyre Dynamics book from Mr. Pacejka himlself.. at least you'll understand what kind of trip you have ahead of you (and get good data to start with).
[/quote]
Yes, I've already started spending money :) and was reading about a lot of interesting new things. And whatever new formula I just find seems to greatly affect the final "experience" :)
I've already collected a bunch of sample curves, but until I implement all neccesary components, I cannot be sure if the problem is with the tyre or with some missing part.

[quote name='kunos' timestamp='1348897058' post='4984969']
As I've said, you can find some of those on books.. and, if you get in touch with teams, see some data straight from tyre manufacturer. Fx to Fy ratio varies a lot, I found a ratio of 1.1 (Fx=Fy * 1.1) is a good starting point. In your example I would say Fy is quite low for a 255 tyre.
[/quote]
Ok, I try with a better curve, twice as many forces? What do you think? :)

[quote name='kunos' timestamp='1348897058' post='4984969']
Relaxation length is needed at low speed not at high speeds. Although 0.8 seems a bit low for a 0.33m radius tyre the time step should be enough to handle that.. I am more inclined to say it's a bug.
[/quote]
Maybe I use a wrong formula for wheel inertia: (not considering drivetrain inertia, only free rolling wheels)

V1: (one component, cylinder)

I = (m * r^2) /2
I = (15 * 0.33^2) /2
I = 0.81

V2: (two components, tyre + rim)

I = (m1 * r1^2)/2 + (m2*(r2^2 - r1^2)) /2
I = (8 * 0.2^2) /2 + (7 * (0.33^2 - 0.2^2) /2
I = 0.16 + 0.24
I = 0.4

Even worse, do I miss something?

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1348823748' post='4984666']
you don't calculate w.. it's a status. You have your status at t0 and you are calculating your new status at t1. Wheel angular velocity is part of the status t0.
once you calculate all the forces on the system you integrate it and w is part of your result, that becomes the input status for your next iteration.
[/quote]

Okay... this may sound silly but that simple paragraph supposes a lot of clarification to me. I'm using Unity 3D, so I'm constrained to a subset of the physics engine (PhysX). No access to the integrator at all - only rigidbody dynamics that just work and the ability of applying forces to it (rigidbody.AddForceAtPosition).

But it doesn't mean that I'm trying to solve a nonexistent problem. Now I have a much better picture of the problem I'm working on, and it has to do with another of your replies:

[quote name='kunos' timestamp='1348897058' post='4984969']
Sadly, to be a good car simulator developer you need to invest lots of money trying to acquire every available book and paper on the matter. I have a huge library with references to interesting graphs and formulas all collected so I can easily find what I need when I need it. Once you start seeing tyre curves from different sources you start to see patterns and things like tyre models just become tools for you to reproduce those patterns. I don't think those tyres pacejka sets commonly found on the internet are a good starting point to develop a sim at all. I strongly suggest you to start your journey getting the Tyre Dynamics book from Mr. Pacejka himlself.. at least you'll understand what kind of trip you have ahead of you (and get good data to start with).
[/quote]

My goal is to develop the most realistic vehicle simulation that could be achieved only with the minimum (and simplest) math involved. Of course, it wouldn't be comparable to the high-end solutions, but it will provide developers a rather simple method that could be easily understood, implemented, and tuned for each specific project. Thus, developers with limited physics knowledge (as me) could still develop good vehicles that would be realistic enough for most projects. Edited by Edy

Share this post


Link to post
Share on other sites
[quote name='PochyPoch' timestamp='1348773403' post='4984461']
In summary, you need these kind of formulas only when developing high-end ultra-realistic vehicle simulation with real tire sets (think on netKar Pro, rFactor, etc). But you are not required at all to use these approaches for developing realistic vehicle physics. These methods are inherited from the automotive industry and it's quite difficult to implement them properly in video games.
Really ? oO i just learned it. I had the feeling a lot of games (like GTA, or even more arcade games) use the curve approach, even if they tweak it rather than directly implementing the formula. Your framework doesnt seems too much realistic to me, and it's using it right ? I was just plotting simple curves scaled by weight load, and (re)discovered today, that forces do not linearly increase with Fz, thus making proper use of the formula important to me, or at least it is what i was thinking until i read this.
[/quote]

Yes, you can use a curve approach, but not necessarily a pacejka one. As Kunos pointed out in another of his replies, once you see the pattern of the real friction curves you can use any method for reproducing them. That framework uses those patterns as you can see at the [url="http://www.edy.es/dev/vehicle-physics/live-demo/"]demo[/url] (press B, then shift-B to see the curves). However, that framework is based on a workaround to the standard wheel component of the physics engine (no real-world physics on the tire). So things like lateral-longitudinal force combination are roughly calculated, and the method is targeted for gameplay instead of realism.

[quote name='PochyPoch' timestamp='1348743357' post='4984305']
> Use wheel distance to CG to calculate weight transfer lateraly and longitudinal. Combine those two.
This is most probably wrong... you don't calculate weight transfer, it should be automatically happening in your rigid body physics
[/quote]

That's right, you don't need to calculate this. In my case (Unity 3D) I have rigid body physics that just work. So my vehicle is constructed simply as a rigid body with 4 contact points and a simple suspension on each one (spring + damper). If I put this "vehicle" over a terrain it will behave as if it is sliding on ice (no friction) but suspension, weight transfer and weight load at each contact point will just work.

What my tire simulation does is simply applying the appropriate force at each contact point according to the vertical load on that point. If the forces are calculated and applied properly, then the rigid body will behave as a vehicle by itself, which actually does in my work-in-progress framework. Edited by Edy

Share this post


Link to post
Share on other sites
Again, i am sorry but i think this thread is confusing.
When i look at the first post and the evolution of the thread, i can't find anything related.
Its like everyone is talking about his problem and mix everything.

I will be difficult for someone who have a specific issue to find answers by looking at this thread..

[quote]Part 1 - What should i absolutly do to make this a fun game with drifts, skids and such things ?[/quote]
This title only is just nonsense...
There is no miracle recipe to make fun game or drift game.

First the random guy who have no knowledge about car physics should be oriented to some reading first.
The famous Marco monster tutorial is i guess a good start :
[url="http://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html"]http://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html[/url]

Also, the way you explain things is hard for a newcomer to understand.
The advice order is completely wrong, and doing thing that way is total nonsense.

Again no offense, you want to help people and help yourself, thats a great idea, but you should at least do it seriously..

Basically separating Car physics in multiple categories would have been a better approach...
Tires, Transmissions, Engine, Gear Ratios, Weight Transfer etc...
Again marco's monster tutorial do that better than you do.

[quote]Use the powered wheels velocity to determine motor RPMs. Based on player throttle input, and engine torque curve, generate a torque force for powered wheels.[/quote]
Another exemple, how did you came to this conclusion ? Looks like a copy and paste.
As kunos mentioned this is backward thinking, and not very logical to me.
Of course i know that this approach is valuable because i already deal with it by seeing some car physics tutorial on the net.
But for a new-comer, it will be difficult to understand anything...

Anyway..

Share this post


Link to post
Share on other sites
jujunosuke,
I'm sorry but I feel your post was not so constructive.


[quote name='jujunosuke' timestamp='1349153574' post='4985950']
I will be difficult for someone who have a specific issue to find answers by looking at this thread..
[/quote]
As far as I understand this topic is not about a specific broblem, more likely about all problems. If you have a specific issue, just read the FIRT post which is constantly edited and expanded, as the discussion goes on.

[quote name='jujunosuke' timestamp='1349153574' post='4985950']
When i look at the first post and the evolution of the thread, i can't find anything related.
Its like everyone is talking about his problem and mix everything.
[/quote]
Yes, because people usually don't share hard earnt techniques easily. So we must go the harder way to share our problems, and work out the answers together.
Kunos is the far most experienced here, but nobody expects him to copy/paste his super tyre model formulas/parameters that he worked out in many years, his comments are valuable but only showing the right directions.
This way you are right, the title of this topic will not work, PochyPoch was naive about it :) But since this topic became the most visited car topic, people ask here.

[quote name='jujunosuke' timestamp='1349153574' post='4985950']
This title only is just nonsense...
There is no miracle recipe to make fun game or drift game.
[/quote]

I don't think any of us who just started playing with car simualtion are about to make hyper realistic simulation for a racing team or a car factory.
At this level, it's all about game and fun with an acceptable level of physical accuracy, and thus as everything in game programming it's all about cheating as much as possible. So there ARE miracle recipes as long as you are not a professional in aero dynamics or in suspension geometry setups.
Later when we work out everything about differentials and tyre simulation those magical solutions will disappear.

[quote name='jujunosuke' timestamp='1349153574' post='4985950']
Again no offense, you want to help people and help yourself, thats a great idea, but you should at least do it seriously..
[/quote]
So then, let's help him make it better. The Marco Monsters' is almost 10 years old, and the only one well understandable for beginners.
You are partially right, this tutorial hasn't reached that level, but I'm sure in time it will.
It's high time someone started making an extended version :)

Share this post


Link to post
Share on other sites
bmarci, thanks for your answer and your point, but i think you don't get what i tried to say.
I am not native English so, it may be the reason i explained it bad.


[quote]I'm sorry but I feel your post was not so constructive.[/quote]
It was, i tried to explain why this thread was confusing to me. If you don't want to admit that some people will not understand that thread thats your problem.
But don't say that my post was not constructive.


[quote]As far as I understand this topic is not about a specific broblem, more likely about all problems. If you have a specific issue, just read the FIRT post which is constantly edited and expanded, as the discussion goes on.[/quote]

A web page with some photos, or even Flash based animation would be so much better than this post.

[quote]I don't think any of us who just started playing with car simualtion are about to make hyper realistic simulation for a racing team or a car factory.
At this level, it's all about game and fun with an acceptable level of physical accuracy, and thus as everything in game programming it's all about cheating as much as possible. So there ARE miracle recipes as long as you are not a professional in aero dynamics or in suspension geometry setups.
Later when we work out everything about differentials and tyre simulation those magical solutions will disappear.[/quote]

I am not even talking about realistic simulation, i am talking about something really simple, the basics.
Beside the fact that marco monster is 10 years old, it cover everything so well, its just the best way to start in my opinion.

And gamedev forum should be there to help you to answer question on a particular point that you don't understand for example.

Of course, its always interesting to see some reading on car physics, a subject that passionate all of us, but the fact of melting all kind of question and answer together make it really confusing and not that easy and enjoyable to read IMO.

I don't have any problem with "tutorial" or "resource" kind of thread, but at least, it really need to be done more seriously.
That was my 50 cent. Edited by jujunosuke

Share this post


Link to post
Share on other sites
Hi to all beloved co-posters !

Bmarci, thanks a lot for saying what i was going to say ^^

More precisely, i would say, yes, this is going to fail, as almost any other car topic on the forum. Of course there are a lot of errors in my (very) simple explanation. The whole purpose was to get people to say "hey this is not the way you should do that !", or even more valuable "hey there is a faster/easier way to do that !". So if i had all knowledge already, i would finish my game and make a real tutorial instead of a "general car ways of doing things" topic [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

My goal is ultimately to explain everything we learned on the first topic, and maybe if i estime myself enough give some advices (like do not believe marcos tutorial will give you a nice car ^^). I have a LOT of litterature on the subject i will post, etc. But right now, i feel like trying to make a "reference" first post is kind of a waste of time as there is too much things to discuss, and making it look "good" won't make it good for real. The idea is to get people to understand this is an open debate and ideas/tips sharing topics, which i hope will let us gather enough intel to be able to provide a few good advices on the first post.

As i see it, all kinds of handy formulas, links, tips, and even different "ways" of doing things will be explained in the first post. Bu right now, this thread is highly unrecommandable, especially for newcomers, there are better places to start, like marcos monster, phors or the tutorial on gamedev, which are all good reads.

And, finally yes, i think all noobies car devs are going the same way those times, and maybe a fresher starting point would be necessary.

[quote]Beside the fact that marco monster is 10 years old, it cover everything so well, its just the best way to start in my opinion.[/quote]
Oh yeah, +1k to that. And maybe even before that getting familiar with driver knowledge before going into physics. The value of the first post when completed would not be to do what marcos did, but instead, starting where it stopped. So let's say you have implemented everything he said, and even a few more things, but you are very disappointed because your car is not feeling right. I already learned very valuable things (like role of differentials and so), that i think are worth explaining in the first post, in time, when i'll have implemented and understood them myself. And finally having a few videos demos, data sets and reference values would be a great contributions for people coming from marcos tutorial or trying to implement it.

[quote]Of course, its always interesting to see some reading on car physics, a subject that passionate all of us, but the fact of melting all kind of question and answer together make it really confusing and not that enjoyable to read IMO.[/quote]
The fact is, we (i) have so many questions, i feel like creating topics for all of them would result in terrible forum flooding. So the idea is to ask things as they are coming, and when i figure out enough of them i'll summarize the first post well [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] And then it would be a great time for constructive feedback, as we are thinking towards future readers and explaining things correctly.

---

That being said, let's go back to main topic : car [s]science[/s] alchemy !

---

EDIT : Wow i just realized there are very interesting things being said in the previous car topics ! Maybe some of my questions have been answered there. If that is don't bother linking the other topics, i'm reading them right now [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

A few words on the differential topic i started : i was just talking of a flat multiplier in my sim actually : engineTorque * gearRatio * diff * throttleInput. Very dumb thing, compared to how advanced a real differential is. I personnaly do not use an axle, instead i add torque to the drive wheels directly, and so, they get individually slowed/accelerated in a corner. If cornering without throttle, the inner wheels is going slower than outer wheel (normal), but if cornering with throttle, that's the opposite. Actually wihtout differential, the inner wheel has to slide on itself, which works but is far from good. And must have an influence on cornering.

Anyway i just deactivated slip ratios, engine torque and all things related to concentrate on drifting and cornering behaviour. No traction circle either for now. So i'm not on power drifting, but more on braking->more weight to front->oversteer drifts.

I think i'll code real suspesions/springs and enhance my mastery of steering_input_control / general lateral forces manipulations before i get more into combined lateral and longitudinal grips. Step by step !

---

[quote name='kunos' timestamp='1348808530' post='4984607']the easiest and more common way of getting load is to treat the tyre as a spring and get the load from that spring compression... no calculation needed.[/quote]

[quote name="edy"]That's right, you don't need to calculate this. In my case (Unity 3D) I have rigid body physics that just work. So my vehicle is constructed simply as a rigid body with 4 contact points and a simple suspension on each one (spring + damper). If I put this "vehicle" over a terrain it will behave as if it is sliding on ice (no friction) but suspension, weight transfer and weight load at each contact point will just work.[/quote]

No calculations... does not work for me, sorry ^^ You mean the physical engine does it for you ? You mean, the spring/wheel will compress because of car accel, and the final force on each tyre will be way more reasonnable than in a vehicle without suspension ? I still have a doubt if you're suggesting NOT even consider car acceleration, or just don't use it AS IS because it is very stupid (which is obvious ! As you pointed it, even a tire is a kind of suspension on itself).

If that is what you mean, then we agree ! Either way, please explain further, the "no calculation" thing.

As all front/lateral forces get eventually multiplied by the wheel load, we can say getting the wheel load right is maybe as much or even more important than getting the initial values right. I had much trouble with that, and honestly for this particular subject i kind of miss examples. When i look at a big pickup truck i can see the springs getting highly compressed. Marcos state something like "xxx acceleration > formula > xxx Fz on back wheels, so you accelerate faster". The fact he didn't talked about car suspesions made me think :[list=1]
[*]It is not a very important part of the simulation (VERY wrong i think, now)
[*]Suspension or no, i CAN get the force he is talking about, eventually, and maybe suspensions will just make the weight shift process a little slower (i guess it is really wrong too).
[/list]

Here is a problem i still have : if weight transfer is more than a FEW percents, car can spin very easily or behave odd. When i see the raw acceleration weight transfer outputs, i find it hard to beleive spring/dampers can convert a totally incontrolable car in something smooth. So i looked elsewhere.... For a too long time. I mean, will i go from 15% weight transfer to 1% ? Or more from 15% to 12% ?

What is a typical cornering car weight transfer values ? On something like a lambo, and a drift car (to have extremes), if i decelerate from 200Km/H to 150Km/H, what can be the front/rear weight repartition at corner entry ? middle ? end ? Is it ok to have almost all cars to spin if the transfered weight ratio from back to front is more than 10% during serious cornering ? (i know you miss the steering and lateral tyres forces intel, but i'm just asking to have an idea of the effect of suspensions).

Actually i get pretty good results with 1% ~ 5% maximum weight transfer amount. It all depends of steering and lateral forces, wich varies from one car to an other.

---

[quote name='kunos' timestamp='1348840448' post='4984724']
3. Around 80/100 km/h, understeer with throttle, and oversteer without it.
Could be CG too high, too much "coast" torque.. wrong or missing implementation of a proper differential
[/quote]

I generally have this behaviour too. Slip angle is initially higher at front, it makes the car oversteer (with or without weight transfer). If accelerating, the cornering radius is getting higher very fast (understeering). Even more noticeable if you have an arcade front velocity directly coming from throttle instead of SR/torque. I think (hope) Kunos is right and a differential would help to create a front acceleration vector which has a small angle instead of 0. Thus helping in cornering. I was not confident trying to implement this for now, but i'm looking toward formulas and tips helping to create a diff. Unless the formulas are pure magic, i guess it is very hard to do this quickly.

---

[quote name='bmarci' timestamp='1348845115' post='4984742']
Also it would be nice to see some real values, not curves, just sample values eg: (SR=0.01, Fz=3500N, Fx=???) and the same for Fy, just to see if we even have reasonable results.
Is there any "healthy" ratio between Fx and Fy (at peak). I just checked, and my FxMax is greater than FyMax.
Are these values reasonable for a 255/50ZR16 tyre:
Fx: Load=3KN, PeakSR=0.11, MaxFx=3240N, InputSR=0.03, Fx=2211N
Fy: Load=3KN, PeakSA=8.6°, MaxFy=2834N, InputSA=4°. Fy=2519N
[/quote]
+1. We need some real life values with a known-setup car to help us. Do you have the name of a book wich specifically has real examples ? Physics of racing maybe ?

---

A few questions :[list]
[*]What is a reasonably good lateral deceleration a tire can produce ? I mean, if i am at 50 meters/second front and want to turn right at 90° without making a huge drift, how much lateral G are realistic ? Or in other words what can be the cornering radius ? Reason i am asking this : my game is currently top down, and to see curves, they have to fit on the screen. So, i know my driving environment is far from realistic, and thus i need VERY good tires to turn. So let's say you kick a car lateraly so the Fy speed get instantaneously to 50 meters/s. What would be a reasonable stopping time ? 1s ? 5s ? I have done some research and it seems, F1 car do something like 5G of lateral acceleration, while a regular car is closer to 1G. But no one is trying to take a 90° corner with a regular car at 150 Km/H. I guess if it a crossover it is not even doable even if drifting ?
If i have a 1500Kg car, with inertia of 3000 and a pacejka curve like this : peak@4° = 1.2, value@90°=1.0 my car handling is credible, but totally catastrophic, i cannot take any decent corner above 50KmH. I have to go to 20 or more in the 90° to make the car turn ok.
[*]Do you see the peak of the long/lat curves as the maximum radius of the traction ellipse in that direction ?
[*]Is there a formula to create an ellipse knowing the X/Y radiuses ?
[*]If a front pacejka curve is not matching the lateral one : let's say i draw curves by hand and i am modifying them separatly as i try things. Is there a point at wich it is stupid to hope anything because those are so closely related (with SR/SA, traction circles) that everything has to be in perfect harmony (ie: lateral forces physically accurate regarding to front ones). That means i cannot let the player upgrade its front grip without having lateral grip to increase as well ?
[*][s]In most car simulations, when the car starts to slide, it acts as it keeps sliding, like if a slide situation was more able to create a slide situation in the next tick. Or like if when sliding has started, the friction forces are modified. That make sense if you consider static/dynamic friction, but afaik, a tire cannot bo seen from this simple perspective. If i am cornering at 150Km/H, i guess everything is sliding here and there a little, and there no such thing as : "static friction, everything is alright"--> "sliding, so i have lost traction and cannot do much about it". But i don't know, we always read the patch is kind of "not moving" at a given time, so maybe even when cornering at high speed, i should consider the patch as static ? And then i would need to find out if it is in static or dynamic friction mode ? No idea if it is a legitimate question, and even less idea on how to determine that.[/s] Funny that jujunosuke had the same hope than me on this ^^ Anyway the response of Kunos is absolutly no static friction.
[/list]
And finally, last but not least, something very important to me i am still not sure :[list]
[*]It is said the more acceleration, the more weight on the tire, and the more weight on the tire, the more grip. So why during intensive cornering, the outer wheels (which are the most loaded) are always the first to slide ? My guess ares :
[/list]
a) It only happens when the lateral speed gets too high. So something related to static/dynamic friction like i am asking above. And lateral speed would be higher on outside side of the car ? Or even more crazy : in fact all wheels are sliding at the same time, the outside wheels are not always the first to slide in those situations.
b) Somehow the slip angles of the outside wheels are getting too high, the curve is getting down and slipping occurs ?
c) At some point, more weight means less force ??? I know the weight has diminushing returns on generated forces, it is not entirely linear. But when i looked at the values, even if not neglectible, it does not makes sense that the outer wheels slide first.
d) Only happens because of differentials + driver pushing throttle. So outside wheels are slipping, traction circle is outranged and increased weight is not important enough to counter the loss of magnitude of the "raw" lateral friction.
e) It is something else, maybe related to camber, or the fact that the car is simply not well balanced with too much weight on one side which means... too strong lateral forces ? Edited by PochyPoch

Share this post


Link to post
Share on other sites
lots of questions as usual... the no calculation thing is very easy.

Tyre is a spring, and should be modeled as such. Usually there are 2 approaches to modeling tyres/suspensions:

1) "Arcade" mode, the car is a single rigid body, suspensions and tyres are simulated with 4 ray casts and with a spring, or better, with 2 spring in series. In this case, the force that the spring will send to the car is also your load on the tyre.

2) "Sim" multibody approach. Here each tyre is a separated rigid body connected to the car body either with a joint, more joints, or more rigid bodies.
In this situation the tyre is a spring too, when it collide with the ground it will "sink" into it, this "deflection" is used as a compressed spring, it pushes tyre up at it represent your load. So simply:

tyres[i]->load = tyres[i]->deflection * tyres[i]->spring;

For tyres you are looking into the 200,000 N/m spring rate and a 400 N/ms for damping.
With this system, everything is "automatic" as long the point of application of your forces is correct. So you brake, the weight goes forward, it will "compress" the tyre more into the road (just as in real life) and by measuring this deflection you get the instant load. Links, suspensions, springs and dampers are automatically taken into account.

Tyre lateral grip
It depends a lot.. a typical road tyre will give you 1.0 - 1.1 G.. with load sensitivity and all you should get close to 1.0G on a skidpad. A normal road car with 1.0G lateral acc is considered VERY good (ie. the BMW Mini scores a tad less than 1.0G and is considered a very good handling car).
Casual players usually find this VERY low.. this has lots of possible explanations:

1) No real experience with real cars.. and I mean track experience in a competitive way, not the kind of experience you get being an idiot on public roads.
2) The result of 1 is that no driving skills are developed... typical sign, Joe-I-Go-Fast goes too fast into a corner, the car will understeer and he turns more into the corner, making understeer worse and going even more wide into the wall.
3) They are used to other games either arcade a-la PGR or F1 games where cars have huge amount of grip.

You can try to solve the problem by increasing the grip, but that will screw up everything else on the car, it will roll more, pitch more, and, since the tyres have a much bigger potential to generate forces, the car will be more twitchy..

Continuing the grip references, for a high performance road tyre (high end supercars) you see 1.2 - 1.3
Racing slick tyres range from 1.4 to 1.9 depending on compound.

Share this post


Link to post
Share on other sites
As for the loaded sliding tyre thing.
The first chapter of every car dynamics book will talk about "load sensitivity", which is an essential concept in car dynamics.
The more load on the tyre the more the friction coefficient goes down. A tyre that can do 1.2 at 1000N, might give you 1.1 at 2000N . That is why the loaded tyre will be the first one to "break" grip.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this