Sådan bygger du et grundlæggende køretøjssimuleringsmiljø i Unity 3D

Unity 3D er en open source game engine, der primært bruges til at udvikle videospil og simuleringer til computere, konsoller og mobile enheder. Denne artikel fokuserer på virtuel køretøjssimulering, som efterspørgslen efter har været stadigt voksende med de nylige fremskridt inden for den selvkørende bilindustri. At opbygge et simuleringsmiljø var en del af mit praktikophold hos LIST, Luxembourg. Projekt MADSAV fokuserer på at evaluere førerens færdigheder i forudgående overleveringssituationer.

Del 1: Interface
Unity 3D-startskærm (høflighed: Project MADSAV)

Den bedste del om Unity 3D er dens forenklede tilgang. Det har omfattende dokumentation med scriptingreference og tutorials med video- og artikelbaseret indhold.

Hvis du er nybegynder til Unity 3D, vil jeg virkelig anbefale at begynde at lære ved at modellere roll-a-ball spil. Denne 8-trins videotutorials vil hurtigt gøre dig komfortabel med startskærmen, der består af hierarki, inspektør, scene, miljø, kamera, transformationer, colliders osv. Og lære grundlæggende scripts i C #.

Del 2: Tilføjelse af aktiver

Unity har nogle vidt anvendte indbyggede standardaktiver, der består af partikelsystemer, effekter, materialer, 2D-objekter osv., Og Unity's aktivlager er et bibliotek, der indeholder 15 k + gratis og betalte aktiver.

Opbygning af miljøet: For køretøjssimulering er det let at udvikle et kort med grundlæggende kendskab til terræn, vejmaterialer, aktiver og nogle C # -koder.

Grundlæggende simuleringsmiljø i enheds 3D (høflighed: MADSAV-projekt på LIST)

Byg terrænet, og vælg basismaterialerne. Vejmaterialer, bygninger, vejskilte osv. Kan let findes i aktivbutikken. Når du importerer dem, skal du placere dem i 3D-terrænet.

En alternativ måde at manuelt udvikle vejmiljø er ved proceduregenerering. Jeg brugte Road Architect, som er et frit og åbent kildekonstruktionssystem, der er effektivt til at bygge veje, baner, ekstruderinger, broer, trafiklys og meget mere. Den bedste del af brugen af ​​dette system er, at det kan bygge et vejmiljø på mindre end 30 minutter. Du kan finde dets tutorials her.

Brug af Road Architect til hurtig vej / spor generation

Nogle flere vejgenereringssystemer kunne findes her og her. Map-ity bruger data fra den virkelige verden til generering af kort.

Oprettelse af et køretøj: Du kan importere et køretøjets controller-aktiv fra aktivbutikken eller udvikle dit eget ved hjælp af en 3D-modelleringssoftware (som Blender, TurboSquid) og en fysikmotor (som Vehicle Physics, Vamos Open Source osv.)

Jeg brugte RCC Car Controller på grund af dets finjusteringsevne, og det leveres også med en pakke biler at vælge imellem. Aktivet har udviklet sig i årenes løb med detaljerede 3D-modeller og en række forskellige muligheder for bilfysik.

Fysikmotoren til RCC er bygget på en sådan måde, at ophæng, bremser, styring og motorparametre kan ændres med yderligere muligheder for ændringer i ABS, trækkontrol og dækfriktionskoefficienter til model glatte eller andre farlige forhold. Dette er integreret i inspektøren, så du ikke har brug for yderligere scripts til det.

Du kan finde nogle andre køretøjskontrollere / racersæt her:

Del 3: Latency

Når du har tilføjet miljø og køretøjer, vil du begynde at opleve spilforsinkelser. Unity har en indbygget profiler, der tager sig af dine spilforsinkelser. På profilen kan du overvåge din CPU / GPU-belastning, hukommelse, gengivelse, fysik osv. For at registrere, hvilken del af dit simuleringsmiljø, der hænger og reducerer rammer per sekund (FPS). Den indbyggede profiler koster sig selv at tage en vis belastning, men det er værd imod eksterne profiler i almindelige simuleringsmiljøer.

Unity's Profiler til spilovervågning

Husk: Hvis du tilføjer mange miljøvariabler, tilføjes det til spilforsinkelser. Batching er en anden metode, der bruges til at reducere forsinkelser i et større simuleringsmiljø.

Del 4: Tilføj ons

Aktiver relateret til ratt / joystick / controllere til køretøjssimuleringsmiljøer er tilgængelige i aktivbutikken. Jeg brugte Logitech SDK til integration af Logitech-produkter.

Derudover brugte jeg Steam VR Plugin til at tilføje et VR-kamera til en bred cockpitvisning til mine simuleringer. Jeg har også prøvet flere skærmopsætninger (Set bagfra på en separat skærm) til implementeringskontrol her.

Grundlæggende simuleringsmiljøer oprettet i Unity kan også tjene som en base for opførselskloningsprojekter. Et godt eksempel er Udacity's Behavioural Cloning.

Et af de virtuelle miljøer, jeg oprettede i Unity