My company has decided that we need a "generic" demo infrastructure for our technology demos, given that I can write this using JOGL or OpenGL and create my own framework, I'd hate to reinvent the wheel. But there are so many 3D gfx engines out there and so many OpenGL wrappers!
Basically, we want to use 3D graphics to render some terrain and put simple models on it. Their requirements are for it to look great and be cross-platform.
Basically, I am free to decide the scope and paradigm this would follow but I was thinking: - Be able to load 3D models and render them in full-screen or windowed mode. - Be able to control the camera(s) to "fly" through the resulting scene. - Be able to show/hide billboard messages on top of everything, i.e. 2D text and images that are fixed on the screen and always face the camera. - Be able to change simple things about parts of the scene, such as making object appear/disappear, change highlight color (like paint in red), and such. - I am optionally looking to write or use an existing scripting language to inject event handling and pre-programmed animations.
Sample use case: - Someone at our company prepares a 3D model of terrain with some buildings, essentially generating an XML-like file describing the scene and its objects. - He then proceeds to use my program to fly through the terrain and record a few camera positions "of interest". - Then, he binds some of those positions to keyboard keys and/or existing GUI buttons. - He adds some pieces of floating text. - He presents a demo using my program, loads his 3D model file and script file and can start "flying" with the audience from one of his selected camera poses to the next, the floating text fades in and out as he arrives and leaves the camera positions... some buildings on the terrain highlight in red when he clicks a button... etc.
What should I do?
I'd recommend you take a look at OpenSceneGraph or Ogre. Both are cross platform (C++), feature rich graphics engines. Furthermore, they are commercially friendly licenses and are very mature and actively maintained engines.
I know that out of the box, OpenSceneGraph supports the loading of several model formats with one or two lines of code and there are several OSG libraries that already do a great job at managing and rendering terrain.
Otherwise, you'll be spending 95% of your time writing a niche engine rather than developing your visualization capability.