FGear Vehicle Physics (v1.4)

Okay, setting “Reverse Brake Speed” to zero solved the problem, although the car would rear up when shifting from reverse to first gear, but I’m going to limit the speed at which the gear can be engaged and add a gear scraping sound which should solve this problem.

Unfortunately I couldn’t use the plugin’s input system, I had to leave all the inputs manually to better integrate with SimpleController, the entire off-roading system and all the other peculiarities of my game.

Thanks!

the documentation clearly tells how to use enhanced input, look for CoreModule->Standard Input Settings->Enhanced Input System section.

the red car(Sedan_BP) in the sample project is fully setup for enhanced input, you just need to activate enhanced input from the engine settings and set input type to “Enhanced” in standard input component. There is a sub-category called “EnhancedInput” at the bottom of standard input settings, you might have missed that.

1 Like

if you experience rear-ups make sure your “Wheel-Roll Moment Scale” value is zero or small enough.

Their value is at zero, I believe it is just because of the excessive amount of torque and the sudden reversal of rotation in the wheels. But allowing the gear change only at low speed and implementing the solution for the brake lock, has already solved the main problem completely. Thank you.

@lazybitgames I dont know if there is plan to add this feature in next updates but,
What should be the best way to mimic the loss traction on braking/accel variations?

What im thinking is:
Get the difference between last brake/accel value and compare to actual.
Guess with some lerp to tell the amount of time to get the optimun friction again.

Then use that value to substract/multiply, maybe with some clamp to tell a max loss, from:
SlipRatio/SlipAngle, LatScale/LngScale or LatFriction/LngFriction ¿?

What you think? Any other approach?

I didn’t understand what you want to do…

“In drifting, pressing the accelerator repeatedly at different pressures is a common practice known as “feathering” or “throttle control.” The goal is to balance the car between sliding and maintaining speed, and this requires fine control of the throttle to maintain the drift.”

Basically reduce the wheels friction on brake/accel variations for drifting.

Here you can see how Ken Block press repeteadly the accel, which gives some slide/loss friction to drift.

Thats what i want to achieve. Because now on fast accel variations i get some “fast impulses” due there is too much traction. Reducing friction overall will cause the car slide too much in standard circunstances. With this i can have good traction and get some drifitng using this technique.

Here is an example on an actual game, Need For Speed Unbound . You can see how the revs goes up/down constantly due is changing the accel pressure fast to keep the drift.

2 Likes

This is what most FGear users are trying to achieve. I’ve played around with a lot of parameters but the car either loses speed and drops rpm or loses traction completely and spins out. I’d like to see Fgear’s implementation of that video @Davit_Masia @lazybitgames something akin to carx drifting.

1 Like

100% its the entire speed loss which is the issue mainly, I think traction changes based on slip can be achieved but the bottle neck seems to be that speed loss, I’ve tried so many ways to get it to just rev up round cornering but nothing seems to work, be good to see some solution.

higher longitudinal slip will lead to lower lateral friction, this is an inherent behavior of the pacejka tire model. the combination of lateral and longitudinal forces can be configured via the lateral & longitudinal combined slip parameters of the tire model (for tire96 and mf6.1). fgear has accurate implementations of these tire models but tuning tire models is a black art.

tire model is one side of the story though. another important factor is the drivetrain simulation. fgear’s drivetrain is not simulation grade, has some approximations and possible inaccurate parts. this may or may not contribute to the problem. rewriting the drivetrain could only be a subject of a future fgear2.0 project which is currently not planned.

for all those asking for drifting physics I usually say fake it until you make it but that requires the necessary knowledge to modify things around the code and a lot of time & experimentation.

@lazybitgames
Another little problem, maybe a bug, if you start the engine and the transmission is in neutral, the engine does not rev when throttle is pressed.

Did some fast test, very rudimentary, but got something working with my actual setup.
Using only on 1st gear atm. Use them with your setup/formulas/lerps, etc…
You have to use them with Front/Rear wheels conditions.

//
float pAccel = mVehicle->getEngine()->getThrottle();
float aLngAccelF = 1.0f + (0.4f-(0.4 * pAccel)); // Fron - mLngScale
float aLngAccelR = 1.0f + (2.0f-(2.0 * pAccel)); // Rear - mLngScale

float aLatAccelF = 1.0f - (0.4f-(0.4 * pAccel)); // Fron - mLatScale
float aLatAccelR = 1.0f - (0.6f-(0.6 * pAccel)); // Rear - mLatScale

float mDefaultLngFriction = mAxle->getWheelOptions()->getLongitudinalFriction();
mLngFriction = mDefaultLngFriction / mLngScale;
//

There is no min/max, velocity to get optimum friction again and other stuff i mentioned in the previous post, but thats the idea.
Atm is just based on accel pressure but already gives an idea about the behaviour you can achieve.

From the first tests, im pretty sure getting something like in the videos is possible, but yeah it gonna needs lots of trial/error and value tweaks to get a decent one that works well in all scenearios without mess with the overall driving.

@lazybitgames How can I make it so the third person camera doesn’t go through walls

like this https://youtu.be/o2vfPxbHn5Y?si=KO-oc8pdx7oHRo_h

it’s all about doing some scene queries and positioning the camera accordingly.

and how do you do this with fgear as im look in the blueprints and cant find that camera in the actor

you can’t do it with orbit camera unless you do it in C++.

you can try the spring arm approach in that video, it’s quite simple.