<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Code Laboratorium &#187; projects</title>
	<atom:link href="http://codelab.wordpress.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://codelab.wordpress.com</link>
	<description>Musings of a grumpy coder</description>
	<lastBuildDate>Fri, 30 Oct 2009 03:57:57 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='codelab.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5e7c29372947f41bc38ed00ff54f9e2a?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Code Laboratorium &#187; projects</title>
		<link>http://codelab.wordpress.com</link>
	</image>
			<item>
		<title>FreeGLUT spaceball patch</title>
		<link>http://codelab.wordpress.com/2009/10/16/freeglut-spaceball-patch/</link>
		<comments>http://codelab.wordpress.com/2009/10/16/freeglut-spaceball-patch/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 05:41:21 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[freeglut]]></category>
		<category><![CDATA[glut]]></category>
		<category><![CDATA[space navigator]]></category>
		<category><![CDATA[spaceball]]></category>
		<category><![CDATA[spacenav]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=91</guid>
		<description><![CDATA[The original GLUT library used to support some less well-known input devices under IRIX, such as the Spaceball, a true 3D input device which can be used to control all 6 degrees of freedom (3 axis of rotation and 3 axis of translation) simultaneously. Unfortunately, nowadays, the more &#8220;exotic&#8221; input callbacks of GLUT such as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=91&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The original GLUT library used to support some less well-known input devices under IRIX, such as the Spaceball, a true 3D input device which can be used to control all 6 degrees of freedom (3 axis of rotation and 3 axis of translation) simultaneously. Unfortunately, nowadays, the more &#8220;exotic&#8221; input callbacks of GLUT such as the spaceball are left unimplemented.</p>
<p>So, yesterday I sat down and implemented the missing spaceball bits of <a href="http://freeglut.sourceforge.net">FreeGLUT</a>, which is the most widely used free GLUT implementation.</p>
<p>To avoid adding any extra dependencies to freeglut, I just ripped the relevant code from libspnav, which is part of my <a href="http://spacenav.sourceforge.net">free spacenav driver</a> project, and added it directly into freeglut.</p>
<p><a href="http://spacenav.sourceforge.net/glut">Here&#8217;s the patch</a> against the current freeglut svn head, as well as instructions on how to check out freeglut and apply it.</p>
<p>I&#8217;ve also submitted it to the freeglut-devel mailing list, so hopefully they&#8217;ll merge it and we&#8217;ll have spaceball input callbacks available with the prepackaged glut that comes with any GNU/Linux distribution in the future.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=91&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2009/10/16/freeglut-spaceball-patch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>
	</item>
		<item>
		<title>S-ray goes public</title>
		<link>http://codelab.wordpress.com/2009/10/04/s-ray-goes-public/</link>
		<comments>http://codelab.wordpress.com/2009/10/04/s-ray-goes-public/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 02:25:51 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[caustics]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[global illumination]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[monte carlo]]></category>
		<category><![CDATA[photon mapping]]></category>
		<category><![CDATA[ray tracing]]></category>
		<category><![CDATA[renderer]]></category>
		<category><![CDATA[rendering]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=85</guid>
		<description><![CDATA[
S-ray is a photorealistic off-line renderer I&#8217;ve been writting on and off for the past few months. It&#8217;s basically a monte carlo ray tracer using the photon mapping algorithm to simulate global illumination effects, such as indirect diffuse lighting and caustics.
So, it&#8217;s time to open up the code and continue development in the open. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=85&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://code.google.com/p/sray/logo?logo_id=1254595975"></p>
<p>S-ray is a photorealistic off-line renderer I&#8217;ve been writting on and off for the past few months. It&#8217;s basically a monte carlo ray tracer using the photon mapping algorithm to simulate global illumination effects, such as indirect diffuse lighting and caustics.</p>
<p>So, it&#8217;s time to open up the code and continue development in the open. The code is available only through subversion at the moment, no official &#8220;0.1&#8243; release shall be made until at least the most important outstanding bugs are fixed. However, feel free to checkout the code and play around all you want. </p>
<p>The project is hosted at googlecode, and you can find it at: <a href="http://code.google.com/p/sray">http://code.google.com/p/sray</a><br />
As always, ideas, comments, or bug fixes are more than welcome.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=85&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2009/10/04/s-ray-goes-public/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>

		<media:content url="http://code.google.com/p/sray/logo?logo_id=1254595975" medium="image" />
	</item>
		<item>
		<title>s-ray: caustics through photon mapping</title>
		<link>http://codelab.wordpress.com/2009/09/02/s-ray-caustics-through-photon-mapping/</link>
		<comments>http://codelab.wordpress.com/2009/09/02/s-ray-caustics-through-photon-mapping/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 18:07:01 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[caustics]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[photon mapping]]></category>
		<category><![CDATA[ray tracing]]></category>
		<category><![CDATA[s-ray]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=78</guid>
		<description><![CDATA[The main feature set that I had planned for my new s-ray renderer is almost complete. The renderer is now capable of producing caustics, that is light being focused on surfaces by curved mirrors or lenses (or otherwise transmission through refractive objects).
Standard recursive ray tracing is incapable of producing caustics; instead a two-pass algorithm called [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=78&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The main feature set that I had planned for my new s-ray renderer is almost complete. The renderer is now capable of producing <a href="http://en.wikipedia.org/wiki/Caustic_(optics)">caustics</a>, that is light being focused on surfaces by curved mirrors or lenses (or otherwise transmission through refractive objects).</p>
<p>Standard recursive ray tracing is incapable of producing caustics; instead a two-pass algorithm called <a href="http://en.wikipedia.org/wiki/Photon_mapping">photon mapping</a> is used. Photon mapping works by tracing random photons as they leave the light sources and bounce around the scene, finally ending up on various surfaces. The second pass works just like regular ray tracing, with the difference that on every ray hit, the density of stored photons around that point is used to estimate the amount of light that has arrived there after being reflected or refracted.</p>
<p>Here are a couple of images produced by s-ray, showing both reflective and refractive caustics:</p>
<table>
<tr>
<td>
<div id="attachment_79" class="wp-caption alignnone" style="width: 310px"><img src="http://codelab.files.wordpress.com/2009/09/caust_ring.jpg?w=300&#038;h=225" alt="reflective caustics" title="caust_ring" width="300" height="225" class="size-medium wp-image-79" /><p class="wp-caption-text">reflective caustics</p></div></td>
<td><div id="attachment_80" class="wp-caption alignnone" style="width: 310px"><img src="http://codelab.files.wordpress.com/2009/09/caust_sph.jpg?w=300&#038;h=187" alt="refractive caustics" title="caust_sph" width="300" height="187" class="size-medium wp-image-80" /><p class="wp-caption-text">refractive caustics</p></div></td>
</tr>
</table>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=78&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2009/09/02/s-ray-caustics-through-photon-mapping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>

		<media:content url="http://codelab.files.wordpress.com/2009/09/caust_ring.jpg?w=300" medium="image">
			<media:title type="html">caust_ring</media:title>
		</media:content>

		<media:content url="http://codelab.files.wordpress.com/2009/09/caust_sph.jpg?w=300" medium="image">
			<media:title type="html">caust_sph</media:title>
		</media:content>
	</item>
		<item>
		<title>Spacenavd 0.4</title>
		<link>http://codelab.wordpress.com/2009/07/24/spacenavd-0-4/</link>
		<comments>http://codelab.wordpress.com/2009/07/24/spacenavd-0-4/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 23:39:43 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[3dconnexion]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[space navigator]]></category>
		<category><![CDATA[space pilot]]></category>
		<category><![CDATA[spaceball]]></category>
		<category><![CDATA[spacenav]]></category>
		<category><![CDATA[spacenavd]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=67</guid>
		<description><![CDATA[
I just released version 0.4 of my spacenavd user space driver for 6dof input devices, which fixes some long-standing reliability and ease of use issues.
First and foremost, I cleaned up the code, which started initially as a hack, and ended as an unmaintainable mess. I&#8217;ve split and isolated the linux specific parts so that I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=67&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://codelab.files.wordpress.com/2009/07/spnavbar1.jpg"><br />
I just released <a href="https://sourceforge.net/projects/spacenav/files/spacenav%20daemon/spacenavd%200.4/spacenavd-0.4.tar.gz/download">version 0.4 of my spacenavd user space driver for 6dof input devices</a>, which fixes some long-standing reliability and ease of use issues.</p>
<p>First and foremost, I cleaned up the code, which started initially as a hack, and ended as an unmaintainable mess. I&#8217;ve split and isolated the linux specific parts so that I may add support for other operating systems in the future (specifically I&#8217;d like to find the chance to add freebsd support soon).</p>
<p>I&#8217;ve also dropped the dodgy 30sec polling cycle to aquire the device if it&#8217;s disconnected, which had the effect of being able to use the device at some seemingly random time after plugging it in, and started using the <em>KOBJECT_UEVENT netlink socket</em> to get asyncronous notification of hotplug events from the kernel. Now the device lights up and is ready to use immediatly upon plugging it in the USB port.</p>
<p>More importantly, I lifted the responsibility of notifying the daemon that X has started and it may connect and start listening for X11 clients from the user. By using the excellent <em>inotify</em> API to detect when the X server&#8217;s socket is created in <code>/tmp/.X11-unix</code>, the daemon is now able to wake up and connect to the X server automatically as soon as it&#8217;s started up.</p>
<p>And finally, now spacenavd actively grabs the device when it starts, which solves the problem of the X server trying to use it as a mouse, without having to resort to messing around with the user&#8217;s HAL config files, to make hald ignore it.</p>
<p>To celebrate this milestone release, the free spacenav project now has a newly redesigned web site, which may help attract more attention compared to the previous plain-text web page. Thanks go to <a href="http://cybernoid.gr">cybernoid</a> for the <a href="http://spacenav.sourceforge.net">new web site</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=67&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2009/07/24/spacenavd-0-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>

		<media:content url="http://codelab.files.wordpress.com/2009/07/spnavbar1.jpg" medium="image" />
	</item>
		<item>
		<title>Sray raytracer under development</title>
		<link>http://codelab.wordpress.com/2009/06/12/sray-raytracer-under-development/</link>
		<comments>http://codelab.wordpress.com/2009/06/12/sray-raytracer-under-development/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 23:56:13 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=61</guid>
		<description><![CDATA[My new ray tracer is starting to look good, even though there&#8217;s still quite a lot of work to do before its first public release.
Anyway, I was bored today, so I thought I&#8217;d upload a video of an early test. It&#8217;s a test of the keyframe animation system, and of the motion blur effect produced [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=61&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My new ray tracer is starting to look good, even though there&#8217;s still quite a lot of work to do before its first public release.</p>
<p>Anyway, I was bored today, so I thought I&#8217;d upload a video of an early test. It&#8217;s a test of the keyframe animation system, and of the motion blur effect produced through monte carlo (distribution) ray tracing, when a non-zero shutter speed is selected.</p>
<p><a href="http://www.youtube.com/watch?v=Oem865j2u0A"><img src="http://codelab.files.wordpress.com/2009/06/mblur.jpg?w=300&#038;h=225" alt="sray motion blur test" title="sray motion blur test" width="300" height="225" class="alignnone size-medium wp-image-63" /></a><br />
Here&#8217;s a link to the <a href="http://www.youtube.com/watch?v=Oem865j2u0A">video on youtube</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=61&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2009/06/12/sray-raytracer-under-development/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>

		<media:content url="http://codelab.files.wordpress.com/2009/06/mblur.jpg?w=300" medium="image">
			<media:title type="html">sray motion blur test</media:title>
		</media:content>
	</item>
		<item>
		<title>Spacenav Project</title>
		<link>http://codelab.wordpress.com/2008/03/23/spacenav-project/</link>
		<comments>http://codelab.wordpress.com/2008/03/23/spacenav-project/#comments</comments>
		<pubDate>Sun, 23 Mar 2008 16:54:28 +0000</pubDate>
		<dc:creator>Nuclear</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://codelab.wordpress.com/?p=14</guid>
		<description><![CDATA[A few months ago, I bought a really nifty input device called &#8220;space navigator&#8221;. These devices, produced by &#8220;3dconnexion&#8221;, a logitech subsidiary, enable the user to intuitively manipulate a 3D object or viewport with 6 degrees of freedom (thus commonly refered to as 6dof devices). For instance, one could rotate around a 3D object while [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=14&subd=codelab&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A few months ago, I bought a really nifty input device called &#8220;space navigator&#8221;. These devices, produced by &#8220;3dconnexion&#8221;, a logitech subsidiary, enable the user to intuitively manipulate a 3D object or viewport with 6 degrees of freedom (thus commonly refered to as 6dof devices). For instance, one could rotate around a 3D object while at the same time zooming in and slightly panning to the side to inspect a detail hidden there, all in simple fluid motions produced by manipulating a weird knob-looking thing.</p>
<p>3Dconnexion does provide a linux driver, called 3dxsrv, in the form of a user-space daemon. Applications talk to tha daemon and get motion, and button press events from the device, through an X11-based protocol. The problem is: it&#8217;s proprietary, and it doesn&#8217;t work. Either one of these is problematic in its own right, but the combination demands drastic measures. Thus, I decided to write a free drop-in replacement of the daemon myself. The daemon is called <em>spacenavd</em>, it&#8217;s compatible and transparent to any application that used to work with the 3dconnexion driver, and it also provides an alternative non-X11 interface through UNIX sockets.</p>
<p>3Dconnexion also provides a library, called magellan, which is supposed to make interfacing with the daemon easy. Unfortunately, the library is also proprietary (the code is there, but with nasty restrictions in the license text), and is utter crap API-wise. So, I decided to replace the library too, with a free library called <em>libspnav</em>. It&#8217;s got an orthogonal much easier to understand and use API, and supports both spacenavd, and the 3dconnexion driver. When working with spacenavd, it can optionally use the simpler alternative interface which doesn&#8217;t require an X server to be running or any Xlib code in the application. A magellan source-compatibility wrapper is also provided, to easily port existing applications to the free replacement library, thus freeing them from the shady licensing terms of magellan with zero effort.</p>
<p>The whole project is called &#8220;free spacenav&#8221;, not very imaginative really, and I just released version 0.2 of both the daemon and the library. You can find everything, and more details on the project itself, at the <a href="http://spacenav.sourceforge.net">spacenav website</a>. The daemon is released under the terms of the GNU GPLv3, while the library is available under the 3-clause BSD license.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codelab.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codelab.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codelab.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codelab.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codelab.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codelab.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codelab.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codelab.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codelab.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codelab.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codelab.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codelab.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codelab.wordpress.com&blog=2300657&post=14&subd=codelab&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codelab.wordpress.com/2008/03/23/spacenav-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Nuclear</media:title>
		</media:content>
	</item>
	</channel>
</rss>