views:

41

answers:

3

Hi everyone,

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.

  • I have some OpenGL and JOGL, as well as XNA Game Studio experience.
  • I'd rather use Java so it can be as platform-independent as possible.

What should I do?

+1  A: 

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.

Alex Wood
This is a good answer. I ended up looking at Xith and jMonkeyEngine, both Java scene-graph-based engines that wrap around OpenGL. I think I'll use Xith.
Warlax
A: 

It's not Java, but otherwise what you describe sounds extremely close to the Open Source Virtual Terrain Project. You may well be better using that add contributing additional facilities you develop than starting from a more basic scenegraph level.

Cruachan
Yeah, this is overkill. I have a 3D point cloud with added meta-data pretty much. Interesting find though!
Warlax
A: 

I advise you to use Ardor3D or JMonkeyEngine 3. Ardor3D has an excellent support of JOGL, it supports the Collada format, terrains, heightmaps, it is used by the NASA and in GIS applications, it is not a niche engine. Ardor3D even works on Android, it is one of the most cross-platform 3D engine.

I advise you to look at this demo showing a procedural terrain in Ardor3D: http://www.youtube.com/watch?v=bkXFkxrYtLY

gouessej