Chrono in Unreal, Teil 1: Wieso Chrono, welche Effekte, zwei Tage Arbeit

Projekte Software Agentic Engineering

Ein schwerer 4x4 startet am Strand, klettert über eine Düne aus losem Sand, weicht Felsen aus, bremst vor einem Fussgänger, springt über einen Steg ins Meer und schwimmt. Dann läuft er voll und sinkt, ein Boot mit Parasail zieht seine Runden vor der Küste, die Sonne geht unter, der Vollmond kommt hinter der Düne hoch, und das Boot setzt sich mit Vollgas auf den Strand. Nichts davon ist animiert. Jede Bewegung von Fahrzeug, Boot, Leine, Schirm und Drohne kommt aus einer Mehrkörpersimulation, die Räder graben sich wirklich in den Sand, und der Schirm bleibt oben, weil ein Auftriebsmodell das aus der Anströmung so ausrechnet.

Dieser Beitrag ist der erste von neun. Er beantwortet drei Fragen: warum Project Chrono®, welche Effekte in der Demo stecken, und wie das in zwei Tagen entstanden ist. Die weiteren Teile: Teil 2 beschreibt die Architektur der Integration, Teil 3 die Fallen, in die wir getreten sind, Teil 4 den komplett prozeduralen Klang, Teil 5 Spuren, Gischt, Tropfen und den Preis der Bilder, Teil 6 das Modell von Boot, Leine und Schirm, Teil 7 die Drohne als geregelter Körper, Teil 8 das Licht der Nacht, Teil 9 die Sequenz als Phasenprogramm.

Der ganze Durchlauf, 9 Minuten 28 Sekunden, mit dem prozeduralen Klang aus Teil 4. Split Screen: links Hauptkamera mit Telemetrie, rechts oben Fahrersicht, rechts unten Drohne. Auf der Düne die Differentialsperren, ab Minute 3:30 das Finale: Sinken, Drohnenflug, Abend, Parasail, Mond, Strandung. Auf YouTube in 1080p ist die Konsole lesbar.

Die Fahrersicht am Grund: die Kugelfische umkreisen das gesunkene Fahrzeug und blähen sich vor der Scheibe auf

Wieso Chrono

Unreal Engine® hat eine Physik, und für Spiele ist sie gut. Für Fahrdynamik, auf die man eine Aussage stützen will, reicht sie nicht: kein Antriebsstrang mit Wandler und Wellenträgheiten, keine Reifenmodelle mit Schlupfkennlinien, und vor allem kein Boden, der nachgibt. Ein Reifen auf Sand ist in einer Spieleengine ein Reifen auf einer harten Fläche mit weniger Reibung. Das sieht ähnlich aus und rechnet etwas anderes.

Project Chrono ist eine Mehrkörperbibliothek aus dem akademischen Umfeld, Open Source, mit einem Fahrzeugmodul Chrono::Vehicle®. Dort steckt, was uns fehlte: Motorkennfeld, Drehmomentwandler, Automatikgetriebe, Achsen mit Federung, Reifenmodelle, und ein verformbarer Boden nach Bekker und Janosi, das Soil Contact Model (SCM). Die Bodenparameter sind physikalische Grössen, die man mit einem Bevameter am realen Untergrund messen kann. Genau das ist der Punkt: eine Simulation, die man kalibrieren kann, statt einer, die man nur hübsch einstellen kann.

Chrono kann durchaus visualisieren, mitgeliefert werden Viewer auf Basis von Irrlicht und VSG. Das reicht für Entwicklung und Debug, ist aber kein Ersatz für eine produktive Rendermaschine mit Materialien, Beleuchtung, Kamerasystem und Asset-Pipeline. Genau deshalb wollten wir die Physik in Unreal Engine sehen: eine ausgereifte C++-Engine mit sehr guter Renderqualität für Simulationen jeglicher Art. Eine offizielle Verbindung zwischen Chrono und Unreal gibt es nicht, also haben wir sie als eigenes Plugin in C++ gebaut. Die Arbeitsteilung ist strikt: Chrono rechnet Fahrzeug, Reifen, Sand, Steine, Getriebe, Boot, Leine, Schirm und Drohne mit festen Zeitschritten von 2 ms. Unreal zeigt die Zustände an und rechnet an der Dynamik nichts mit.

Die Demo

Der Schauplatz ist eine erfundene Insel von einem Kilometer Kantenlänge, aus einer Höhenkarte, die ein Python Skript berechnet. Wer sich dabei an die Whitsunday Islands erinnert fühlt, liegt vermutlich nicht falsch. Auf der Insel liegt ein Korridor aus verformbarem Sand, 500 mal 924 Meter mit 15 cm Knotenabstand, und darauf steht der Parcours: Sandbank, nasser Strand, ein Feld aus 420 Kopfsteinen, Buckelpiste, Sprung, die 36 Meter hohe Düne mit 160 kleinen Steinen und Felsbrocken, der Nordstrand mit Spülsaum, ein Steg mit hochgezogenem Ende und ein 4.5 Meter tiefes Becken davor. Vor der Küste dreht von Anfang an ein Boot seine Runden und zieht einen Parasail, in Sichtweite und in Hörweite, sobald es nahe vorbeifährt.

Ein Autopilot fährt ein Phasenprogramm ab, damit jeder Durchlauf reproduzierbar ist: Start mit Anlasser, Parcours, Düne, Drift, Ballspiel am Strand mit Notbremsung vor dem Läufer, Steg, Sprung, Schwimmen. Sobald das Fahrzeug im Wasser liegt, geht der Motor aus, der Rumpf läuft voll und das Fahrzeug sinkt in dreissig Sekunden. Ein Kugelfisch kreist um das Wrack und schaut ab und zu durch die Windschutzscheibe. Die Drohne fliegt einmal um das Auto, steigt und macht bei Tag ihren Tiefflug zurück zum Startpunkt auf dem Dünenkamm. Sobald sie oben ist, beginnt der Abend: Die Sonne sinkt, das Boot schaltet Seitenlichter, Scheinwerfer und Suchscheinwerfer ein, die Drohne stürzt sich vom Kamm zum Schirm hinunter und kreist um Schirm und Boot. Der Mond kommt hinter der Düne hoch, eine Landbrise frischt auf, das Boot fährt mit Vollgas gegen den Wind auf den Strand, gleitet über den Sand und bleibt stecken. Die Brise flaut ab und dreht auflandig, der Schirm treibt über das Boot und sinkt auf den Sand. Die Drohne fliegt mit 15 Prozent Akku zurück über das Wrack, geht bei 10 Prozent in die Notlandung, setzt auf dem Wasser auf und treibt dort, das Blinklicht noch an, im Suchscheinwerfer des gestrandeten Boots. Die Kugelfische ziehen ein letztes Mal an der Scheibe vorbei, bei 8 Prozent schaltet die Drohne ab, Ende. Alles im Split Screen: links die Hauptkamera mit der Telemetrie, rechts oben die Fahrersicht, rechts unten die Drohne.

Der Aufstieg auf die Düne aus der Drohne: Steine, Felsbrocken, die Spur im Sand

Welche Effekte

Es lohnt sich, sauber zu trennen, was gerechnet wird und was inszeniert ist. Eine Demo verspricht schnell mehr, als sie rechnet.

Aus Chrono, unverändert:

Auf der Düne unter 8 km/h: Mitte und Hinterachse gesperrt, die Vorderachse offen, das rechte Vorderrad mit 300 Prozent Schlupf

Eigene Physik im Plugin, als Kräfte zurück in Chrono:

Darstellung, aus den physikalischen Grössen abgeleitet:

Die Drohne kreist um den Parasail, die Leinen laufen zum Joch, der Pilot hängt im Brustgurt

Inszenierung:

Klang: komplett prozedural, keine einzige Audiodatei. Motor, Anlasser, Sand, Federung, Brandung, Eintauchen, Rotoren und der Aussenborder des Bootes entstehen aus Oszillatoren und Rauschgeneratoren, die an den physikalischen Grössen hängen. Nach dem Untergang sitzen die Ohren beim Piloten am Schirm. Das ist Teil 4.

Nachts aus der Drohne: der Suchscheinwerfer des Bootes hält auf den Schirm, rote und grüne Laterne und der Scheinwerferfleck auf dem Wasser

Zwei Tage Arbeit

Der erste Tag ging in die Umgebung: Toolchain, Chrono 10 aus den Quellen als Shared Library bauen, ein Test ohne Unreal, in dem das Fahrzeug die Düne auf SCM Sand hochkommt. Am Abend des ersten Tages kam die Insel als Höhenkarte dazu, am Morgen des zweiten Unreal Engine selbst auf die Maschine. Fahrzeug, Sand, Wasser, Parcours, Klang, Drohne, Boot, Parasail und die Nacht entstanden an diesem zweiten Tag.

Gearbeitet wurde als Paar, mit klarer Rollenteilung. Der Ingenieur brachte die Modellphysik und die Praxiskenntnisse mit, die eine kalibrierte Simulation von einer hübschen Animation trennen, und formulierte daraus die Anforderungen an das System. Beispiele: Der Auftrieb des Schirms ist geschwindigkeitsabhängig, das Boot regelt die Höhe über die Fahrt und nicht über die Kamera, die Leine zum Piloten hängt an der Brust und nicht am Sitz, die Nacht kommt aus Lichtquellen und nicht aus einem Filter, Seitenlichter sind rot backbord und grün steuerbord und decken einen 112.5-Grad-Sektor mit sauberem Schluss achterlich. Ein Banner hinter dem Schirm sah albern aus und flog wieder raus. Solche Vorgaben stammen nicht aus einem Prompt, sondern aus Physik und Praxis auf dem Wasser. Der Agent, Claude™ Code, hat aus diesen Anforderungen den C++-Code, die Materialien und die Blueprints gebaut, kompiliert, gestartet, Screenshots gezogen, die Telemetrie gelesen und Vorschläge gemacht. Am Modell gemessen wurde entschieden, was blieb.

Ein paar Zahlen, die die Tage beschreiben:

Die Zeitfresser waren nicht die physikalischen Modelle. Wasser, Anschläge, Bodenparameter, Leine und Schirm waren in Minuten formuliert. Die Zeit ging in Vorzeichen, Zeitbasen, Werkzeugketten und in Details, die nur im laufenden Bild sichtbar sind: eine Kamera, die über Bodenwellen stottert, eine Drohne, die durch den Berg fliegt, ein Motor, dessen Stopp nie ausgewertet wurde. Genau die Klasse von Problemen, die aus dem Zusammenspiel entsteht: der Agent startet die Anwendung selbst und liest die Telemetrie, der Ingenieur bewertet im laufenden Bild an dem, was das Modell verlangt. Ziel war eine hohe Automation, denn nur so waren zwei Tage überhaupt möglich.

Erfreulich sind die moderaten Anforderungen an die Hardware: ein normaler Arbeitsplatzrechner reicht, Ryzen® 5 7600, 32 GB, NVIDIA® GeForce RTX® 5070, Windows® 11. Unreal Engine 5.8.2, Chrono 10.0, Visual Studio® 2026.

Das schwimmende Fahrzeug aus der Drohne, kurz vor ihrem Abflug

Wozu das gut ist

Die Demo ist eine Spielwiese, der Aufbau darunter nicht. Wer eine Steuerung für ein Fahrzeug, eine Baumaschine, ein Boot oder einen mobilen Roboter entwickelt, braucht früh eine Umgebung, in der Regelalgorithmen gegen eine glaubwürdige Dynamik laufen, mit Sensoren, die ein Bild sehen, bei Tag und bei Nacht. Chrono liefert die Physik, die man mit Messwerten kalibrieren kann, Unreal das Bild dazu. Die Bodenparameter in der Demo sind Literaturwerte. Mit Messungen vom echten Untergrund rechnet dasselbe Modell Dinge, auf die man eine Auslegung stützen kann.

Wie die Integration aufgebaut ist, steht in Teil 2.

Schlüsselwörter: Project Chrono Unreal Engine, Chrono::Vehicle, Fahrzeugsimulation Sand, Soil Contact Model, Mehrkörpersimulation Unreal, verformbarer Boden, Fahrsimulation Wasser, Parasail Simulation, Drohne Lageregler, Agentic Engineering, Serious Gaming, Simulation Beratung Schweiz, swissEmbedded

Braucht eure Steuerung eine Umgebung zum Üben? Wir bauen Simulationsumgebungen, in denen Regelalgorithmen gegen kalibrierte Physik laufen, lange bevor der erste Prototyp auf dem Prüffeld steht.

Kontaktieren Sie uns →

Unreal® und Unreal Engine® sind Marken oder eingetragene Marken von Epic Games, Inc. in den USA und anderswo; diese Artikel sind von Epic Games weder unterstützt noch geprüft. Project Chrono ist ein Open-Source-Projekt der University of Wisconsin-Madison und des Politecnico di Milano unter BSD-3-Lizenz.