2005-04-06: A Honda S2000 fronting the camera on the Swiss-Stroll track.
What's all this then?
This page shows some information about my wheeled vehicle simulator. It has no name as of yet (suggestions welcome!). There's information on the history (which you should skip unless you're masochistic), features, news and screenshots for the reading impaired.
Philosophy
I decided early on in the project, that I'd do as much as possible myself. Basically, everything but the platform dependent code is written by myself:
- The physics model (being the bulk of the work)
- scene graph
- scripting
- head-up display
- numerical solution methods
- 3D graphics including scripted vertex shading
- file handling
- collision detection
- etc....
``Why don't you use existing scene graph libraries, etc?,'' you may ask. My answer would be: ``Because it's all challenging - and fun!''. This was, I get to play with most of the fun stuff, yet I still gain valuable experience using a established APIs.
The platform dependent bits are handled using non-evil libraries such as SDL, OpenGL and OpenAL for portability. My main development platform is Linux - porting to Microsoft Windows was hassle-free the last time I tried. Nowadays, the source should compile with no modifications on both platforms.
- Proper rigid body formulation
- Pacejka tyre model
- Engine map defined by a piecewise linear torque-curve
- Clutch fully modelled (flexible clutch plate, etc)
- Gearbox has inertia and may have any number of gears (in any order and direction)
- Axles have inertia and may twist
- Differentials (open, locked, limited slip). Multiple differentials are possible and hence e.g. 8x8 vehicles, too. Differentials are properly modelled, not hacked, and have internal and external gear ratios and corresponding inertias.
- Suspension. Simplified motion: wheels move straight up and down. Springs and dampers are linear. Wheels have mass and inertia
- Anti-roll bars. Implemented as linear springs
- Gyro torque from turning a spinning wheel is included in the model
- Uses OpenAL (http://www.openal.org/)
- Doppler effect, stereo panning and distance attenuation.
- Uses one voice for the engine, one for each tyre.
2005-07-29: BMW M3 just about to roll over at Carlswood Remix.
2005-07-29: A Honda S2000 Spoon showing the reflection of a nearby tree at Schuchter Raceway, showcasing the real-time environment mapping.
2005-07-29: A Lamborghini LM002 demonstrating excessive body roll at Carlswood Remix.
Old screenshots
2005-04-06: Here are a couple of videos. My apologies to the car and track creators. The primitive graphics engine does not do their work any justice. The videos are meant to display the vehicle physics, not the graphics. [ 2005-04-11: The graphics engine has improved a lot since then. Videos to be updated Real Soon Now(TM)! ]
mountain_thrash_lo.mpeg displays an in-car view of a Honda S2000 rushing up a mountain side (``Swiss-Stroll''). 640x480 pixels, 44 seconds, 7.2 Mb.
mr2_drift.mpeg displays a Toyota MR2 GTi going through a banked right-hand turn, drifting slightly, at ``Ruudskogen'', as seen through a fixed camera. 640x480 pixels, 11 seconds, 3.6 Mb.
- 2005-07-29
- Updated the screenshots. The shader engine still needs plenty of tweaking, so I won't update the videos yet. They're mainly supposed to display the physics engine anyway. Nothing has happened since the last update, since I'm too busy writing my ph.d. thesis.
- 2005-04-11
- Implemented vertex-shading and environment mapping (using cube maps) over the weekend. Must update screenshots and videos soon!
- 2005-04-07
- Implemented object-dependent distance culling. Implemented DOF flags to improve the speed of tyre/road intersection detection.
- 2005-04-06
- Finally got around to implementing replays and video generation. The latter is not fully automated yet, though
- 2005-03-14
- The past few days saw the introduction of Racer tracks in the sim. I also did a texture cache and axis-aligned bounding box / quadtree sorta thing to speed up tyre/ground intersection testing. The car is riding directly on the polygons of the track - no splines. Checking a squillion polygons 1000 times per second for each wheel is currently the main bottleneck. Carlswood is fine at 160 fps, but Early Fall in Norway goes below 10 fps(!) from time to time.
- 2004-12-17
- Graphics were improved by writing some code to load and display .dof files (Ruud van Gaal's file format, used with permission. See http://www.racer.nl/). Textures are not loaded yet.
These are the plans for the immediate future. Long-term plans involve world domination and are not listed here.
- Improve the timing
- Aerodynamics
- Collision handling
- Multitexturing
See http://www.swolff.dk/
Don't write just to tell me this webpage looks dull. I know.
Additional Credits
Honda S2000 and Honda S2000 Spoon by Tops & Pws
Swiss-Stroll track by Tops.
BMW M3 by Mr. Whippy.
Carlswood track by Strat, remixed textures by Mitch.
MR2GTi by Tor Arne Hustvedt.
``Ruudskogen'' track by Tor Arne Hustvedt.
Lamborghini LM002 by Iroker.
Schuchter Raceway by Snowball.
Track/Car creators: If you want me to remove your work from this homepage, let me know.
All copyrights acknowledged.
This page is copyright 2004-2005 Stefan Wolff.