A hackathon is a programming “sprint” where participants intensively work on developing concepts and prototypes based around a defined theme. They have grown in popularity across much of the software development industry, including organizations such as Facebook, Yahoo and Google. It is quite amazing when you think about it; in what other industries do employees band together and get psyched about staying late at the office? On September 12, AGI ran a 12-hour internal hackathon event, focused on improving the visual quality and 3D interactivity of Systems Tool Kit
(STK) and Cesium
. While all of us already live and breathe software development at AGI, the exercise of a hackathon promotes a culture of fun and excitement among all interested in 3D development at AGI.
Those who participated chose a project of interest to them that could be reasonably prototyped within 12 hours; think of the outcomes from this event as a first draft. This hackathon was an opportunity to prototype new ideas and explore potential future features. For many, ideas were scoped to a localized problem and will eventually be generalized and applied to broader range of features. We saw a balanced representation of Cesium and STK projects for this hackathon. With Cesium’s almost nonexistent build overhead, it fairs well in the context of a hackathon for rapid prototyping. In some cases, this hackathon used Cesium to prototype features for STK, demonstrating exactly the type of synergy we expect between our rendering engines. Dan Bagnell put his own spin on this hackathon and ported his Cesium implementation of this inertial camera response into STK. This feature allows for the camera to decelerate and drift after zooming or rotating the camera, which is both intuitive and standard practice for most globe-centric applications.
Inertial camera response in STK from Analytical Graphics, Inc. on Vimeo.
Tom Fili broke ground on an improved atmospheric scattering algorithm in Cesium, based on Bruneton and Neyret’s Precomputed Atmospheric Scattering
. Once fully integrated into Cesium, Tom will bring this visual effect into STK. Greg Beatty got right to the point and developed a proof of concept for direct loading and rendering of LiDAR point cloud data. Through the use of STK’s UI Plugin framework, he was able to load millions of data points and render within STK. In the screenshot below, we see 10.6 million points of the University of Oregon’s stadium, rendered in STK.
Jimmy Tucholski prototyped a highly requested feature of picture-in-picture functionality. In this prototype, he was able to render four separate 2D windows directly to overlays positioned in a 3D Window. This proof-of-concept has already demonstrated the potential for rendering any scene into an overlay.
Picture-in-picture overlays prototyped in STK from Analytical Graphics, Inc. on Vimeo.
Alex Wood spent his time exploring overlay interaction and the usability of data displays in STK. To complement the precise control of positioning data displays through manual input into a dialog, Alex introduced a “Free Edit Mode” for them. When enabled, STK users can click and drag a data display for interactive positioning. While this feature was scoped to data displays, the capability could be further generalized to apply to any overlay, including Jimmy Tucholski’s picture-in-picture hackathon entry mentioned above.
Interactive editing of data displays from Analytical Graphics, Inc. on Vimeo.
In addition to STK demos, we also had our fair share of Cesium contributions. Patrick Cozzi took a magnifying glass to Cesium rendering to tune overall performance. In rendering a low altitude scene of Mt. Everest, his modifications raised the sampled frame rate from 140 frames/second up to 150. In addition, the runtime of our unit tests (currently 4,400 tests) was reduced from 42 to 33 seconds. These changes have since been merged into Cesium. Matt Amato and Ed Mackey each worked on furthering Cesium application development. Matt focused on growing KML support in Cesium by adding KMZ loading, while Ed continued his development of a user interface widget for managing data sources in Cesium. Rounding out the list of participants, Hannah Pinkos and Kevin Ring each developed their own Cesium widgets. With Hannah’s Polygon drawing tool
, users can draw surface polygons at any altitude, or extrude a polygon to construct a volume from the surface of the central body. Kevin Ring’s geolocation widget
provides a search widget to issue a camera fly-to for a specified location. As a showcase for Cesium’s time dynamic visualization, Kevin’s geolocation widget also uses Bing’s geocoding service to display and animate navigation between two locations.
Hackathons are a growing tradition here at AGI. In building a foundation for many great ideas, they also increase mindshare and promote community within the company. This event showcases the fun and excitement we encounter from day to day to better ourselves as well as our products for our users.