Erstellen einer grundlegenden Fahrzeugsimulationsumgebung in Unity 3D

Unity 3D ist eine Open Source Game Engine, die hauptsächlich zur Entwicklung von Videospielen und Simulationen für Computer, Konsolen und Mobilgeräte verwendet wird. Dieser Artikel konzentriert sich auf die virtuelle Fahrzeugsimulation, deren Nachfrage mit den jüngsten Fortschritten in der selbstfahrenden Autoindustrie stetig gewachsen ist. Das Erstellen einer Simulationsumgebung war Teil meines Praktikums bei LIST, Luxemburg. Das Projekt MADSAV konzentriert sich auf die Bewertung der Fahrerfähigkeiten im Vorfeld von Übergabesituationen.

Teil 1: Schnittstelle
Unity 3D-Startbildschirm (mit freundlicher Genehmigung von Project MADSAV)

Das Beste an Unity 3D ist der vereinfachte Ansatz. Es verfügt über eine umfangreiche Dokumentation mit Skriptreferenz und Tutorials mit Video- und Artikelinhalten.

Wenn Sie ein Anfänger von Unity 3D sind, empfehle ich dringend, mit dem Modellieren eines Roll-a-Ball-Spiels zu beginnen. Mit diesen 8-stufigen Video-Tutorials können Sie sich schnell mit dem Startbildschirm aus Hierarchie, Inspektor, Szene, Umgebung, Kamera, Transformationen, Kollidern usw. vertraut machen und grundlegende Skripte in C # erlernen.

Teil 2: Assets hinzufügen

Unity verfügt über einige weit verbreitete eingebaute Standard-Assets, die aus Partikelsystemen, Effekten, Materialien, 2D-Objekten usw. bestehen. Der Asset Store von Unity ist eine Bibliothek mit über 15.000 kostenlosen und kostenpflichtigen Assets.

Aufbau der Umwelt: Für die Fahrzeugsimulation ist es einfach, eine Karte mit Grundkenntnissen über Gelände, Straßenmaterialien, Vermögenswerte und einige C # -Codes zu erstellen.

Grundlegende Simulationsumgebung in Unity 3D (mit freundlicher Genehmigung von MADSAV Project at LIST)

Bauen Sie das Gelände und wählen Sie die Grundmaterialien aus. Die Straßenmaterialien, Gebäude, Verkehrsschilder usw. können leicht im Warenhaus gefunden werden. Sobald Sie sie importiert haben, platzieren Sie sie auf dem 3D-Gelände.

Eine alternative Möglichkeit, die Straßenumgebung manuell zu entwickeln, ist die prozedurale Generierung. Ich habe Road Architect verwendet, ein freies und quelloffenes Straßenbausystem, mit dem Straßen, Fahrspuren, Profile, Brücken, Ampeln und vieles mehr effizient gebaut werden können. Das Beste an diesem System ist, dass es eine Straßenumgebung in weniger als 30 Minuten erstellen kann. Die Tutorials finden Sie hier.

Verwenden von Road Architect für die schnelle Erstellung von Straßen / Tracks

Hier und hier gibt es noch einige weitere Systeme zur Erzeugung von Straßen. Map-ity verwendet reale Daten zur Erstellung von Karten.

Erstellen eines Fahrzeugs: Sie können ein Fahrzeugsteuerungs-Asset aus dem Asset Store importieren oder mithilfe einer 3D-Modellierungssoftware (wie Blender, TurboSquid) und einer Physik-Engine (wie Fahrzeugphysik, Vamos Open Source usw.) ein eigenes Asset entwickeln.

Ich habe RCC Car Controller wegen seiner Optimierungsmöglichkeiten verwendet und es gibt auch eine Packung Autos zur Auswahl. Das Asset hat sich im Laufe der Jahre mit detaillierten 3D-Modellen und einer Vielzahl von Optionen für die Fahrzeugphysik weiterentwickelt.

Die Physik-Engine für RCC ist so konstruiert, dass die Parameter für Federung, Bremsen, Lenkung und Motor mit zusätzlichen Optionen für Änderungen des ABS, der Traktionskontrolle und der Reifenreibungskoeffizienten geändert werden können, um Rutschgefahr oder andere gefährliche Bedingungen zu modellieren. Dies ist im Inspector integriert, sodass Sie keine zusätzlichen Skripte dafür benötigen.

Hier finden Sie einige andere Fahrzeugsteuerungen / Rennsets:

Teil 3: Latenz

Sobald Sie Umgebung und Fahrzeuge hinzugefügt haben, werden Sie anfangen, Spielverzögerungen zu erleben. Unity hat einen eingebauten Profiler, der sich um Ihre Spielverzögerungen kümmert. Auf dem Profiler können Sie die CPU- / GPU-Auslastung, den Arbeitsspeicher, das Rendering, die Physik usw. überwachen, um festzustellen, welcher Teil Ihrer Simulationsumgebung verzögert ist, und die Frames pro Sekunde (FPS) verringern. Der eingebaute Profiler kostet zwar etwas, ist aber für normale Simulationsumgebungen gegen externe Profiler empfehlenswert.

Unitys Profiler zur Spielüberwachung

Denken Sie daran: Durch das Hinzufügen vieler Umgebungsvariablen werden die Spielverzögerungen erhöht. Die Stapelverarbeitung ist eine weitere Methode, mit der Verzögerungen in einer größeren Simulationsumgebung verringert werden.

Teil 4: Erweiterungen

Assets zu Lenkrad / Joystick / Steuerungen für Fahrzeugsimulationsumgebungen sind im Asset Store verfügbar. Ich habe Logitech SDK für die Integration von Logitech-Produkten verwendet.

Zusätzlich habe ich Steam VR Plugin verwendet, um eine VR-Kamera für eine breite Cockpit-Ansicht für meine Simulationen hinzuzufügen. Ich habe auch mehrere Bildschirm-Setups (Rückansicht auf einem separaten Bildschirm) ausprobiert, um die Implementierung hier zu überprüfen.

In Unity erstellte grundlegende Simulationsumgebungen können auch als Basis für Behavioral Cloning-Projekte dienen. Ein gutes Beispiel ist das Klonen von Verhaltensweisen in Udacity.

Eine der virtuellen Umgebungen, die ich in Unity erstellt habe