about
Midland Valley Exploration Ltd. needed a development environment for its new 4DVista structural geology viewer software. MVE’s customers were moving away from UNIX to Linux and Windows, so the company’s developers faced the task of building a consistent GUI while incorporating advanced 3D visualization capabilities. After evaluating many options, MVE selected Qt, a cross-platform C++ development environment from Trolltech, and the tightly integrated Coin3D graphical toolkit from Systems in Motion.
Together, the two solutions got MVE developers up and coding quickly, enabling GUI firsttimers to build a seamless user environment across both platforms, and allowing the team to add 3D visualization capabilities without struggling with classic Open GL programming. Shaving up to a year off its development cycle, MVE was able to focus its developers on the final project, rather than on the process of creating it.
If the world’s energy markets seem uncertain these days, there is at least one thing oil and gas companies know for sure: the data they depend on to make exploration decisions is growing – fast. As exploration costs soar, energy companies are scrambling to reduce the risks associated with drilling miles below the Earth’s surface for oil and gas reserves. By knowing as much as possible about subsurface geology before they drill, exploration teams can maximize their returns and contain costs by charting the safest and most efficient drill paths. But those insights require massive amounts of data along with sophisticated structural geology software to make sense of it. In the past, those 3D visualization applications ran on high-end UNIX supercomputers from companies like Silicon Graphics and Sun Microsystems.
Recently, however, energy companies began moving their analysis efforts to ever-more-powerful Linux and Windows platforms. For Midland Valley Exploration Ltd. (MVE), the shifting tides of energy exploration presented a challenge. Based in Glasgow, Scotland, MVE has been a leading innovator of structural geology applications for two decades. MVE’s software suite incorporates advanced algorithms that allow engineers to see geological data in the context of an accurate kinematic model that can be modeled backwards and forwards through time – the Holy Grail of geoscience.
New Applications for Multiple Plat forms
As demand grew for MVE applications on Linux and Windows, MVE was on the cusp of a major retooling of its product suite. The new suite’s visualization front-end is 4DVista, a viewer that enables anyone in an organization to view and interact with
geological models. 4DVista software is uniquely scalable. It ranges from a free, basic viewer for single-CPU notebook and desktop computers to feature-rich versions capable of enabling stereo viewing of large-data models on high-performance, multiprocessor systems.
The task of delivering new applications for multiple platforms led the 4DVista team to evaluate several GUI development environments, including FLTK and Java/Swing. 4DVista also needed to offer inscene manipulation and viewing of large 2D and 3D data sets, so the search included graphical toolkits like Java3D and Mercury Computer Systems’ Open Inventor.
“We wanted a cross-platform and powerful GUI, as well as in-scene manipulation and management of fast OpenGL-based 3D graphics,” recalls Colin Dunlop, principal software engineer at MVE and head of the 4DVista coding team. Dunlop’s team
knew they wanted to use as many quality third-party products as possible. This would help keep the team focused on the final product, rather than on the development process leading to it.
Qt and Coin3D: The Perfect Solution
To solve the unique challenge of creating software that was both cross-platform and 3D-rich, MVE turned to Qt from Trolltech and Coin3D from Systems in Motion (SIM). A C++ application framework, Qt enables developers to write a single source
code base that runs natively on multiple target platforms. Qt also integrates seamlessly with Coin3D, a graphics toolkit that offers a perfect solution for adding 3D visualization to Qt applications.
Qt came highly recommended by colleagues, says Dunlop, and enjoyed positive “word of mouth” fueled by an enthusiastic and growing community of users. “It was clear to us that Qt is a mature platform with mature OpenGL module support, and a
tried and tested C++ solution – two things we absolutely needed. It also helped that Trolltech engineers work closely with its customers through a dual-licensing model that makes the solution available through both from an open-source model and a professional license user model.”
The MVE team also was impressed with the selection of widgets and third-party add-ons and libraries available with Qt – a selection Dunlop describes as “abundant.” They were particularly excited about Qt Designer, a powerful GUI layout and forms builder that enables rapid development of high-performance user interfaces with native look and feel across all supported platforms. “Out of all the choices, Qt seemed the most complete of the frameworks,” recalls Dunlop. “With FLTK, we previously wasted a lot of time and effort making the GUI look like Solaris, IRIX or Windows – or just plain pretty enough. We were keen to avoid this in the future.”
Dunlop found SIM’s Coin3D shared similar benefits. “Like Qt, Coin3D is a proven and mature C++ platform with exhaustive documentation and the same dual licensing model, and it’s affordable compared to competitive solutions,” he says. “We
couldn’t afford to take a chance on an immature platform like Java3D, which during evaluation appeared slow and buggy, whereas Coin3D is solid, professional and lightning-quick. What’s more, we saw a lot of overlap between SIM’s software development roadmap and our own product plans.”
'Easy to Get Working with Qt’
The project to develop 4DVista required 80,000 man-hours. The work demanded the full-time attention of two engineers with part-time help from another three, all of whom used Qt and Coin3D in the development cycle. The final product amounts
to some 400,000 lines of code.
Like all development teams, the engineers at MVE quickly found their favorite features in Qt and Coin3D. Not surprisingly, they tended to be those that helped them create better software faster.
“We adopted one of Trolltech’s suggested development models for incorporating output from Qt Designer into our application, and this helped with GUI consistency and saved us development time,” says Dunlop. “Everything was well documented, and
the documented features actually worked!”
Even lacking prior experience with Qt proved a non-issue. “The sheer scale of Qt examples, tutorials and documentation really shone, and this made life much easier for our developers, even those with no GUI development experience at all. And it’s easy to get working with Qt, given that it actually compiles itself during installation.”
Another Qt favorite among MVE developers: Qt’s signals and slots mechanism which, Dunlop says, “hides developers from ugly old-style C++ callback mechanisms.”
Adding visualization functionality was also far less challenging than expected. “We enjoyed basing our rendering engine around Coin3D, and found it easy to work with,” reports Dunlop. “In fact, with the help of SIM engineers, we managed to enhance our rendering engine to be multi-threaded via Coin3D’s thread-safe scene graph.
“Coin3D also allowed us to abstract away from raw OpenGL,” added Dunlop,” so our developers could concentrate on product, not on process. Yet we knew that underneath the hood was a well-written, high-performance scene-graph. Coin3D also
saves us time and effort by providing cameras and in-scene manipulators, both of which are major time consumers when you have to write your own. And we use SIM’s add-on products SIMVoleon and SIM Rational Reducer, both of which combine seamlessly with the base Coin3D toolkit.”
‘Native from the Outset ’
For the 4DVista development team, the bottom line advantages of using Qt and Coin3D amount to time saved. “We streamlined our UI development process with Qt,” says Dunlop. “This resulted not only in faster results, but in a consistent and well engineered UI across the whole product.
“Our results looked native on all four platforms without any code tweaks. This saved use months of pain, and without Qt, we’d have ended up with a product that looked like a poor man’s Windows application. Instead, we have an application that
looks native from the outset.”
MVE also trimmed months from the project by leveraging Coin3D. “Even our less experienced developers were able to insert powerful 3D components into the application without being OpenGL experts,” says Dunlop. “By not reinventing the camera and in-scene manipulation yet again, we managed to save months, if not even a year of writing yet another painstaking OpenGL and basic mathematical primitives layer between 4DVista and OpenGL. At the same time, the Coin3D API was intuitive enough to allow us to extend where necessary.”
The team at MVE knows that rapid changes in the oil and gas industry will continue to trigger even more change within its products. Fortunately, the development environment MVE has built around Qt and Coin3D has the headroom to accommodate
those changes.
“Our market is and always will be global,” says Dunlop. “With Qt, we have everything in place for future foreign language versions of our products. No other framework provides this type of internationalization.”
A Resounding Success
For MVE, the experience of developing cross-platform GUIs with Qt and Coin3D was a resounding success. By Dunlop’s own estimates, the tools saved MVE programmers up to a year of time, allowing them a rare luxury in software development: the
freedom to focus on product features, quality and robustness.
What’s more, Qt and Coin3D have positioned MVE for efficient and intelligent development in the future, even as customer preferences change. “No matter what happens,” says Dunlop, “we’ll be able to quickly produce clean and consistent GUI code – all while keeping our coding standards high.”


