diff --git a/fission/src/systems/physics/PhysicsSystem.ts b/fission/src/systems/physics/PhysicsSystem.ts index 3a0f164f5a..4c5bf336e3 100644 --- a/fission/src/systems/physics/PhysicsSystem.ts +++ b/fission/src/systems/physics/PhysicsSystem.ts @@ -30,6 +30,11 @@ const COUNT_OBJECT_LAYERS = 10 export const SIMULATION_PERIOD = 1.0 / 120.0 const STANDARD_SUB_STEPS = 3 +// Friction constants +const FLOOR_FRICTION = 0.7; +const SUSPENSION_MIN_FACTOR = 0.1; +const SUSPENSION_MAX_FACTOR = 0.3; + /** * The PhysicsSystem handles all Jolt Phyiscs interactions within Synthesis. * This system can create physical representations of objects such as Robots, @@ -68,8 +73,10 @@ class PhysicsSystem extends WorldSystem { new THREE.Vector3(0.0, -2.0, 0.0), undefined ) + ground.SetFriction(FLOOR_FRICTION); this._joltBodyInterface.AddBody(ground.GetID(), JOLT.EActivation_Activate) } + /** * TEMPORARY @@ -449,16 +456,10 @@ class PhysicsSystem extends WorldSystem { wheelSettings.mMaxHandBrakeTorque = 0.0 wheelSettings.mRadius = radius * 1.05 wheelSettings.mWidth = 0.1 - wheelSettings.mSuspensionMinLength = 0.0000003 - wheelSettings.mSuspensionMaxLength = 0.0000006 + wheelSettings.mSuspensionMinLength = radius * SUSPENSION_MIN_FACTOR + wheelSettings.mSuspensionMaxLength = radius * SUSPENSION_MAX_FACTOR wheelSettings.mInertia = 1 - const friction = new JOLT.LinearCurve() - friction.Clear() - friction.AddPoint(1, 1) - friction.AddPoint(0, 1) - wheelSettings.mLongitudinalFriction = friction - const vehicleSettings = new JOLT.VehicleConstraintSettings() vehicleSettings.mWheels.clear() diff --git a/fission/src/systems/simulation/driver/WheelDriver.ts b/fission/src/systems/simulation/driver/WheelDriver.ts index 5758e357ba..627e48b384 100644 --- a/fission/src/systems/simulation/driver/WheelDriver.ts +++ b/fission/src/systems/simulation/driver/WheelDriver.ts @@ -2,6 +2,9 @@ import Jolt from "@barclah/jolt-physics" import Driver from "./Driver" import JOLT from "@/util/loading/JoltSyncLoader" +const LATERIAL_FRICTION = 0.6; +const LONGITUDINAL_FRICTION = 0.8; + class WheelDriver extends Driver { private _constraint: Jolt.VehicleConstraint private _wheel: Jolt.WheelWV @@ -22,6 +25,8 @@ class WheelDriver extends Driver { this._constraint = constraint; this._wheel = JOLT.castObject(this._constraint.GetWheel(0), JOLT.WheelWV); + this._wheel.set_mCombinedLateralFriction(LATERIAL_FRICTION); + this._wheel.set_mCombinedLongitudinalFriction(LONGITUDINAL_FRICTION); } public Update(_: number): void {