PhysX Vehicle wheeled and tracked simulation

Dawn Engine PhysX Vehicle simulates wheeled cars and tracked vehicles on top of PhysX 5 with a raycast suspension model: one dynamic chassis rigid body, per-wheel (or per-road-wheel) ground rays, spring–damper suspension, and tire / track contact forces applied as impulses each physics sub-step.

Maturity: shipped. Provided by the PhysXVehicle Gem; depends on PhysX5, PhysXCommon, and LmbrCentral. After enablement, add chassis (and optional drive / track) components on scene entities that already have a dynamic PhysX rigid body and collider.

It does not use the NVIDIA PhysX Vehicle SDK. Vehicle logic lives in this Gem and drives the chassis through AzPhysics scene queries and impulse APIs.

What problem it solves

Games and industrial sims often need drivable cars, SUVs, trucks, and tanks without building a full jointed suspension or integrating a separate vehicle SDK. PhysXVehicle provides:

  • Data-driven wheeled and tracked setups authored in the editor (Prefab-serializable);
  • Built-in starter templates (Sedan, Off-road, Truck, Tank);
  • Keyboard / gamepad drive helper, plus Lua / Script Canvas control and state buses;
  • Optional wheel-mesh pose sync and track UV travel distances for visuals;
  • Per-vehicle and global debug draw for suspension rays, contacts, and tire forces.

With the Gem disabled, physics behavior matches a PhysX-only project (no vehicle solver).

How it works

Driving input (Drive component / script / AI)
VehicleChassisComponent ──► VehicleSimulation (per fixed physics sub-step)
 │ │
 │ ├─ Drive / steer / gear → wheel or track targets
 │ ├─ Raycast each wheel / road wheel → ground
 │ ├─ Suspension spring–damper (normal)
 │ ├─ Tire slip forces OR anisotropic track friction
 │ └─ ApplyLinearImpulseAtWorldPoint (force × dt)
 ├─ PhysX RigidBody + Collider (mass, CoM, chassis collision)
 └─ Optional: wheel / track visual entities (pose / UV sync)

Two rules run through the Gem:

  1. Chassis is the only rigid body: wheels are not separate physics bodies; they are raycast contact points that push the chassis.
  2. Solve on physics sub-steps, not TickBus: the solver registers OnSceneSimulationStart / Finish so forces stay in sync with PhysX fixed-step simulation (a render frame may run multiple sub-steps).

Mass and center of mass live on the PhysX Rigid Body component. Chassis Center of mass offset on the vehicle config is applied on activate; set total mass on the rigid body to match the intended vehicle (for example ~1400 kg for Sedan).

Quick start (summary)

  1. Enable PhysXVehicle (Project Manager or project.json). Ensure PhysX5 / PhysXCommon are already enabled.
  2. Chassis entity: Dynamic Rigid Body + Collider → PhysX Vehicle Chassis → Template SedanApply Template → set Rigid Body mass ≈ 1400 kg.
  3. Optionally add PhysX Vehicle Drive (WASD / gamepad) or write VehicleControlRequestBus from script / AI.
  4. Enter play mode and verify speed with VehicleStateRequestBus::GetSpeed.

For the full walkthrough and verification checklist, see Getting started.

Handbook chapters

ChapterContents
Getting startedEnable the Gem, assemble a wheeled vehicle, drive it, verify telemetry
Core conceptsRaycast model, chassis-only rule, physics sub-steps, mass / CoM, glossary
Wheeled vehiclesTemplates, drive layouts, Ackermann, anti-roll, tuning tips
Tracked vehiclesTank assembly, differential steering, anisotropic friction, UV travel
ComponentsChassis / Drive / Track fields, services, templates, visual sync
Scripting and controlControl / state / notification buses, Lua sample, Script Canvas
DebuggingDebug draw, vehicle_DebugDraw, ImGui, troubleshooting
ReferencePublic includes, API cheat sheet, limits

Glossary

TermMeaning
ChassisThe single dynamic rigid body that carries mass and receives all vehicle impulses
SuspensionSpring–damper along a ground ray from a local wheel (or road-wheel) anchor
Road wheelProcedural raycast contact point on a tracked vehicle (not a separate rigid body)
Tire loadNormal force from the suspension that scales available grip
Friction circleCombined longitudinal / lateral tire force limited by friction × load
AckermannInner / outer steer angles that share a turn center (Ackermann ratio blend)
Differential steeringTracked turn from left / right track surface-speed difference
Sub-stepOne PhysX fixed-step simulation tick; the vehicle solver runs once per sub-step

You can rely on:

  • Raycast wheeled + tracked simulation on PhysX 5;
  • Editor templates and Prefab-serialized configs (not separate vehicle assets);
  • Impulse-based forces on the fixed-step simulation loop;
  • Scriptable control and state buses (notifications are C++ events).

Do not assume:

  • NVIDIA PhysX Vehicle SDK integration;
  • Soft tires, aero downforce / drag detail, or full clutch / turbo modeling;
  • Pacejka Magic Formula (the field exists but is reserved / unimplemented);
  • Enter / exit vehicle gameplay or interior interaction;
  • Wheel colliders as separate rigid bodies (rays only);
  • Multi-axle truck layouts (the Truck template is a 4-wheel simplification).

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.