Support for pit lanes is now provided. Collisions with the ends of the pit wall are detected. Bugs in the general handling of collisions have been fixed. Another bug that caused the wheels to stop spinning when they leave the ground was also fixed. One symptom of this problem was loss of control when hitting the kerbs in the F1 car.
I consider the pit lanes to be done now. That's the reason for bumping the middle number. The asymptotic march to 1.0 continues!Version 0.5.6 has a few bug fixes and some progress on pit lanes. Silverstone, Imola, Albert Park, Interlagos, Laguna Seca, Bahrain, and Spa tracks have been updated. This release is a checkpoint before I start doing some maintenance of the design.
I've given the website a new look. It's not great but the fuzzy pastel look of the old site was really starting to bug me.
I've also changed some other things that bugged me. I switched the tests from CppUnit to Boost.test. I've found the Boost test framework much more pleasant. I also moved the header files from their own tree to the same directories as the source files. The result of getting rid of these 'buggers' is that I actually feel like working on Vamos again. I've got a few more in mind that I'd like to take care of. See the Detour section of the timeline for details.You can now specify a background image when using the map view. One trick you can do with this is to grab a satellite image of a track and edit the track definition file to make it match. It's helpful to make the track width very small and try to get the Vamos track to run down the center of the track in the image.
So far I've adjusted Suzuka and Magny-Cours using Google Local's images. Unfortunately, Google's terms of service don't permit me to distribute the images.I was seeing a few nagging problems with the skew calculations, so I decided to fix it once and for all. I wrote a little paper with lots of equations and some pictures that goes through the transformations from world to track coordinates and back. Then I updated the code to match the paper. So far, I haven't found anywhere where the code misbehaves.
The paper and the Lisp code I used to generate the figures are available from the Documentation page. It's unpolished and probably not very interesting, but if you're curious, have a look. One side-effect of this work is that the definition of skew now has the opposite sign. Sorry, but it makes the equations prettier:)I just noticed that you can get now get Vamos through Gentoo's Portage package manager. As far as I know, this is the first disribution to carry Vamos.
Rendering of sharp turns can be improved by providing a "skew" parameter in the track definition file. What does that mean? Well, let's say you want a sharp turn. You set the radius (that is, the radius of the centerline of the track) to something like 10 m so that the radius at the inside of the turn is just a few meters. The problem is that the radius a few meters to the inside of that is zero, and at the railing it's negative. This leaves the inside railing jutting out onto the track. You can't run into it, but it's distracting, to say the least.
The skew parameter distorts the curve so that the dependence of the radius on distance from centerline is scaled. As a result of this distortion, the ends of the segments that border the distorted curve must be slanted, or, you guessed it, skewed. I intend to document the math involved in transforming to and from skewed track segments. I found "to" part to be pretty straightforward. The "from" was responsible for most of the five-month gap between releases. For now, check out the screenshots to get an idea of what skew does. While I was stuck on this skew business, I was able to put some bugs and omissions behind me. Rear views are now rendered while panning. When I first implemented rear views, I thought that it would be too expensive to generate the masks on the fly. It's not. That'll teach me to guess about performance. The panned views aren't quite correct. This can be seen by thinking about what elements in the rear view would be parallel to elements in the front view. I think it looks fine as is, so I'm not planning to do anything about it. Cars are reloaded without losing textures or affecting frame rate. When the car was reloaded, it used the textures that were already loaded. Then those textures were deleted. Oops. Texture caching is a little smarter now. The performance loss was due adding new rear views without getting rid of the old ones. Multiple cameras can be specified in the track definition files. Definition files outside of the installation directories can be specified on the command line by giving full path names.This release includes optimizations for faster startup and, when multiple cars are used, higher frame rates. The Istanbul grand prix curcuit has been added. Support for CppUnit tests has been added. If you have CppUnit on your system the tests will be built and run unless you disable them at configure time. Right now there are only a few tests, but there will be more in future releases.
Support for multiple independent cars was added. Project files were added and minor code changes were made for compiling with Visual C++. Windows binaries are now available.
Four and a half months. Wow. I had been fighting with my system for a while. Ended up installing a clean Gentoo. Happy now:) This release is a baby step, but I thought it would be good to get something out. Here are the highligts. The Spa and Shanghai tracks have been updated. The 1967 Formula One car has been rebuilt. Changes were made for compiling with CygWin.
I've done all I plan to do with the car model for a while. That's the reason for upping the middle number. Here are the most recent changes. Moving suspension parts can now be rendered. A problem with the mirror views not be drawn correctly after resizing the window has been fixed. Rendering of 3D models has been speeded up. Minor changes were made to allow compiling with GCC 3.4.
My replacement card no longer gives a video signal, so I'm back to my original. I'm running with the case open and my fingers crossed. So far no lockups.
Cars can now be controlled by the mouse. Surfaces of the cars are now properly culled. The frictional force from a tire is now tangent to the road regardless of the tire's orientation. Several other bug fixes and refinements were made.
The next release will allow controling the cars by mouse thanks to suggestions and proof-of-concept code by Tommi Hassinen. Just put "--controls=mouse" in the command line. Check out controls/mouse.xml in the data directory (usually /usr/local/share/vamos/) if you want to change the settings.
My video card's fan died causing 3D rendering to become flakey and eventually frozen. My cousin Russ let me have a (faster) card that he just happened to have lying around. So I can once again drive without worrying about my car breaking down. Thanks, Russ.
The depenency on SimGear has been removed now that Vamos has its own XML parser. Error messages for malformed XML files have been improved. Errors have been fixed in the torque and tire friction calculations.
Multiple independent rear-view mirrors can be specified in the car definition files. Support for 3D car interiors has been added. The car definition can now be reloaded while the simulation is running. The old Kyalami track has been added.
A steering wheel, gear shift, analog or digital tachometer, speedometer, and fuel gauge can be shown in the driver's view. These controls and readouts are completely configurable in the car definition file. The driver's view can be panned right and left. Preliminary rear-view mirror support has been added. Laguna Seca and Road Atlanta tracks have been added.
Version 0.4.2 contains the new tracks mentioned below. Also, AC3D models for trackside objects can be specified in track files. Braking torque is now coupled to the suspension. This, along with better speed-sensitive steering and some other suspension fixes improve stability at high speed and under hard braking, but some problems still remain.
After a flurry of trackmaking, we now have all of the tracks on next year's Formula One calendar, including the new circuits in Bahrain and Shanghai. These tracks will be in the upcoming 0.4.2 release. The tracks are now shown on their own page of the website. Click the pink link on the left.
The new version has the 3D car models mentioned below. The correct version of SigC++ is now checked by the configure program. Speed-sensitive steering is now available. Plus, a few minor problems were fixed.
In the upcoming 0.4.1 release, AC3D files can be used for car bodies and wheels. See the screenshots page for a taste. They're not beautiful, but at least they're not boxes. The wheels not only move with the steering and suspension, they also reflect the caster, camber, and toe settings.
The main reason for incrementing the middle number is that all of the XML definition files are now in place. In addition, the Silverstone, Magny-Cours, and Nurbergring tracks were updated, and Monza was added. Braking markers (signs that show the distance to a curve) were added. Wing behavior was improved. The main branch of LibSigC++ is now used. A customizable system was put in place to handle keyboard and joystick input. Documentation was updated.
You can reach me at snick dash a dash doo at comcast dot net (if you can decipher the secret code:)
Support for kerbs has been added. Check out the screenshots to see them in action. Texture images are now in PNG format. Several bugs have been fixed. This is likely to be the last release for a little while. I need a little break:)
The new version has better texture images, better texture handling and a sky box. The combined effect of these improvements can be seen in the screenshot above. I've also included a program for making seamless sky boxes. It's called Caelum, because Latin makes anything sound more important than it really is. Click the pink thingie on the left that says Caelum for more info.
All the tracks plus some dirver's-eye shots.
Support for variable-width tracks was added. Track elevation is now defined by a single spline. Spa, Suzuka and other tracks were added to show off these features. The Formula 1 car now behaves more reasonably.
It's been a while, but I finally have a new version of Vamos. Lots has changed. Cars and tracks are now defined in XML files for easy editing. The sound system has been improved so that sounds are now surface-specific. This means that tires no longer squeal on grass and gravel. Surfaces can now be bumpy, making for more realisic, and dangerous off-track excursions. Lots of non-visible changes have been made too, like a cleaner collision handling model.
Okay, I made all the changes to the classes that I planned. All I had to do was couple the tires' forces to the suspensions. Well, I'm stuck. I haven't been able to figure out how to do it. However, I was able to couple the engine's torque to the body. So, if you sit there in neutral and rev the engine, the car rocks a little. Other than that, there probably aren't any user-visible changes. I'm planning to do some cleanup and documentation work and then release 0.3.
It's been more than a month since the last release. I spent most of that time trying to figure out how to couple the wheels' forces and torques to the suspensions. After a few weeks of figuring, I decided that I had to re-organize the class hierarchy to make it possible. I finally got up the nerve to make the changes a couple of days ago. It's going well; the wheels' forces and their braking torques are now applied through the suspension components. I still have to make the suspensions do something useful with them, instead of just applying them right to the body. But as soon as I do that, I'll get 0.2.4 out.
Midpoint propagation has been implemented to prevent jittering at low speeds. I think that there are still a few problems to be worked out here. The damping constants had to be reduced from the values used with the single-step propagation method.
Also, a bug that caused the car to spin wildly after hard collisions has been fixed. I seem to fix this problem in every-other release. I hope it will stay away this time.Tire friction has been refined a bit. Caster, suspension movement, and body roll is now taken into account when calculating the instantaneous camber angle. Surfaces now have a "drag" property so that they can give resistance that's proportional to velocity. Drag is important for gravel and, to a lesser degree, grass.
Version 0.2.1 includes tire friction and engine refinements. Some groundwork for integration with FlightGear is in place.
I've been exploring the idea of using Vamos as a flight dynamics model in FlightGear. Of course, I'll be leaving out the flight part. It looks promising, but I still have some nasty coordinate transformations to work out. I'll post some code as soon as I get something that sorta works.
This release marks the end of car model development until I can digest Genta's "Motor Vehicle Dynamics." The model has deficiencies, but it's come a long way since 0.1.0. It's now time to read, and to work on a better track and scenery framework.
I've discovered Pacejka's magic formula! Well, Pacejka discovered it, or inveted it. Anyway, the formula is a model for tire friction. It greatly simplifies the Tire object. I've made some refinements and cleanups in other parts of the car model during my code review. The views now retain the corect aspect ratio when the window is resized. It looks great in letterbox:) There's now just a few more things to take care of before 0.2.0 is released.
Has anyone managed to compile Vamos on Windows? I'd be interested in hearing any success or failure stories.
I'm getting tired of working on the car model, so I'm going to put off adding any new features. I'm currently doing a review of all the libvamos-body code. When that's all done and I get the documentation updated, I'll release 0.2.0. Then I'll start working on improving the track code.
The drivetrain gets a jolt if the engine speed does not match the transmission speed when the clutch is fully engaged. The slip angle model was improved.
This is a modest upgrade. Some non-standard C++ code has been fixed. (See the previous news item.) Vamos now configures and compiles with Gcc 3. The documentation has been re-worked to include a Driver's Manual, which describes the Vamos application, and a Constructor's Manual which tells how to make your own cars, tracks and applications. Also, a number of new tracks have been added to the distribution.
I just got around to installing Gcc 3.0. This version rightly complains about standard library features that aren't qualified with std::. I made the fixes and checked them in, so they'll be in the next release. The sources should still compile with Gcc >= 2.95 and maybe even with Egcs.
A fuel tank has been added. Fuel consumption by the engine is calculated. Aerodynamic resistance and lift have been added.
In this release, a reaction torque is applied to the car under acceleration and braking. Deformation of the tires under acceleration, braking and cornering is now modeled. A refined version of the Silverstone track is now the default.
This release adds some new tracks, courtesy of RARS. The conversion program is also included. Also, lots of small changes have added up to much better car behavior.
The oldest programs I wrote to do some one-dimensional physical modeling have mtimes of about a year ago. These programs were the first baby-steps toward Vamos.
Braking, clutching and sliding are better. I think that this is a significant improvement over previous versions.
I've found some problems with the way I've been handling friction. I want to get these fixed before the next release. Version 0.1.4 will also have improved keyboard control and the start of a more sophisticated suspension geometry system.
That annoying problem that causes the car to fly off to oblivion when it hits a wall is gone. Unfortunately, I had to cut some corners to do this. Impacts that involve parts of the car other than the tires are frictionless. As a result, if you flip upside-down, you'll spin and slide, bouncing off the walls until another impact sets you on your wheels again.
I changed styles from "Classic Generic Web Page" to "Baby Announcement." I hope you're all as excited as about this as I am.