To main page
3D Engine explanation (What is "a 3d engine"?)
A 3D engine
is basically a library that handles some part of your real-time 3d routines (functions, procedures, object methods).
Many of ideas you're going to program to create 3D game have been written many-many times.
Simply speaking: 3D engines try to write popular routines in the most effective way, so that you can write "load(tree); start_animation();" instead of "ok, we want a swaying tree, so let's load the vertices for current frame,initialize format reader,read the file,process the first chunk, send first chunk of vertices from first frame to videocard memory...... etc".
Some things that this library (3D engine) could handle are: loading objects, animation of objects, different types of culling, etc.
Why there are so many 3d engines?
Well, at some point using someone's 3d engine, you stumble into the fact that something doesn't work the way you want it to (not too customizable, too slow, some function can't be implemented, the interface is too high-level). At this point the developer starts to write his own engine.
For most of top-class (AAA) games, custom game engines are written, however some part of them license some popular game engine, like Unreal Engine
or CryEngine for some millions of dollars and ask the original developers to customize it.