Posted 06 October 2012 - 09:41 PM
One purpose is for conversions.
Let's "pretend" that there are 200 different formats to store music in.
Let's further "pretend" that people want to convert between those formats.
You can either make a conversion tool for each individual "format <-> format" pair, which would require 39,800 different conversion tools...
Or, you can identify three or four of the most popular, and just make each of the 200 formats be able to convert to those popular ones (~796 tools required).
Then you can go: .wav to .mp3 to .ogg, without having to create a specific .wav to .ogg conversion tool. (Note: this specific example has lossy data issues. A good intermediary format is lossless)
So: If there are >100 different formats to store 3D models in... why should every 3D model creation tool, and every 3D game engine, have to know how to load and save in 100 different formats? Why not just identify the four or five popular ones and support those, knowing you can convert the less popular ones to the more popular ones already?
The key is, you want your intermediate format to be lossless, so any modelling (or sound, or pixel) data doesn't get lost when converting from one format to another. File formats created explicitly for intermediate use are probably larger sizes, and save any little spec of data that it may think you want to keep, and when you finally convert to the file format (known or custom format) for use with your game, you can strip out all the extra data you don't need. In the same way, my PaintShopPro image files are huge, but save all the image layer data that I need while working on the image, and all the layer data is stripped out when I save the final result as a .png or .jpg.