Chrono in Unreal, part 1: why Chrono, which effects, two days of work

Projekte Software Agentic Engineering

A heavy 4x4 starts on the beach, climbs a dune of loose sand, dodges boulders, brakes for a pedestrian, jumps off a jetty into the sea and floats. Then it floods and sinks, a boat towing a parasail runs its laps off the coast, the sun goes down, the full moon rises behind the dune, and the boat runs itself up the beach at full throttle. None of it is animated. Every movement of the vehicle, the boat, the line, the canopy and the drone comes out of a multibody simulation, the wheels really dig into the sand, and the parasail stays up because a lift model computes that from the airflow.

This post is the first of nine. It answers three questions: why Project Chrono®, which effects are in the demo, and how it came together in two days. The other parts: part 2 describes the architecture of the integration, part 3 the traps we walked into, part 4 the fully procedural sound, part 5 tracks, spray, drops and the price of the pictures, part 6 the model of boat, line and canopy, part 7 the drone as a controlled body, part 8 the light of the night, part 9 the sequence as a phase programme.

The full run, 9 minutes 28 seconds, with the procedural sound from part 4. Split screen: main camera with telemetry on the left, driver’s view top right, drone bottom right. The differential locks on the dune, from minute 3:30 the finale: sinking, drone flight, evening, parasail, moon, beaching. On YouTube in 1080p the console is readable.

The driver's view on the bottom: the pufferfish circle the sunk vehicle and puff up in front of the windscreen

Why Chrono

Unreal Engine® has physics, and for games it is good. For vehicle dynamics you want to base a statement on, it is not enough: no drivetrain with a torque converter and shaft inertias, no tyre models with slip curves, and above all no ground that gives way. A tyre on sand is, in a game engine, a tyre on a hard surface with less friction. It looks similar and computes something else.

Project Chrono is a multibody library from the academic world, open source, with a vehicle module, Chrono::Vehicle®. It has what we were missing: an engine map, a torque converter, an automatic gearbox, axles with suspension, tyre models, and a deformable ground after Bekker and Janosi, the Soil Contact Model (SCM). The soil parameters are physical quantities you can measure on real ground with a bevameter. That is the point: a simulation you can calibrate, rather than one you can only tune to look nice.

Chrono can visualise: viewers based on Irrlicht and VSG ship with it. That is enough for development and debugging, but no substitute for a production render engine with materials, lighting, a camera system and an asset pipeline. That is exactly why we wanted to see the physics in Unreal Engine: a mature C++ engine with very good render quality for simulations of any kind. There is no official bridge between Chrono and Unreal, so we built one as our own plugin in C++. The division of labour is strict: Chrono computes the vehicle, tyres, sand, stones, gearbox, boat, line, canopy and drone with fixed time steps of 2 ms. Unreal displays the states and contributes nothing to the dynamics.

The demo

The setting is an invented island one kilometre on a side, from a height map computed by a Python script. If it reminds you of the Whitsunday Islands, you are probably not wrong. On the island lies a corridor of deformable sand, 500 by 924 metres with 15 cm node spacing, and on it the course: sandbank, wet beach, a field of 420 cobbles, whoops, a jump, the 36 metre dune with 160 small stones and boulders, the north beach with its wash, a jetty with a kicked-up end and a 4.5 metre deep pool in front of it. Off the coast a boat runs its laps from the start, towing a parasail, in sight and in earshot whenever it passes close.

An autopilot runs a phase programme so that every run is reproducible: start with the starter motor, course, dune, drift, ball game on the beach with an emergency stop for the runner, jetty, jump, floating. Once the vehicle is in the water the engine goes off, the hull floods and the vehicle sinks in thirty seconds. A pufferfish circles the wreck and now and then looks in through the windscreen. The drone flies one lap around the car, climbs and makes its low flight back to the start point on the dune crest, by daylight. Once it is up there the evening begins: the sun sinks, the boat switches on its side lights, headlights and searchlight, the drone dives from the crest down to the parasail and laps the canopy and the boat. The moon rises behind the dune, a land breeze freshens, the boat runs at full throttle into the wind onto the beach, slides over the sand and sticks. The breeze dies and turns onshore, the parasail drifts over the boat and comes down on the sand. The drone flies back over the wreck at 15 percent battery, goes into a forced landing at 10 percent, touches down on the water and floats there, strobe still blinking, in the beached boat’s searchlight. The pufferfish pass the windscreen one last time, at 8 percent the drone shuts down, the end. All of it in split screen: the main camera with telemetry on the left, the driver’s view top right, the drone bottom right.

The climb up the dune from the drone: stones, boulders, the track in the sand

Which effects

It pays to separate cleanly what is computed and what is staged. A demo quickly promises more than it computes.

From Chrono, unchanged:

On the dune under 8 km/h: centre and rear locked, the front open, the front right wheel at 300 percent slip

Own physics in the plugin, fed back into Chrono as forces:

Presentation, derived from the physical quantities:

The drone laps the parasail, the lines run to the yoke, the pilot hangs in a chest harness

Staging:

Sound: fully procedural, not a single audio file. Engine, starter motor, sand, suspension, surf, water entry, rotors and the boat’s outboard arise from oscillators and noise generators tied to the physical quantities. After the sinking the ears sit with the pilot on the parasail. That is part 4.

At night from the drone: the boat's searchlight holds on the canopy, red and green lanterns and the headlight patch on the water

Two days of work

The first day went into the environment: toolchain, building Chrono 10 from source as a shared library, a test without Unreal in which the vehicle gets up the dune on SCM sand. On the evening of the first day the island came as a height map, on the morning of the second Unreal Engine itself went onto the machine. Vehicle, sand, water, course, sound, drone, boat, parasail and the night came together on that second day.

The work was done as a pair, with a clear division of roles. The engineer brought the model physics and the field knowledge that separate a calibrated simulation from a nice-looking animation, and turned that into the system’s requirements. Examples: the canopy’s lift depends on airspeed, the boat regulates the canopy’s height through its own speed and not through the camera, the line to the pilot hangs on the chest and not on a seat, the night comes from light sources and not from a filter, side lights are red to port and green to starboard and cover a 112.5-degree sector that ends cleanly aft. A banner behind the canopy looked silly and went out again. Requirements like these do not come from a prompt but from physics and hands-on practice on the water. The agent, Claude™ Code, turned those requirements into the C++ code, materials and blueprints, built, compiled, launched, took screenshots, read the telemetry and made proposals. What survived being measured against the model stayed.

A few numbers that describe the days:

The time sinks were not the physical models. Water, stops, soil parameters, line and canopy were formulated in minutes. The time went into signs, time bases, toolchains and details that are only visible in the running picture: a camera that stutters over whoops, a drone that flies through the hill, an engine whose stop was never applied. Exactly the class of problems that comes out of the interplay: the agent launches the application itself and reads the telemetry, the engineer judges in the running picture against what the model demands. High automation was the goal, because only that made two days possible at all.

Pleasingly the hardware requirements stay moderate: an ordinary workstation is enough, Ryzen® 5 7600, 32 GB, NVIDIA® GeForce RTX® 5070, Windows® 11. Unreal Engine 5.8.2, Chrono 10.0, Visual Studio® 2026.

The floating vehicle from the drone, shortly before its departure

What this is good for

The demo is a playground, the structure underneath is not. Anyone developing a controller for a vehicle, a construction machine, a boat or a mobile robot needs, early on, an environment in which control algorithms run against credible dynamics, with sensors that see a picture, by day and by night. Chrono provides physics you can calibrate with measurements, Unreal the picture to go with it. The soil parameters in the demo are literature values. With measurements from the real ground the same model computes things you can base a design on.

How the integration is built is in part 2.

Keywords: Project Chrono Unreal Engine, Chrono::Vehicle, vehicle simulation sand, Soil Contact Model, multibody simulation Unreal, deformable soil, driving simulation water, parasail simulation, drone attitude controller, agentic engineering, serious gaming, simulation consulting Switzerland, swissEmbedded

Does your controller need an environment to practise in? We build simulation environments in which control algorithms run against calibrated physics, long before the first prototype stands on the test field.

Contact us →

Unreal® and Unreal Engine® are trademarks or registered trademarks of Epic Games, Inc. in the United States of America and elsewhere; these articles are neither endorsed nor reviewed by Epic Games. Project Chrono is an open-source project of the University of Wisconsin-Madison and Politecnico di Milano under the BSD-3 licence.