Three days ago we got the following question from Salman Qaiser Al Khateeb on Facebook:
“What engine/tool are you using [for 3D graphics]?”

And we promised to answer that question properly, so here’s what Wes, our Head of Software guy, says:
“What engine/tool are you using [for 3D graphics]?”
We use several technologies for our graphics and are currently consolidating our tool selections. To really make the choices, we have to understand why we’re building our applications.
A rover on every desktop
A critically important application is our simulator. When you’re testing AI logic to avoid a crater, code breakpoints and cout statements just don’t work as well as watching Asimov heroically dodge a crater. A 3D simulation engages our fellow team members and, frankly, engages us developers as the fun loving humans that we are. Our simulator is shaping up as C++-based OpenGL using Visualization Library, Qt, and Bullet Physics.
We’ve tried handwritten OpenGL in C++ and 3D in the Java-based Processing environment. Both were Ok but not quite what we need. Custom crafting OpenGL code is time consuming, so we selected a library to make terrain and 3D model visualization quicker to write without sacrificing the cross platform nature of OpenGL. 3D in Processing is easy to do but ultimately risky for us – it’s a common complaint when developers move from Java back to C++ that they forget to call delete and programs spring memory leaks.
Visualizations
Speaking of AI, we also see a need to peek into the inner workings of complex mission critical algorithms. Again, breakpoints and logging statements can only go so far. We can write complex behavior monitors to look for unusual behavior, but nothing, and I mean nothing, so far can beat the insight of a fully engaged human. We’ve used the Graphviz tool to look at genetic program output and are considering the Ubigraph software for real-time animation of complex data structures.
The future
Ultimately, our simulations and visualizations will find their way into our ground control software. It’ll be tied to GPU-based (CUDA and OpenCL) risk assessments and to Qt-based remote control software. Personally, I’d love to see the whole control room projected onto walls with everyone using augmented reality tablet computers. Framework suggestions and volunteers welcome for that one!
-Wes