Visualization with Insight3D®
Insight3D® provides a high performance, technically accurate 3D globe that you can use to visualize time-dynamic information and analysis results. The following topics introduce several core areas of Insight3D® and provide code examples. In addition to these topics, the HowTo application provides code examples in action.
Overlays are used to render and organize terrain and imagery on a globe. Overlays can be layered and turned on/off based on the camera's altitude or current animation time. Both JPEG 2000 (.jp2) and AGI's image format (.pdttx) are supported. For terrain, AGI's terrain format (.pdtt) is supported. In addition, overlays can use web imagery from Bing Maps for Enterprise and OpenStreetMap servers.
Overlays are efficiently drawn using an out-of-core rendering algorithm based on recent computer graphics research.
Primitives form the building blocks of a 3D scene. Insight3D® provides a wide array of primitives, from simple primitives to draw points and polylines to more advanced primitives for drawing entire models, ellipsoids, or polygons that conform to terrain. Primitives are optimized for both static and dynamic data, as primitives are commonly positioned and oriented based on computations that change over time. Primitives can be turned on/off based on the camera's altitude, distance to camera, pixel size, or current animation time. Composite primitives group primitives together to create hierarchies of primitives for efficient rendering, layering, and aggregation/deaggregation.
Primitives are organized in a bounding volume hierarchy and are efficiently culled using view frustum and horizon culling. For more information, see the Horizon Culling and Introducing Primitives blog posts.
Animation gives the illusion of movement by updating and rerendering data over time, such as the position and attitude of an aircraft. Animation is accomplished directly through the scene manager or indirectly through one of the animation classes that communicate with the scene manager.
Screen Overlays are used to render objects in 2D screen-space on top of a 3D scene. For example, screen overlays can be used to display your company's logo, create a translucent heads-up display (HUD), or display a video feed from an Unmanned Aerial Vehicle (UAV). Screen overlays support pixel and fractional units, translation, scale, and rotation transformations, and a user defined z-order.
Display conditions are available on all primitives, globe overlays, and screen overlays, used to limit when an object is displayed. This can be based on the distance from the camera to a object, such as a primitive or globe overlay, the distance from the camera to a position, the camera's altitude, the current time, or other conditions. These fine grain conditions can be combined using Boolean logic with a composite, that is, a condition of conditions.
Picking makes 3D applications interactive; allowing users to select and interact with objects in the 3D scene. This overview covers three common uses of picking in Insight3D applications: normal, roll-over, and drill picking. Normal picking is commonly used to zoom to a primitive or bring up a context menu. Roll-over picking is used to select objects or display the cursor's cartographic position over a globe as the mouse moves across the window. Drill picking is used when the same location is clicked or double clicked so the object under the top object can be acted upon.
The picking implementation is based on a new algorithm that AGI developed, which is described in the Picking Using the Depth Buffer blog post.
Insight3D automatically provides rotating and zooming in a 3D scene using the mouse. The Insight3D camera object provides full control over the camera's position and orientation. When the camera is initialized with Point or Vector objects, the camera automatically moves when the point or vector changes. The camera also provides higher level methods, such as the ability to view an entire central body or zoom to a rectangular extent on the globe. The camera is used to set view parameters like the field of view, near plane distance, and far plane distance. The camera provides functionality for taking snapshots of the 3D window as well as recording videos.
Insight3D provides a flexible Raster framework and raster processing through RasterFilters. The following raster image formats can be read by the raster class: BMP, ECW, IMG, JP2, NTF, NITF, PNG, SID, TIF, TIFF, JPG, JPEG, PPM, PGM, CLDS, and TGA. A raster can be loaded from a file, HTTP, HTTPS, or FTP source, and can also be loaded from memory, or constructed from a BufferedImage. The RasterFilter base class allows a user to perform many image processing tasks. The RasterStream class allows implementers to stream new data to a Raster over time, allowing for streaming of video (provided with the VideoStream class) and the ability to stream dynamic raster data into textures, including those on COLLADA models.
Insight3D supports loading and rendering of .kml and .kmz documents in a 3D scene.
Performance is important. This overview describes how to maximize frame rate and the fastest techniques for getting data into Insight3D.
The Platform Graphics library provides a mechanism to connect definitional objects and analysis results to graphical properties, without the need to synchronize the display yourself.