<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AGI Graphics Team Blog</title>
	<atom:link href="http://blogs.agi.com/insight3d/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.agi.com/insight3d</link>
	<description>Thoughts on GFX</description>
	<lastBuildDate>Tue, 10 Aug 2010 19:20:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ADN Code Exchange</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/08/10/adn-code-exchange/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/08/10/adn-code-exchange/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 19:20:35 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[Developer]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=852</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>If you're developing using Insight3D or any of our components, I'm sure you've come across our developer network:  <a href="https://adn.agi.com/">ADN</a>.  One area of ADN that is gaining momentum is the <a href="http://adn.agi.com/codeExchange/">Code Exchange</a>, where AGI users and employees share code samples.  Recently, I posted two Insight3D examples.  A <a href="https://adn.agi.com/detailedView.cfm?resourceId=415">Point in Polygon Test</a> example that shows how to determine if a point on the globe is inside a polygon on the globe.  The other example, <a href="https://adn.agi.com/detailedView.cfm?resourceId=410">Drawing Shapes on the Globe</a>, shows how to allow the user to draw polylines and polygons on the globe similar to 3D object editing in STK.</p>
<p>Here's a few screen shots:</p>
<p><a href="https://adn.agi.com/detailedView.cfm?resourceId=415">Point in Polygon Test</a>:</p>
<p><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PointInPolygonTest.png"><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PointInPolygonTest.png" width="480" height="300"/></a></p>
<p><a href="https://adn.agi.com/detailedView.cfm?resourceId=410">Drawing Shapes on the Globe</a>:</p>
<p><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PolylineDrawing.png"><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PolylineDrawing.png" width="480" height="300"/></a></p>
<p><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PolygonDrawing.png"><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/08/PolygonDrawing.png" width="480" height="300"/></a></p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=852" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/08/10/adn-code-exchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SIGGRAPH 2010 Follow-Up</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/08/02/siggraph-2010-follow-up/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/08/02/siggraph-2010-follow-up/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 16:53:28 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=831</guid>
		<description><![CDATA[AGI had a great presence at SIGGRAPH this year.
You can check out a few of our videos presented at the Dailies on YouTube:

The Fate of the Apollo 13 CrewMight 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



Also, I [...]]]></description>
			<content:encoded><![CDATA[<p>AGI had a great presence at <a href="http://www.siggraph.org/s2010/">SIGGRAPH</a> this year.</p>
<p>You can check out a few of our videos presented at the <a href="http://www.siggraph.org/s2010/for_attendees/siggraph_dailies">Dailies</a> on YouTube:</p>
<p />
<p align="center">The Fate of the Apollo 13 Crew<br />Might Have Been Much Different Than Originally Thought</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/KUAo_T__J2A&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/KUAo_T__J2A&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object></p>
<p />
<p align="center">US Airways Flight 1549:<br />Hudson River Crash Animation With Flight Data</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/hlmoWerV71s&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hlmoWerV71s&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object></p>
<p />
<p align="center">Satellite Collision Visualization:<br />Technically Accurate Depictions of Debris Breakup and Evolution</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/dtT3pTh_q-8&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dtT3pTh_q-8&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object></p>
<p />
<p />
Also, I updated the page on our poster, <a href="http://blogs.agi.com/insight3d/index.php/2010/04/19/gpu-ray-casting-of-virtual-globes/">GPU Ray Casting of Virtual Globes</a>, to include the actual <a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/080210_PosterA.png">poster</a> (2200x2200) in addition to the abstract, video, etc.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=831" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/08/02/siggraph-2010-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AGI at SIGGRAPH 2010</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/07/02/agi-at-siggraph-2010/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/07/02/agi-at-siggraph-2010/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 14:09:41 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=811</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>If you've read any of my previous posts about SIGGRAPH (<a href="http://blogs.agi.com/insight3d/index.php/2008/08/18/siggraph-2008-trip-report/">2008</a>, <a href="http://blogs.agi.com/insight3d/index.php/2009/08/10/siggraph-2009-trip-report/">2009</a>), it's pretty obvious that it is my favorite conference of the year (except, of course, for our <a href="http://uc.agi.com/">user's conference</a>).  This year, SIGGRAPH is particularly exciting because AGIers are presenting in three different areas:</p>
<ul>
<li>
    <a href="http://www.siggraph.org/s2010/for_attendees/siggraph_dailies">SIGGRAPH Dailies!</a> - Kel Elkins and Branden Coker, members of our production team, are presenting some great AGI videos:</p>
<ul>
<li>The Fate of the Apollo 13 Crew Might Have Been Much Different Than Originally Thought</li>
<li>US Airways Flight 1549: Hudson River Crash Animation With Flight Data</li>
<li>Satellite Collision Visualization: Technically Accurate Depictions of Debris Breakup and Evolution</li>
<li>MADCAT: Graphical All-on-all Conjunction Assessment for Objects in Outer Space</li>
</ul>
<p>    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 <a href="http://www.siggraph.org/s2010/for_attendees/technical_papers_fast_forward">Technical Papers Fast Forward</a> session.  If my numbers are correct, AGI is presenting 4 of the <a href="http://www.siggraph.org/s2010/for_attendees/siggraph_dailies/siggraph_dailies_show_order">38 videos</a>, second to only <a href="http://www.pixar.com/">Pixar</a> and <a href="http://www.disneyanimation.com/">Disney</a>, and tied with <a href="http://www.tamu.edu/">Texas A&M University</a>.  I'm happy to see that the SIGGRAPH community is so interested in our videos.
  </li>
<li><a href="http://www.siggraph.org/s2010/for_attendees/birds_feather">Birds of a Feather</a> - <a href="http://blogs.agi.com/insight3d/index.php/author/deron/">Deron</a> is giving a talk on Insight3D at the <i>Computer Graphics for Simulation</i> BOF.  If you're interested in how AGI products can be used in simulations, don't miss it!</li>
<li><a href="http://www.siggraph.org/s2010/for_attendees/posters">Posters</a> - I am presenting our poster:  <a href="http://blogs.agi.com/insight3d/index.php/2010/04/19/gpu-ray-casting-of-virtual-globes/">GPU Ray Casting of Virtual Globes</a>.  This is a next generation rendering technique for ellipsoids - check it out if you like the details behind 3D rendering.</li>
</ul>
<table border="0">
<tr>
<td><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/07/Apollo.jpg" width="245" height="196" /></td>
<td><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/07/1549.jpg" width="245" height="196" /></td>
</tr>
<tr>
<td><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/07/Collision.jpg" width="245" height="196" /></td>
<td><img src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/07/Conjunction.jpg" width="245" height="196" /></td>
</tr>
</table>
<p><span id="more-811"></span></p>
<p>I'm sure the burning question in your mind is when and where is all this good stuff?  After all, you need to put together your <a href="http://www.siggraph.org/s2010/for_attendees/schedule">conference schedule</a> well ahead of time (you should see mine - I am double booked, sometimes even triple booked, the entire time.  There is that much to see).</p>
<ul>
<li>SIGGRAPH Dallies! - Tuesday and Wednesday, 6 - 7:30 pm.  Room 408 AB</li>
<li>Computer Graphics for Simulation BOF - Wednesday, 2:30-3:30 pm.  Room 301 A</li>
<li>Posters - Tuesday and Wednesday, 12:15-1:15 pm.  West Lobby (our poster will be at location 80B)</li>
</ul>
<p>My suggestion is to make Wednesday "AGI day" and check out all three in one day!  See you at SIGGRAPH.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=811" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/07/02/agi-at-siggraph-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Globe and Terrain Rendering</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/07/02/virtual-globe-and-terrain-rendering/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/07/02/virtual-globe-and-terrain-rendering/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 11:35:59 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Graphics Developer]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=803</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Our team has learned a lot while developing Insight3D and the 3D capabilities in <a href="http://www.agi.com/products/desktopApp/stkFamily/">STK</a>.  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.</p>
<p><a href="http://blogs.agi.com/insight3d/index.php/author/deron/">Deron</a> 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:  <a href="http://www.virtualglobeandterrainrendering.com/">Virtual Globe and Terrain Rendering</a>.  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 <a href="http://www.virtualglobeandterrainrendering.com/">blog</a> as we continue to work on the manuscript and example code.</p>
<p>I should mention that our book is not directly affiliated with AGI.  Although, since AGI is such an <a href="http://www.agi.com/careers/default.aspx">awesome employer</a>, they are very encouraging about our book project and allowed us to mention it on this blog.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=803" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/07/02/virtual-globe-and-terrain-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New in AGI Components 2010 r4</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/05/20/new-in-agi-components-2010-r4/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/05/20/new-in-agi-components-2010-r4/#comments</comments>
		<pubDate>Thu, 20 May 2010 16:07:39 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Primitives]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=798</guid>
		<description><![CDATA[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.
 ]]></description>
			<content:encoded><![CDATA[<p>We've just released AGI Components 2010 r4.  New Insight3D features include the cylinder triangulator, which computes cylinders for visualization with the <a href="http://www.agi.com/resources/help/online/AGIComponents/source/Programmer%27s%20Guide/Overview/Graphics/Primitives/Solid.html">solid primitive</a>.</p>
<p><img class="alignnone size-full wp-image-799" title="Cylinder2" src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/Cylinder2.png" alt="" width="486" height="365" /></p>
<p>Download r4 from <a href="http://adn.agi.com/detailedView.cfm?resourceId=240">ADN</a>.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=798" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/05/20/new-in-agi-components-2010-r4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPU Ray Casting of Virtual Globes</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/04/19/gpu-ray-casting-of-virtual-globes/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/04/19/gpu-ray-casting-of-virtual-globes/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 13:30:26 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[Graphics Developer]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=775</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Exciting news - our poster <em>GPU Ray Casting of Virtual Globes</em> was accepted to <a href="http://www.siggraph.org/s2010/">SIGGRAPH 2010</a>.</p>
<p>This was a collaborative effort between the aerospace guys on the <a href="http://blogs.agi.com/dynamicGeometry/">DGL team</a> and our 3D team.  We hope these types of next generation rendering algorithms make their way into Insight3D.</p>
<p><em>Short Abstract:</em> 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.</p>
<p>Downloads</p>
<ul>
<li><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/GPURayCastingOfVirtualGlobes.pdf">One Page Abstract</a> (preprint)</li>
<li><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/Supplement.pdf">Three Page Supplement</a></li>
<li><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/080210_PosterA.png">Poster</a> (2200x2200)</li>
<li><a href="http://www.agi.com/downloads/blogs/videos/GPURayCastingOfVirtualGlobes.mp4">Five minute video</a></li>
<li><a href="http://www.agi.com/downloads/blogs/files/GPURayCastingOfVirtualGlobes.zip">Source Code</a> - Compiles with Visual C# 2008.  Requires OpenGL 3.2 drivers to run.</li>
<li><a href="http://portal.acm.org/citation.cfm?id=1836845.1836982">ACM Portal page</a></li>
</ul>
<p style="text-align: center;"><img class="size-full wp-image-779 aligncenter" title="Small" src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/04/Small.jpg" alt="" width="400" height="300" /></p>
<p style="text-align: center;">A shaded, ray casted globe correctly interacting with rasterized billboards.  <em>Upper Right</em>: Viewport-aligned ellipsoid bounding polygon.  Ray hits are cyan and misses are gray.  Raster data from <a href="http://www.naturalearthdata.com">Natural Earth</a> and icons from <a href="http://www.pinvoke.com">Yusuke Kamiyamane</a>.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=775" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/04/19/gpu-ray-casting-of-virtual-globes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Insight3D and C++</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/03/25/insight3d-and-c/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/03/25/insight3d-and-c/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:12:37 +0000</pubDate>
		<dc:creator>mbartholomew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=751</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>I've recently received several customer inquiries regarding using Insight3D and the rest of <a href="http://www.stk.com/products/components/">AGI Components</a> 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.</p>
<p>Not only is this entirely possible with <a href="http://msdn.microsoft.com/en-us/library/ms379617%28VS.80%29.aspx">C++/CLI</a>, but Insight3D is capable of being easily integrated into many common user interface frameworks in that environment, including MFC, Windows Forms, and <a href="http://blogs.agi.com/insight3d/index.php/2009/08/31/insight3d-and-qt/">Qt</a>.</p>
<p>As an example, I've <a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/03/Insight3DCPP.zip">posted a simple C++/CLI example</a> using Insight3D and AGI Components in the context of a Windows Forms application to help you get started.<br />
<em><br />
You should note that the above example references assemblies in the default install location for <a href="http://adn.agi.com/detailedView.cfm?resourceId=240">AGI Components for .NET 2010 r2</a>.  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-&gt;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.</em></p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=751" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/03/25/insight3d-and-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Insight3D Webinar</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/03/23/insight3d-webinar/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/03/23/insight3d-webinar/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 17:45:01 +0000</pubDate>
		<dc:creator>mbartholomew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=724</guid>
		<description><![CDATA[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&#38;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 [...]]]></description>
			<content:encoded><![CDATA[<p>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&amp;A.  You can <a href=" http://www.agi.com/events/webinars/resources/main.cfm?which=90">register for the webinar here.</a></p>
<p>After the webinar, you can follow this <a href="http://blogs.agi.com/insight3d/index.php/2009/08/20/getting-started-with-insight3d-on-the-web/">tutorial on getting started building an Insight3D web application</a> and <a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/03/Insight3DWebApplication.zip">download the sample code here.</a></p>
<p><em>Update: The recorded webinar and materials are <a href="http://www.stk.com/events/webinars/resources/main.cfm?which=91">now available on AGI's website.</a></em></p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=724" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/03/23/insight3d-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New in AGI Components 2010 r1</title>
		<link>http://blogs.agi.com/insight3d/index.php/2010/01/26/new-in-agi-components-2010-r1/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2010/01/26/new-in-agi-components-2010-r1/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 04:45:47 +0000</pubDate>
		<dc:creator>Cozzi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Primitives]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=699</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>The first AGI Components release for 2010 is now available on <a title="ADN" href="http://adn.agi.com/detailedView.cfm?resourceId=240">ADN</a>.  This release includes the solid primitive:  a new primitive for visualizing solids such as ellipsoids and boxes, as shown below.</p>
<p><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/01/Ellipsoid.jpg"><img class="alignnone size-full wp-image-703" title="Ellipsoid" src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/01/Ellipsoid.jpg" alt="Ellipsoid" width="486" height="314" /></a></p>
<p>A new overview, available in our <a title="online help" href="http://www.agi.com/resources/help/online/AGIComponents/source/Programmer%27s%20Guide/Overview/Graphics/Primitives/Solid.html">online help</a>, 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:</p>
<p><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2010/01/Polyline.jpg"><img class="alignnone size-full wp-image-701" title="Polyline" src="http://blogs.agi.com/insight3d/wp-content/uploads/2010/01/Polyline.jpg" alt="Polyline" width="486" height="174" /></a></p>
<p>Download AGI Components 2010 r1 from <a title="ADN" href="http://adn.agi.com/detailedView.cfm?resourceId=240">ADN</a> and give these new features a try.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=699" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2010/01/26/new-in-agi-components-2010-r1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trapezoidal Texture Projection with OpenGL</title>
		<link>http://blogs.agi.com/insight3d/index.php/2009/11/20/trapezoidal-texture-projection-with-opengl/</link>
		<comments>http://blogs.agi.com/insight3d/index.php/2009/11/20/trapezoidal-texture-projection-with-opengl/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 01:15:08 +0000</pubDate>
		<dc:creator>deron</dc:creator>
				<category><![CDATA[Graphics Developer]]></category>

		<guid isPermaLink="false">http://blogs.agi.com/insight3d/?p=667</guid>
		<description><![CDATA[
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.&#160; 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. [...]]]></description>
			<content:encoded><![CDATA[<p><em></em></p>
<p>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.&#160; 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.</p>
<p>Fig. 1 shows an image captured from the viewpoint of a simulated UAV camera.&#160; While the image itself is exactly as it was, the image is not correctly positioned on the terrain.&#160; As mentioned, the image edges align with latitudinal and longitudinal lines.&#160; </p>
<table cellspacing="0" cellpadding="2" width="504" border="0">
<tbody>
<tr>
<td valign="top" width="502"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidNotRotated.png"><img title="trapezoidNotRotated" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="402" alt="trapezoidNotRotated" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidNotRotated_thumb.png" width="502" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="502"><strong>Fig. 1</strong></td>
</tr>
</tbody>
</table>
<p>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. </p>
<table cellspacing="0" cellpadding="2" width="502" border="0">
<tbody>
<tr>
<td valign="top" width="502"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidRotated.png"><img title="trapezoidRotated" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="402" alt="trapezoidRotated" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidRotated_thumb.png" width="502" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="502"><strong>Fig. 2</strong></td>
</tr>
</tbody>
</table>
<p>This capability has been added to Insight3D’s&#160; <a href="http://www.agi.com/resources/help/online/AGIComponents/source/Programmer%27s%20Guide/Overview/Graphics/Primitives/SurfaceMesh.html">Surface Mesh Primitive</a> for our upcoming r8 release.&#160; I’ll wait until r8 is out to discuss the new interfaces and how this method differs from <a href="http://www.agi.com/resources/help/online/AGIComponents/source/Programmer%27s%20Guide/Overview/Graphics/Imaging/RasterStream.html">projecting an image onto the terrain</a>.</p>
<p>In this post, I’ll discuss how we use <a href="http://www.opengl.org">OpenGL</a> to remap the image of fig. 1 to that of fig. 2.</p>
<p> <span id="more-667"></span><br />
<h3>Perspective Texture Projection</h3>
<p>The goal is to remap the texture coordinates from one trapezoid to another.&#160; Let’s begin with an example.&#160; Fig 3a shows an image, a blue square with a red border, mapped to a square, while the other figures show a remapping of that square to a trapezoid with an outline of the original square shown as reference.</p>
<table cellspacing="0" cellpadding="0" width="502" border="0">
<tbody>
<tr>
<td valign="top" width="502"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/comparison.png"><img title="comparison" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="comparison" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/comparison_thumb.png" width="498" border="0" /></a> </td>
</tr>
<tr>
<td width="502">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; a. Original&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; b. Orthographic&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; c. Perspective</td>
</tr>
<tr>
<td align="center" width="502"><strong>Fig. 3</strong></td>
</tr>
</tbody>
</table>
<p>One obvious way to map to the trapezoid would be to just move the vertices.&#160; In fig 3b, the vertex positions have been moved while the texture coordinates remain that same as in fig 3a.&#160; This results in an orthographic projection where the texture coordinates are linearly interpolated across the trapezoid.&#160; Given that we want a perspective projection, this is incorrect.</p>
<p>In fig 3c, the vertex positions have been moved, and the texture coordinates have been altered.&#160; This trapezoid appears to be a rectangle closer to the viewer on the left side and farther away on the right; however,&#160; the trapezoid is actually in a plane perpendicular to the viewer, i.e. flat to your display.&#160; A perspective transform has been applied to the texture coordinates.&#160; This is how the UAV image should be placed onto the terrain.&#160; How is this transform computed?</p>
<h3>The Texture Matrix</h3>
<p>A texture coordinate is defined by the vector (s, t, r,&#160; q).&#160; Most graphics developers are familiar with using s and t to map a 2D texture to a triangle; in this case, r and q default to 0 and 1 respectively.&#160; The value r is used for 3D textures and so is ignored here.&#160; I’ll get to q in a moment.</p>
<p>In the OpenGL fixed function pipeline, each texture coordinate (s, t, r,&#160; q) is multiplied by a <a href="http://glprogramming.com/red/chapter09.html#name17">4x4 texture matrix</a> as shown in eq. 1.</p>
<table cellspacing="0" cellpadding="0" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq0.png"><img title="trapezoidEq0" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="trapezoidEq0" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq0_thumb.png" width="271" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Eq. 1</strong></td>
</tr>
</tbody>
</table>
<p>Since OpenGL interprets (s’, t’, r’, q’) as a <a href="http://en.wikipedia.org/wiki/Homogeneous_coordinates">homogeneous coordinate</a>, s’, t’,&#160; and r’ are next divided by q’ as shown in eqs. 2, 3 and 4.&#160; This is the perspective divide, and is necessary to produce fig 3c.</p>
<table cellspacing="0" cellpadding="2" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq3.png"><img title="trapezoidEq3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="88" alt="trapezoidEq3" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq3_thumb.png" width="108" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Eqs. 2, 3, 4</strong></td>
</tr>
</tbody>
</table>
<p>Coordinate (s’’, t’’, r’’) is used to sample the texture.&#160; For a 2D texture, only s’’ and t’’ are used.</p>
<h3>Computing the Texture Matrix</h3>
<p>Remapping requires a texture matrix that maps (s, t) in fig 3c to (s’’, t’’) in fig. 3a.</p>
<p>Since only a 2D texture is being considered, the 3D components of the matrix and vectors are zeroed out; m<sub class="sub">44</sub> is set to 1 as this is a homogenous matrix; m<sub class="sub">33</sub> is inconsequential as that value is multiplied by 0 in the matrix multiplication.</p>
<p><strong></strong></p>
<table cellspacing="0" cellpadding="2" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq1.png"><img title="trapezoidEq1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="trapezoidEq1" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq1_thumb.png" width="260" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Eq. 5</strong></td>
</tr>
</tbody>
</table>
<p>After multiplication,</p>
<table cellspacing="0" cellpadding="2" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq678.png"><img title="trapezoidEq678" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="88" alt="trapezoidEq678" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq678_thumb.png" width="226" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Eqs. 6, 7 , 8</strong></td>
</tr>
</tbody>
</table>
<p>After multiplying both sides of eqs. 2 and 3 by q’, and then plugging in eqs. 6, 7, and 8,</p>
<table cellspacing="0" cellpadding="2" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq910.png"><img title="trapezoidEq910" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="63" alt="trapezoidEq910" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq910_thumb.png" width="398" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Eqs. 9, 10</strong></td>
</tr>
</tbody>
</table>
<p>Eqs. 9 and 10 are rearranged to form two linear equations.</p>
<table cellspacing="0" cellpadding="2" width="535" border="0">
<tbody>
<tr>
<td align="center" width="533"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq1112.png"><img title="trapezoidEq1112" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="64" alt="trapezoidEq1112" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidEq1112_thumb.png" width="604" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="533"><strong>Eqs. 11, 12</strong></td>
</tr>
</tbody>
</table>
<p>There are eight unknown matrix components to solve.&#160;&#160; The mapping for the corners to go from figs. 3c to 3a are:</p>
<table cellspacing="0" cellpadding="0" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidFig4.png"><img title="trapezoidFig4" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="160" alt="trapezoidFig4" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidFig4_thumb.png" width="208" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Fig 4.</strong></td>
</tr>
</tbody>
</table>
<p>This yields eight equations with eight unknowns. Using a linear equation solver, the texture matrix can be computed.</p>
<h3>Applying the Texture Matrix</h3>
<p>If you are using the OpenGL fixed function pipeline, after loading this matrix to the <a href="http://glprogramming.com/red/chapter09.html#name17">OpenGL matrix stack</a>, there are two basic ways to render the texture and geometry.</p>
<p>You can move the vertex positions and use the (s, t) texture coordinates.</p>
<p>Alternatively, you could keep the original vertex positions and (s’’, t’’) texture coordinates.&#160; You will have to specify a border color for the texture.</p>
<pre class="csharp"><span style="color: #FF0000;">float</span> borderColor<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">4</span><span style="color: #000000;">&#93;</span> = <span style="color: #000000;">&#123;</span><span style="color: #FF0000;">126</span>.0f, <span style="color: #FF0000;">126</span>.0f, <span style="color: #FF0000;">126</span>.0f, <span style="color: #FF0000;">0</span>.0f<span style="color: #000000;">&#125;</span>;
glTexParameterfv<span style="color: #000000;">&#40;</span>GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor<span style="color: #000000;">&#41;</span>;
glTexParameteri<span style="color: #000000;">&#40;</span>GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER<span style="color: #000000;">&#41;</span>;
glTexParameteri<span style="color: #000000;">&#40;</span>GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER<span style="color: #000000;">&#41;</span>;</pre>
<p>When rendering, you must enable the alpha test.</p>
<pre class="csharp">glAlphaFunc<span style="color: #000000;">&#40;</span>GL_GREATER, <span style="color: #FF0000;">0</span>.0f<span style="color: #000000;">&#41;</span>;
glEnable<span style="color: #000000;">&#40;</span>GL_ALPHA_TEST<span style="color: #000000;">&#41;</span>;</pre>
<p>If you do not, the texture will bleed beyond its border as shown in fig. 5. </p>
<table cellspacing="0" cellpadding="0" width="504" border="0">
<tbody>
<tr>
<td align="center" width="504"><a href="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidFig5.png"><img title="trapezoidFig5" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="trapezoidFig5" src="http://blogs.agi.com/insight3d/wp-content/uploads/2009/11/trapezoidFig5_thumb.png" width="166" border="0" /></a> </td>
</tr>
<tr>
<td align="center" width="504"><strong>Fig. 5</strong></td>
</tr>
</tbody>
</table>
<p>Of course if you are using shaders instead of the fixed function pipeline, you can still easily do either way.&#160; There are various other combinations that will work too.</p>
<p>Our unique method for rendering the surface mesh primitive requires that we use the second method.</p>
<h3>Footnoticed</h3>
<p>Benjamin Supnik’s <a title="http://hacksoflife.blogspot.com/" href="http://hacksoflife.blogspot.com/">blog</a> posts on this topic <a title="http://hacksoflife.blogspot.com/2008/08/perspective-correct-texturing-in-opengl.html" href="http://hacksoflife.blogspot.com/2008/08/perspective-correct-texturing-in-opengl.html">here</a> and <a title="http://hacksoflife.blogspot.com/2009/11/perspective-correct-texturing-q.html" href="http://hacksoflife.blogspot.com/2009/11/perspective-correct-texturing-q.html">here</a> were very helpful.&#160; He explains much of what I have and more.&#160; Hopefully though, I have added to understanding this topic.</p>
 <img src="http://blogs.agi.com/insight3d/wp-content/plugins/feed-statistics.php?view=1&post_id=667" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.agi.com/insight3d/index.php/2009/11/20/trapezoidal-texture-projection-with-opengl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
