If you're developing using Insight3D or any of our components, I'm sure you've come across our developer network: ADN. One area of ADN that is gaining momentum is the Code Exchange, where AGI users and employees share code samples. Recently, I posted two Insight3D examples. A Point in Polygon Test example that shows how to determine if a point on the globe is inside a polygon on the globe. The other example, Drawing Shapes on the Globe, shows how to allow the user to draw polylines and polygons on the globe similar to 3D object editing in STK.
Here's a few screen shots:
Point in Polygon Test:

Drawing Shapes on the Globe:


If you've read any of my previous posts about SIGGRAPH (2008, 2009), it's pretty obvious that it is my favorite conference of the year (except, of course, for our user's conference). This year, SIGGRAPH is particularly exciting because AGIers are presenting in three different areas:
-
SIGGRAPH Dailies! - Kel Elkins and Branden Coker, members of our production team, are presenting some great AGI videos:
- The Fate of the Apollo 13 Crew Might Have Been Much Different Than Originally Thought
- US Airways Flight 1549: Hudson River Crash Animation With Flight Data
- Satellite Collision Visualization: Technically Accurate Depictions of Debris Breakup and Evolution
- MADCAT: Graphical All-on-all Conjunction Assessment for Objects in Outer Space
SIGGRAPH Dallies! is new to SIGGRAPH this year. It is an hour and a half of 60-90 second videos with live commentary from the presenter - a format similar to the popular Technical Papers Fast Forward session. If my numbers are correct, AGI is presenting 4 of the 38 videos, second to only Pixar and Disney, and tied with Texas A&M University. I'm happy to see that the SIGGRAPH community is so interested in our videos.
- Birds of a Feather - Deron is giving a talk on Insight3D at the Computer Graphics for Simulation BOF. If you're interested in how AGI products can be used in simulations, don't miss it!
- Posters - I am presenting our poster: GPU Ray Casting of Virtual Globes. This is a next generation rendering technique for ellipsoids - check it out if you like the details behind 3D rendering.
More...
Our team has learned a lot while developing Insight3D and the 3D capabilities in STK. Designing a 3D engine that meets the precision and performance requirements for these types of applications is challenging, to say the least. It takes a carefully designed engine to do things like visualize immense amounts of imagery and terrain, and precisely render a massive world.
Deron and I realized that not much has been written about this type of 3D engine, at least not all in the same place, so we decided to start writing a book on the topic: Virtual Globe and Terrain Rendering. This isn't a book on Insight3D or STK specifically but rather a best practices guide for designing and implementing 3D engines for virtual globes, GIS, simulations, etc - all things we've learned by working on Insight3D and STK. If you're interested in this kind of stuff, check out the book's blog as we continue to work on the manuscript and example code.
I should mention that our book is not directly affiliated with AGI. Although, since AGI is such an awesome employer, they are very encouraging about our book project and allowed us to mention it on this blog.
We've just released AGI Components 2010 r4. New Insight3D features include the cylinder triangulator, which computes cylinders for visualization with the solid primitive.

Download r4 from ADN.
Exciting news - our poster GPU Ray Casting of Virtual Globes was accepted to SIGGRAPH 2010.
This was a collaborative effort between the aerospace guys on the DGL team and our 3D team. We hope these types of next generation rendering algorithms make their way into Insight3D.
Short Abstract: Our work presents a GPU ray casting approach to rendering the ellipsoidal surface of virtual globes that provides an infinite level of geometric detail at frame rates competitive with traditional tessellation and rasterization approaches. This work has application in areas including globe rendering for geographic information systems and video games.
Downloads

A shaded, ray casted globe correctly interacting with rasterized billboards. Upper Right: Viewport-aligned ellipsoid bounding polygon. Ray hits are cyan and misses are gray. Raster data from Natural Earth and icons from Yusuke Kamiyamane.
I've recently received several customer inquiries regarding using Insight3D and the rest of AGI Components in a C++ development environment. This is often desirable because it allows you to integrate Insight3D and AGI Components into an existing C++ codebase, and can also make it easier to use native C++ libraries in a new Insight3D application.
Not only is this entirely possible with C++/CLI, but Insight3D is capable of being easily integrated into many common user interface frameworks in that environment, including MFC, Windows Forms, and Qt.
As an example, I've posted a simple C++/CLI example using Insight3D and AGI Components in the context of a Windows Forms application to help you get started.
You should note that the above example references assemblies in the default install location for AGI Components for .NET 2010 r2. You may need to update the references in the project to point to your particular install location. From the project properties, navigate to Common Properties->Framework and References, remove the references to AGI.Foundation.*, then add references to the same assemblies from your particular AGI Components installation. Similarly, if you get an error in relation to licenses, you may have to remove licenses.licx from the project and add the licenses.licx file from the Assemblies directory in your AGI Components installation.
On Wednesday March 24th, we are holding a “How to” webinar on using Insight3D in web-based architectures. The 45-minute webinar features live demonstrations and a 15-minute Q&A. You can register for the webinar here.
After the webinar, you can follow this tutorial on getting started building an Insight3D web application and download the sample code here.
Update: The recorded webinar and materials are now available on AGI's website.
The first AGI Components release for 2010 is now available on ADN. This release includes the solid primitive: a new primitive for visualizing solids such as ellipsoids and boxes, as shown below.

A new overview, available in our online help, explains how to use the solid primitive, including using visual cues such as the white silhouette edge and removal of back facing lines shown above. The polyline and point batch primitive now have an optional outline with a unique size, color, and translucency. This small feature adds a nice visual cue:

Download AGI Components 2010 r1 from ADN and give these new features a try.
All surface images in Insight3D are placed on the Earth where the edges of the image align with latitudinal and longitudinal lines and the top edge is north. Several customers have asked if they could map an image where that is not the case, where they have the latitude and longitude coordinates of each corner.
Fig. 1 shows an image captured from the viewpoint of a simulated UAV camera. While the image itself is exactly as it was, the image is not correctly positioned on the terrain. As mentioned, the image edges align with latitudinal and longitudinal lines.
|
| Fig. 1 |
In fig. 2, the image’s corners have been mapped from their original coordinates to their actual coordinates. One can tell that the camera took this image from the southwest.
|
| Fig. 2 |
This capability has been added to Insight3D’s Surface Mesh Primitive for our upcoming r8 release. I’ll wait until r8 is out to discuss the new interfaces and how this method differs from projecting an image onto the terrain.
In this post, I’ll discuss how we use OpenGL to remap the image of fig. 1 to that of fig. 2.
More...