Archive

Favorite Features: The Marker Batch Primitive



This is the first of a series of articles about our favorite features in Insight3D written by developers on the Insight3D team, the AGI Components team, and other AGI developers that we've deemed as world experts in Insight3D.

I like lots of Insight3D features, but I've decided to write about the marker batch primitive because 1) I developed it and am therefore biased, and 2) it does lots of fancy things under the hood for performance.

Marker Batch Basics

Loosely speaking, markers are 2D images that always face the viewer, like these arrows:

markerbatchbasics

Yes, I drew the arrow icon myself  in Visual Studio, and no, I've never thought of a career in art.  Markers are sometimes called Sprites or Billboards.  They have an incredible number of uses:  representing points of interest, visualizing a ton of realtime data, replacing 3D models to improve performance, and for rendering image-based effects such as clouds, smoke, fire, and vapor trails.  Of course, we are looking for an excuse to code up some of these effects, so please leave a comment if you are interested.

More...

NASA LCROSS Moon Mission



You may have heard in the news that NASA’s LCROSS satellite has reached the Moon.  The satellite’s mission is to map the Moon’s surface for future manned missions and to determine if water in the form of ice exists in a crater at the Moon’s south pole.

STK, software that we work on, was used amongst others to help plan the mission.  STK was streamed live on June 23, 2009 to visualize the lunar swingby in 3D in real-time.  A recording of the swingby is here under the section titled “Lunar swingby coverage animation”.

Telemetry, for example the satellite’s orientation, was sent in real-time from the satellite to the Earth and into STK;  based on that telemetry, the satellite was oriented and displayed in 3D.  The satellite, the satellite orbit, the two camera sensor beams, the Moon, vectors, textual information, and more were all displayed together in one 3D window.

While we are excited that we just officially released Insight3D, this is also very exciting for us.  By the way, Insight3D is based on the same 3D engine used in STK and uses AGI’s Dynamic Geometry Library for astrodynamics, which is also based on STK’s.  The use of STK for NASA’s mission underscores the quality and accuracy of the 3D visualization that you can expect from Insight3D.

We wish NASA continuing success in this mission.

Insight3D Publicly Available



We’re excited to announce the release Insight3D.  Visit Insight3D.com for product information, and then please give it a try.  You can download it here.

Chances are that you won’t read the documentation first, so I recommend that you open …\Program Files\AGI\AGI Components 2009\r3\Examples\Insight3D\ Examples.sln; then, build and run our How To example pictured below.

howto

This example demonstrates many of our features.  In the left window is a tree of those features.  When you check a feature’s box, it is displayed in the 3D window, and the its code is displayed in the bottom window.  This a quick way to familiarize yourself with Insight3D.

More...

Horizon Culling 2



In a previous entry, I described a simple method for horizon culling.  That method determined if one sphere, the occluder, occluded another sphere, the occludee, for example if a planet represented as a bounding sphere occluded a satellite represented as a bounding sphere.  In this entry, I’ll describe how to find if a planet occludes a part of itself.  Normally, I write out all the math; however given my time constraints and in the interest of me finally writing another blog, I’ll forego that.

3D GIS applications invariably render the Earth and other planets.  A planet is generally organized as a hierarchy of terrain tiles of varying levels of detail.  As the viewer moves closer and closer to particular part of a planet, higher and higher fidelity tiles are rendered.  The Virtual Terrain Project has a nice list of terrain rendering algorithms.  Frustum culling techniques are normally first applied to tiles, so that only tiles inside the view frustum are rendered.  Next, horizon culling is applied.

More...

Out-of-Core Rendering



Out-of-core (OOC) rendering algorithms render a model without the need to load the entire model into memory.  A prime example of this is the terrain and imagery engine in Insight3D and STK.  Most terrain data sets simply do not fit into main memory so an OOC algorithm is called for.  Since OOC algorithms have many uses beyond terrain, e.g. cities, I wrote my thesis on the topic:

Title:  Visibility Driven Out-of-Core HLOD Rendering

Abstract:  With advances in model acquisition and procedural modeling, geometric models can have billions of polygons and gigabytes of textures. Such model complexity continues to outpace the explosive growth of CPU and GPU processing power. Brute force rendering cannot achieve interactive frame rates. Even if these massive models could fit into video memory, current GPUs can only process 10-200 million triangles per second. Interactive massive model rendering requires techniques that are output-sensitive: performance is a function of the number of pixels rendered, not the size of the model. Such techniques are surveyed, including visibility culling, level of detail, and memory management. In addition, this work presents a new out-of-core rendering algorithm that is demonstrated with a variety of HLOD rendering algorithms.

Here is the video of my defense (minus the first 30 seconds or so, sorry):

More...

Our Blog’s First Birthday: The Year in Review



Believe it or not, the first post to this blog was made one year ago today.  A lot has happened to our product, our team, and our blog since then.  For starters, we released an alpha version of Insight3D and four significant updates to it.  If you haven't had a chance to try it yet, contact Tom Urie at Insight3D@agi.com.  Point Break was renamed to Insight3D.  We still have a soft spot for Point Break, as do many of our users.

Two of our team members finished school, one bachelors and the other a masters, while another member started graduate school.  A few of us made it to SIGGRAPH, which has fueled all sorts of ideas going into Insight3D.

Besides informing Insight3D users of what's new and exciting, we used this blog to make technical contributes to the field of computer graphics, and in particular, real-time rendering.  The blog's statistics show that both types of posts receive a good amount of attention with the more popular being the technical content, which makes sense since our alpha user base isn't huge.  The most important technical contribution of the past year was probably Deron's post:  Precisions, Precisions.  The posts on text rendering and picking have also attracted some interest.

Although it's worthwhile to review the past year, I think its even more important to consider this coming year.  The offical version of Insight3D will be released, including .NET interfaces that make it easy to use with DGL.  This will include all sorts of features that we've barely mentioned, like an overlays system that can be used to render translucent user interfaces on top of your 3D scene.  We plan to continue to contribute significant technical content to the blog.  You can expect details on the new lines on terrain algorithm (or at least a link to the paper if we formally publish the algorithm).  You'll probably hear more than you can imagine on out-of-core rendering, since that was the topic of my thesis.  If enough people ask, I will describe the rendering engine behind primitives, which like all modern scene management systems, is now shader-based, and utilizes hierarchical culling and state sorting.  Finally, you've only heard from half our team so you should expect some fresh content from new authors.

Insight3D Alpha 2008 r8 Released



<Update: Insight3d has been officially released.>

We have released the r8 version of Insight3D.  New features include:  2D window overlays, point batch per point display conditions, support for asynchronous network video streams, window snapshot capability, and real-time animation modes.  For more details see the What's New section of our online help.  We’ve been remiss in announcing our updates; the What's New section lists the updates for all previous versions.

The below image demonstrates the flexibility of our overlay system showing web browser, text, video, and toolbar overlays.  Our online help describes the overlay system.

overlays

If you have questions or comments, or would like to request an alpha version of Insight3D, email us at Insight3D@agi.com.

Vector Vectoria



3D GIS applications often render 2D vector data, like roads, rivers, and country boundaries onto the landscape.  Techniques for combining 2D features with 3D terrain are generally either texture or geometry based.  Both have their issues.  In this blog entry, I'm going to give a short preview of Insight3D's approach.

A few years ago for STK, we developed a method using shadow volumes.  A long thin box is created that represents, for example, a road.  The bottom of the box is below the terrain and the top is above.  The terrain is colored where the box intersects the terrain forming a line.  Two papers were recently written that describe this method:  Efficient and Accurate Rendering of Vector Data on Virtual Landscapes  and Rendering 3D Vector Data using the Theory of Stencil Shadow Volumes.

While both papers describe how to determine the height of the box, they do not describe how to determine the width.  If they keep the width static, as the camera moves away from the line, the line will disappear.  In STK, we use a vertex shader to dynamically modify the width based on the camera's field of view and distance from the line to keep the line a user defined width in pixels.

This method has two issues.  Lines breaks up from certain viewpoints as seen in the left image of fig. 1.

dashed
Figure 1

Also, lines smear down the side of steep terrain, such as on mountainsides.  The left image of fig. 2 shows a line that is supposed to be one pixel wide.

smear
Figure 2

We have been working on a new lines on terrain method for Insight3D to eliminate these issues.  The right images of figs. 1 and 2 show the new method.  The line is not broken and remains one pixel wide over the mountainside.

Research into this method is ongoing.  We hope to add the ability to create patterned lines, like dashed and dotted lines.  We'd like to apply this method to create altitude contour lines.  We are also working on a line level of detail system to allow Insight3D to render massive amounts of 2D vector data.

There you go - a short preview of current research we are doing.  Sometime in the future, we expect to describe the new method in detail.

Geometry Shader for Debugging Normals



To debug lighting, it is handy to visualize per-vertex normals. Traditionally, one would create a vertex buffer with a bunch of lines representing normals and render this after rendering the mesh itself. This works but it is not nearly as simple, or as cool, as using a geometry shader.

Model with normals

You can write a trivial geometry shader to visualize normals. The shader takes a triangle as input and outputs 3 lines that represent the normal for each vertex. In the first pass, render the mesh as you normally would. In the second, pass enable the geometry shader and render the mesh again. That's it. No extra vertex buffer, just an extra pass.

More...

Product Rename to Insight3D



As Deron predicted way back in January, our product has been renamed.  What you have come to know as Point Break is now called Insight3D.  Usually developers resist name changes but we're all pretty happy with it.  We hope the name change doesn't cause too much confusion for you.  In memory of our original name, I've modified the Surface Mesh primitive example in our HowTo to use our original logo for the texture:

Old logo on Surface Mesh

We don't have a new logo yet but you should have high expectations.

In other news, we are thrilled about the amount of interest Insight3D received at this year's User's Conference.  Thanks to everyone for their feedback and ideas.  If you have more to say or want to request an alpha version, email Insight3D@agi.com.  Our team has quite the track record of making changes based on customer feedback.  In fact, Bart immediately started coding things based on customer requests from the User's Conference, after he returned in the "party van."

The slides for our Insight to Insight3D presentation from the UC are available under Primers on our User's Conference page.  They assure me that the log-in is quick and painless.  For other Insight3D resources, check out our online help or this past summer's special edition Inview.  The Inview contains two articles on Insight3D (called Point Break back then).  We were excited to meet many people at the UC that read the Inview and wanted to learn more.