Chrono in Unreal, part 6: Boat, line and canopy
After the vehicle has sunk, a boat with a parasail takes over the scene. It runs laps off the coast, keeps the canopy at height with its speed, and at the end it runs up the beach at full throttle while the canopy stands in the land breeze and only sinks onto the sand when the wind dies. None of it is animated. Boat, line, canopy and pilot are bodies in the same Chrono® system as the vehicle. This part explains which decisions in the model matter. The series: part 1 overview, part 2 architecture, part 3 traps, part 4 sound, part 5 picture, part 7 drone, part 9 sequence.
The demo the series is about. The parasail from minute 5:03. On YouTube in 1080p the console is readable.
Forces, not paths
The principle is the same as for the vehicle in part 2: every body is a ChBody, every force is computed from the state in every substep and handed to the body through an accumulator, Chrono integrates. There is no special case for the line and no path curve for the pilot. The effects, sag, jerk, after-swing, heel, come out of the integration; they are not built one by one. In return they cannot be prescribed one by one: the forces have to be chosen so that the solution matches the behaviour of a parasail, and deviations are model errors.
The hull: four points make a boat
The boat is a rigid body with four buoyancy points on the bottom, one fore and one aft on each side, each against the wave function at its own place. A single buoyancy point at the centre of mass would lift and lower the boat, nothing more. Four points give the whole behaviour: roll and pitch on the swell, heel in the turn, and the bow rising under acceleration, because the thrust at the stern acts below the centre of mass and the stern digs in.
The drag is formulated in the hull frame and is strongly anisotropic: little along the hull, almost a hundred times more across it, vertical as damping. This ratio is what makes a boat a boat. It runs straight, and in a turn the stern drifts outwards, because the rudder is only a yaw torque and the lateral force only arises from the drag once the hull sits at an angle to its motion. As with the vehicle in the sand, cornering is not a feature of its own but the result of the forces.
The beaching is the same mechanism in reverse. At the four bottom points a stiff spring against the sand with Coulomb friction acts in addition, wet sand under a sliding hull. The thrust is coupled to the stern’s immersion: as soon as the stern rises out of the water the propeller loses its water and the thrust goes to zero. The boat slides up the beach on its kinetic energy, is slowed by the friction and comes to rest. The condition for “stuck” has to use the speed over ground, under 0.6 metres per second for two seconds. A condition on the total speed never came true, because the swell kept lifting and lowering the hull.
The line: the jerk as a byproduct of physics
The line consists of ten rigid links with spherical joints, from the tow post to the yoke above the pilot. It sags under its weight when the boat throttles back, it snaps taut with a jerk when the boat accelerates again, and the jerk goes through the yoke into the pilot. The jerk is not a programmed effect but a byproduct of the physics: Chrono solves the joint constraints with the forces at both ends, and the impulse at the moment the line goes taut comes out of that solution.
The developer wanted to see the jerk, so on the straights the boat cuts the throttle every 25 seconds for 0.8 seconds. Only on straights, only by day. In a turn the sag was once too long, and the canopy sank down to the water. The model knows no safety margin; the choreography has to stay within the limits in which a real boat is driven.
Ten links are few. For the picture it is enough, because a taut line is nearly a straight line, and for the physics it is enough, because the line’s mass is negligible against boat and canopy. More links would only round the sag and cost computing time. What the line does not have: stretch and air drag. Both would show on a test bench, not in this demo.
The canopy: the direction of the lift decides
Canopy and pilot are one body whose inertia is that of a pendulum, because the canopy hangs nine metres above the hips and that is where the air acts. From the velocity of that point through the air, body velocity minus wind, follow the angle of attack and the sideslip angle, and from those lift, drag and side force with the usual linear coefficients and limits. The drag coefficient is high at 0.45, deliberately: a round canopy is a poor wing, and that is why the line stands at about 35 degrees, not steeper. Take a wing’s coefficient and you get a canopy standing vertically above the boat.
The most important decision in the canopy model is the direction of the lift. The first version tied it to the body’s vertical axis, as for a rigid wing. That has no restoring moment: when the body tips, the lift tips with it, and the canopy hung upside down. The second version puts the lift perpendicular to the airflow in the vertical plane. Then it always points roughly upwards regardless of the body’s attitude, and the pilot hangs under it stably like a pendulum, because every deflection creates a moment back. That is the reason a parasail flies upright by itself, and the model reproduces it.
Added to that a weathervane torque about the vertical axis, so the canopy turns into the airflow. With the wrong sign the canopy flew stably backwards, at 180 degrees, legs first. A sign error in a restoring moment does not produce instability but a stable attitude in the wrong place, and that only shows in the picture.
The control: height through speed
The boat can influence the canopy through one quantity only, its speed. Faster means more airflow means more lift means higher. That is a cascade: a slow outer loop turns the height error into a commanded speed, with the canopy’s sink rate as damping, because without it the canopy pumps with the inertia of the pendulum. A fast inner loop holds the commanded speed with the thrust, with a feed-forward term matching the hull’s drag so that the controller only has to make up the error. The loop has an asymmetry learnt from two landings in the water: it must never brake the boat below the canopy’s speed. When the damping term also acted while climbing, the boat became slower than the canopy, the line sagged, and the canopy was a glider without pull at 7.5 metres per second of air, too little for its weight. It sank, and the boat only took up the slack once it lay in the water. So the damping acts only while sinking, and the commanded speed has a floor that rises with the tailwind and lifts by two metres per second as soon as the line drops under 300 newtons. A slack line on a parasail is not a state but the beginning of a crash. The second source of a slack line was the course: the turns of the racetrack were semicircles of 32 metres radius, shorter than the line. In the turn the boat comes back towards the canopy flying 50 metres behind it, the line sags for five seconds, and the canopy glides down. A parasail boat turns wider than its line is long; the turns now have 45 metres radius on five waypoints, and the line stays taut through the turn. The target height was 25 metres at first, then the pilot’s feet dipped into the water in the turns; now it is 32. On the straights the boat runs a gentle S-curve, “so you can see the physics is right”: rudder, heel, and the canopy swinging after the turn.

The pilot: a pendulum within a pendulum
The pilot was part of the canopy body at first. That looked wrong, because a person does not hang rigidly from the yoke but swings under it. The developer dictated the model in one sentence: “g downwards, Fwind against the direction of travel, excitation by impulse, damping by the harness”. The pilot is now a second body with a spherical joint at the yoke, the centre of mass below it, air drag against the airflow, which gives the slight backward lean in flight, and viscous damping in the joint for the harness. He is excited only through the joint. The jerk of the line accelerates the yoke, the pendulum lags by inertia, that is it swings out backwards, and rings down. The physics computed it that way from the start, the picture did not: the mannequin’s suspension took the pendulum angle with the wrong sign, because in Unreal a positive pitch tips the down axis forward, and in the film the pilot swung forward when the line pulled. The developer saw it in the recording, with the argument from momentum, and the sign was the whole correction.
One point deserves explanation, the mass. The canopy body is tuned for its flight behaviour at 95 kg. A pilot of 80 kg as a body of his own would have destroyed that tuning, because the pendulum would then pull the canopy. The pilot body therefore has 5 kg, and all of its forces, air drag and harness damping, are scaled by the same factor 5/80. The dynamics of the pendulum are those of a person, its reaction on the canopy is nearly zero. That gives a practically one-way coupling without a special rule in the solver.
When the feet dip into the water, a second force against the direction of travel comes in, and it acts low, not at the centre of mass. The water drag goes with the immersed area, and that is built up by body part, feet, shins, thighs, torso, integrated from the bottom up, with the point of action at the centroid of the area. A foot in the water gives a small pull, a shin a large one, and because the point of action lies below the centre of mass, the body swings out backwards. The force is capped, because at ten metres per second with the shins in the water the formula gives many times what a joint or a person can take. The HUD shows the contact: air, water with depth and body part, or ground.
The legs are not a Chrono body but a second pendulum in the picture, lagging the body pendulum with its own frequency and posing the mannequin’s bones. The canopy breathes: it pumps slowly with the airspeed and flutters in gusts, at constant volume. Both are rendering, not physics, and they are declared here. The line between what is computed and what is drawn should be named in every demo.

The extremes, on purpose
The demo does not show the model in cruise only. The developer wanted to see the physical extremes at which a parasail differs from an animation, and the choreography steers into them deliberately. On the straights the boat cuts the throttle, the line sags and snaps taut with a jerk that goes through the yoke into the pilot. By day, as soon as the camera rests on the canopy after the vehicle has sunk, the boat slows linearly on an upwind straight until the pilot’s feet are in the water, holds for three seconds and pulls away again: the surf a boat driver offers his guests. The water drag on the feet, the backward swing of the body and the tightening of the line are the model’s answer, not an effect. And in the turns the canopy swings outwards and loses height because the airflow drops there; how deep it goes is a question of the reserve, which is set through the target height.
So that the limit can be seen, the pilot has a well-being in the HUD and in the log: from the load on his body, the magnitude of acceleration minus gravity, filtered over half a second and taken as the peak of the last two seconds, plus the water contact. Under 1.15 g it reads easy, up to 1.6 fun, up to 2.5 vomit, up to 4 g or with the body in the water call the ambulance, beyond that or with the canopy in the sea jail the captain. The jerk of the line after a sag comes to 2 to 3 g. In the shown run it mostly reads easy and fun, several times vomit in the turns and during the surfing, three times call the ambulance, at 416.2, 453.0 and 480.4 seconds, and once jail the captain, at 418.2 seconds, when the canopy sagged from 26 to 17 metres in the freshening land breeze and was snatched back up at 4 g. The field is a joke with a serious core: it makes visible what the model asks of the pilot, and it reported two landings in the water before they were noticed in the video.
The wind: a kite on a line
After the beaching the boat stands still, and a canopy without airspeed falls. That it stays up nevertheless is due to the wind: with the dusk a land breeze freshens, from the land out to sea, and the canopy on the line of the stranded boat is then a kite. The beach run goes into this wind, the canopy even climbs during it. Nine metres per second were not enough, “the canopy must not fall into the water”, twelve hold it.
It comes down because the wind dies and turns onshore as it does. A sinking kite drifts with the wind, and with the turn it drifts over the boat onto the sand instead of into the shallows behind it. The wind is the only actuator of the staging in this phase; climbing, holding, drifting and touching down follow from the model.
What is missing
The line without stretch and air drag, the canopy without deformation in the physics, the wind as a vector rather than a field. Thirteen more bodies and twelve more joints cost Chrono under a millisecond per frame. For a test bench one would continue at these three places, and the pattern would stay the same.
The drone that keeps canopy and boat in the frame and is itself a Chrono body with four rotors follows in part 7.
Keywords: parasail simulation, multibody simulation tow line, Project Chrono spherical joint chain, boat dynamics buoyancy, pendulum model pilot, water drag model, Chrono::Engine forces, serious gaming, simulation consulting Switzerland, swissEmbedded
A multibody model you can watch? We build models from forces and joints that hold up in the picture and on the test bench.
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.