Speed is a matter of perspective

Originally posted to Shawn Hargreaves Blog on MSDN, Friday, September 7, 2007

One of the simplest and most effective ways to make your game go whoosh is to adjust the camera field of view. This is the first parameter to the Matrix.CreatePerspectiveFieldOfView method.

Most games use a field of view somewhere around 90 degrees, which is expressed in radians as pi/2. If you make this smaller the camera will zoom in, so distant objects appear larger but you can see less to the side. If you zoom far enough this becomes a great sniper effect.

Going the other way, a larger field of view makes distant objects appear smaller while providing more peripheral vision. Too large a field of view can be disorienting and even nauseating.

So what effect does field of view have on the sensation of speed?

Pick up a pair of binoculars. Zoom in on a distant object. While gazing through the binoculars, take a couple of steps forward. Did anything much change? Narp. There is little visual difference between an object 1000 feet away versus 990, and because you are zoomed in with no peripheral vision, you can't see any nearby objects that might be whooshing past beside you.

Stand near a wall, with it on your left shoulder. Look to your left, straight at the wall. Get nice and close, so it is just six inches from your nose. Take a step forward. Keep looking at the wall. You are now seeing a totally different piece of wall to before! When you move forward, the most dramatic relative change of position occurs with objects that are close and to your side.

When you increase the field of view you are literally warping the world, letting you see more on either side. More peripheral vision shows you more of the nearby objects that are changing position most rapidly. More parallax! More speed!! Whoosh!!!

Trouble is, a wide field of view is disorienting and ugly to look at. Sure it feels fast, but what use is that if it also makes you feel sick?

The solution is to dynamically adjust the field of view depending on your velocity. In MotoGP we used a fixed default angle for anything below 100 miles per hour, then gradually widened the camera as your velocity went up, maxing out at nearly double the original angle when you hit that perfect zen moment pegging it down a long straight in top gear.

As an alternative to raw speed, you can also link the field of view to acceleration. That will add a wonderful lurching enhancement to any game that features a turbo booster button.

Blog index   -   Back to my homepage