<?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>20papercups :: Michael Marner&#039;s Website</title>
	<atom:link href="http://www.20papercups.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.20papercups.net</link>
	<description>The (awesome) website of Michael Marner</description>
	<lastBuildDate>Wed, 02 May 2012 00:58:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>My Website is Broken!</title>
		<link>http://www.20papercups.net/uncategorized/my-website-is-broken/</link>
		<comments>http://www.20papercups.net/uncategorized/my-website-is-broken/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 12:02:00 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=461</guid>
		<description><![CDATA[Hi all Just a quick note to say that my website is broken! Seems that either a WordPress or Dreamhost problem has caused some script thing to replace all my PHP files with some dodgy eval(base64_decode(&#8230;)) type thing that redirected visitors to some malware site. The malware redirect is gone, but my WordPress install has [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all</p>
<p>Just a quick note to say that my website is broken!</p>
<p>Seems that either a WordPress or Dreamhost problem has caused some script thing to replace all my PHP files with some dodgy eval(base64_decode(&#8230;)) type thing that redirected visitors to some malware site. The malware redirect is gone, but my WordPress install has fallen apart..</p>
<p>I&#8217;m working on getting it fixed as soon as possible, thanks for your patience.</p>
<p>Cheers<br />
Michael</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/uncategorized/my-website-is-broken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AUIC 2012 Roundup</title>
		<link>http://www.20papercups.net/random-news/auic-2012-roundup/</link>
		<comments>http://www.20papercups.net/random-news/auic-2012-roundup/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 01:08:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[publications]]></category>
		<category><![CDATA[Random News]]></category>
		<category><![CDATA[UniSA]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[auic]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[publication]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=452</guid>
		<description><![CDATA[So the Australasian User Interface Conference for 2012 has been and gone. The Wearable Computer Lab presented two full papers and two posters, of which I was an author of one The papers we presented are listed below, and the publication page has been updated so you can get the PDFs. Cheers! E. T. A. [...]]]></description>
			<content:encoded><![CDATA[<p>So the Australasian User Interface Conference for 2012 has been and gone. The Wearable Computer Lab presented two full papers and two posters, of which I was an author of one <img src='http://www.20papercups.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The papers we presented are listed below, and the publication page has been updated so you can get the PDFs. Cheers!</p>
<div>
<div>
<p>E. T. A. Maas, M. R. Marner, R. T. Smith, and B. H. Thomas, “Supporting Freeform Modelling in Spatial Augmented Reality Environments with a New Deformable Material,” in <em>Proceedings of the 13th Australasian User Interface Conference</em>, Melbourne, Victoria, Australia, 2012. (<a href="http://www.20papercups.net/wp-content/uploads/2009/09/maas-auic2012.pdf">pdf</a>) (<a href="http://www.youtube.com/watch?v=LqsMzRuDZOs" target="_blank">video</a>)</p>
</div>
<div>
<p>T. M. Simon, R. T. Smith, B. H. Thomas, G. S. Von Itzstein, M. Smith, J. Park, and J. Park, “Merging Tangible Buttons and Spatial Augmented Reality to Support Ubiquitous Prototype Designs,” in <em>Proceedings of the 13th Australasian User Interface Conference</em>, Melbourne, Victoria, Australia, 2012.</p>
<p>S. J. O’Malley, R. T. Smith, and B. H. Thomas, “Poster: Data Mining Office Behavioural Information from Simple Sensors,” in <em>Proceedings of the 13th Australasian User Interface Conference</em>, Melbourne, Victoria, Australia, 2012.</p>
<p>T. M. Simon and R. T. Smith, “Poster: Magnetic Substrate for use with Tangible Spatial Augmented Reality in Rapid Prototyping Workflows,” in <em>Proceedings of the 13th Australasian User Interface Conference</em>, Melbourne, Victoria, Australia, 2012.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/random-news/auic-2012-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Arithmetic Suppliment &#8211; Exponents</title>
		<link>http://www.20papercups.net/java-vtm-tutorials/java-arithmetic-suppliment-exponents/</link>
		<comments>http://www.20papercups.net/java-vtm-tutorials/java-arithmetic-suppliment-exponents/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 01:18:01 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Java Video Tutorials]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=445</guid>
		<description><![CDATA[Hey So over on Youtube someone asked me about doing exponents in Java. I didn&#8217;t talk about this in episode 3 of my Java tutorial, so I have created a short supplementary  video looking at some of the more advanced mathematical functions in Java. Short, and to the point. Here it is:]]></description>
			<content:encoded><![CDATA[<p>Hey</p>
<p>So over on Youtube someone asked me about doing exponents in Java. I didn&#8217;t talk about this in episode 3 of my Java tutorial, so I have created a short supplementary  video looking at some of the more advanced mathematical functions in Java. Short, and to the point. Here it is:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/ndRep31eC6w" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-445"></span><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/java-vtm-tutorials/java-arithmetic-suppliment-exponents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How OpenNI Nearly Spoiled The Show</title>
		<link>http://www.20papercups.net/programming/how-openni-nearly-spoiled-the-show/</link>
		<comments>http://www.20papercups.net/programming/how-openni-nearly-spoiled-the-show/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 10:37:01 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Border Project]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[Half Real]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[OpenNI]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=420</guid>
		<description><![CDATA[So, for the last few months I&#8217;ve taken a break from the PhD to do some work for a theatre show for The Border Project, Half Real. There&#8217;s a lot of technology in the show. In particular, most of the set is projected, and we are using a Microsoft Kinect to track the actors on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.20papercups.net/wp-content/uploads/2011/09/halfreal-1.jpg"><img class="alignleft size-thumbnail wp-image-424" title="Half Real" src="http://www.20papercups.net/wp-content/uploads/2011/09/halfreal-1-150x150.jpg" alt="Half Real" width="150" height="150" /></a>So, for the last few months I&#8217;ve taken a break from the PhD to do some work for a theatre show for <a title="The Border Project" href="http://www.theborderproject.com" target="_blank">The Border Project</a>, <a title="Half Real" href="http://www.theborderproject.com/project-half-real.html" target="_blank">Half Real</a>.</p>
<p>There&#8217;s a lot of technology in the show. In particular, most of the set is projected, and we are using a Microsoft Kinect to track the actors on stage, and modifying the projections based on their location.</p>
<p>I&#8217;m working on Linux, and using <a title="OpenNI" href="http://www.openni.org/" target="_blank">OpenNI</a> for interfacing with the Kinect. Things <em>almost</em> worked perfectly. In this post I will document the trials and tribulations of getting the Kinect to work for Half Real.</p>
<p><span id="more-420"></span>I often fall into <a title="Not Invented Here Syndrome" href="http://en.wikipedia.org/wiki/Not_Invented_Here" target="_blank">Not Invented Here Syndrome</a>, and so slowly I&#8217;m trying to get out of it. Obviously, interfacing with hardware like the Kinect is not something I really wanted to do during a 3 month theatre development. My Spatial Augmented Reality framework is built on Linux, so I basically had the option of <a href="http://openkinect.org/wiki/Main_Page" target="_blank">Libfreenect</a> or <a href="http://www.openni.org/" target="_blank">OpenNI</a>. OpenNI appears to be more mature, and so that&#8217;s what I went with.</p>
<p><iframe src="http://www.youtube.com/embed/4nowWxi75jE" frameborder="0" width="640" height="360"></iframe></p>
<p>As you can see, I&#8217;m only really tracking the position of the actors &#8211; we aren&#8217;t using any of the gesture recognition stuff.</p>
<p>During development everything looked peachy. However, during production week when we started running through the whole show, a <em>major</em> issue popped up. It turns out there is a bug buried deep in OpenNI that eventually rears its ugly head if you have a few people running around at the same time:</p>
<pre>Program received signal SIGSEGV, Segmentation fault.
 0x00007ffff215574d in Segmentation::checkOcclusion(int, int, int, int)</pre>
<p>This is a big problem. See, this is a theatre show, where the entire set is projected. If the system crashes, the stage goes black. The operator has to restart and bring the projections up to the right point in the show. It turned out that in our tech previews, the software was crashing 2-3 times per show. This was simply unacceptable.</p>
<p>Thankfully, I was only interested in the positions of the actors. This meant I could run the tracking in a completely different process and send the data to the projection system without too much overhead. So, on the day before I finished working for the project, I had to completely rewrite how the tracking worked.</p>
<h3>The Data We Need</h3>
<p>As I said, we only need position. I didn&#8217;t have to send through any camera images, gesture information, etc. All I needed was:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">struct</span> KinectMessage
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">uint8_t</span> actor_id<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">float</span>   quality<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">float</span>   x<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">float</span>   y<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">float</span>   z<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></div></div>

<p>The process that interfaces with the Kinect simply sent these messages over a TCP connection to the projection system for every actor on stage. TCP worked pretty well. Both processes run on the same system, and the Kinect only updates at 30fps anyway. So you know, there&#8217;s only 510 bytes per second, per actor that needed to be transferred. If I was transferring images, a better <a href="http://en.wikipedia.org/wiki/Inter-process_communication" target="_blank">IPC</a> technique would be required.</p>
<h3>While True</h3>
<p>At this point, the hard work was done. Simply wrap the tracking process in a shell script that loops forever, rerunning the process when the segfault occurs. The projectors never go to black, and the worst case is the tracking lags for a a couple of seconds. Not perfect, but infinitely better.</p>
<p>I guess the moral of this post is to be wary of relying on 3rd party libraries that are not particularly mature. And if you have to (you don&#8217;t have much choice if you want to talk to the Kinect), wrap it up so it can&#8217;t screw you over. TCP worked for me, because I didn&#8217;t need to transfer much data. Even if you were doing the skeleton tracking and gestures, there isn&#8217;t a lot of data to send. If you need the images from the camera, TCP <em>may</em> not be for you. But there are plenty of other IPC techniques that could handle that amount of data (even pipes would do it). I guess the good news is OpenNI is Open Source, so in theory someone can get around to fixing it.</p>
<p>Hope this helps someone.</p>
<p>Michael</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/programming/how-openni-nearly-spoiled-the-show/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect on Ubuntu with OpenNI</title>
		<link>http://www.20papercups.net/programming/kinect-on-ubuntu-with-openni/</link>
		<comments>http://www.20papercups.net/programming/kinect-on-ubuntu-with-openni/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 05:06:57 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[NITE]]></category>
		<category><![CDATA[OpenNI]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=408</guid>
		<description><![CDATA[UPDATED May 1 2012 for the latest versions of everything! I&#8217;ve spent all this morning trying to talk to the Microsoft Kinect using OpenNI. As it turns out, the process is not exceptionally difficult, it&#8217;s just there doesn&#8217;t seem to be any up to date documentation on getting it all working. So, this post should [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.20papercups.net/wp-content/uploads/2011/06/kinect.png"><img class="size-thumbnail wp-image-409 alignleft" title="self portrait" src="http://www.20papercups.net/wp-content/uploads/2011/06/kinect-150x150.png" alt="" width="150" height="150" /></a></p>
<p>UPDATED May 1 2012 for the latest versions of everything!</p>
<p>I&#8217;ve spent all this morning trying to talk to the Microsoft Kinect using <a href="http://openni.org/" target="_blank">OpenNI</a>. As it turns out, the process is not exceptionally difficult, it&#8217;s just there doesn&#8217;t seem to be any up to date documentation on getting it all working. So, this post should fill the void. I describe how to get access to the Kinect working using Ubuntu 11.04, OpenNI, and NITE.<span id="more-408"></span>To talk to the Kinect, there are two basic parts: OpenNI itself, and a Sensor module that is actually responsible for communicating with the hardware. Then, if you need it, there is NITE, which is another module for OpenNI that does skeletal tracking, gestures, and stuff. Depending on how you plan on using the data from the Kinect, you may not need NITE at all.</p>
<p style="text-align: center;"></p>
<h3>Step 1: Prerequisites</h3>
<p>We need to install a bunch of packages for all this to work. Thankfully, the readme file included with OpenNI lists all these. However, to make life easier, this is (as of writing) what you need to install, in addition to all the development packages you (hopefully) already have.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">git</span> build-essential python libusb-<span style="color: #000000;">1.0</span>-<span style="color: #000000;">0</span>-dev freeglut3-dev</pre></div></div>

<p>There are also some optional packages that you can install, depending on whether you want documentation, Mono bindings, etc. Note that on earlier versions the install failed if you didn&#8217;t have doxygen installed, even though it is listed as optional.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> doxygen graphviz mono-complete</pre></div></div>

<h3>Step 2: OpenNI</h3>
<p>OpenNI is a framework for working with what they are calling <em>natural interaction</em> devices.Anyway, this is how it is installed:</p>
<p>Check out from Git</p>
<p>OpenNI is hosted on Github, so checking it out is simple:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> clone https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>OpenNI<span style="color: #000000; font-weight: bold;">/</span>OpenNI.git</pre></div></div>

<p>From there, change into the Platform/Linux-x86/CreateRedist directory, and run the RedistMaker script. Note that even though the directory is named x86, this same directory builds 64 bit versions just fine. So, don&#8217;t fret if you&#8217;re on 64bit Linux.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> OpenNI<span style="color: #000000; font-weight: bold;">/</span>Platform<span style="color: #000000; font-weight: bold;">/</span>Linux<span style="color: #000000; font-weight: bold;">/</span>CreateRedist
<span style="color: #c20cb9; font-weight: bold;">chmod</span> +x RedistMaker
.<span style="color: #000000; font-weight: bold;">/</span>RedistMaker</pre></div></div>

<p>The RedistMaker script will compile everything for you. You then need to change into the Redist directory and run the install script to install the software on your system.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>Redist<span style="color: #000000; font-weight: bold;">/</span>OpenNI-Bin-Dev-Linux-<span style="color: #7a0874; font-weight: bold;">&#91;</span>xxx<span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #7a0874; font-weight: bold;">&#40;</span>where <span style="color: #7a0874; font-weight: bold;">&#91;</span>xxx<span style="color: #7a0874; font-weight: bold;">&#93;</span> is your architecture and this particular OpenNI release<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>install.sh</pre></div></div>

<h3>Step 3: Kinect Sensor Module</h3>
<p>OpenNI doesn&#8217;t actually provide anything for talking to the hardware, it is more just a framework for working with different sensors and devices. You need to install a Sensor module for actually doing the hardware interfacing. Think of an OpenNI sensor module as a device driver for the hardware. You&#8217;ll also note on the OpenNI website that they have a Sensor module that you can download. Don&#8217;t do this though, because that sensor module doesn&#8217;t talk to the Kinect. I love how well documented all this is, don&#8217;t you?</p>
<p>The sensor module you want is also on GitHub, but from a different user. So, we can check out the code. We also need to get the kinect branch, not master.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> clone https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>avin2<span style="color: #000000; font-weight: bold;">/</span>SensorKinect
<span style="color: #7a0874; font-weight: bold;">cd</span> SensorKinect</pre></div></div>

<p>The install process for the sensor is pretty much the same as for OpenNI itself:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> Platform<span style="color: #000000; font-weight: bold;">/</span>Linux<span style="color: #000000; font-weight: bold;">/</span>CreateRedist
<span style="color: #c20cb9; font-weight: bold;">chmod</span> +x RedistMaker
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>RedistMaker
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>Redist<span style="color: #000000; font-weight: bold;">/</span>Sensor-Bin-Linux-<span style="color: #7a0874; font-weight: bold;">&#91;</span>xxx<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>where <span style="color: #7a0874; font-weight: bold;">&#91;</span>xxx<span style="color: #7a0874; font-weight: bold;">&#93;</span> is your architecture and this particular OpenNI release<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x install.sh
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>install.sh</pre></div></div>

<p>On Ubuntu, regular users are only given read permission to unknown USB devices. The install script puts in some udev rules to fix this, but if you find that none of the samples work unless you run them as root, try unplugging and plugging the Kinect back in again, to make the new rules apply.</p>
<h3>Step 4: Test the OpenNI Samples</h3>
<p>At this point, you have enough installed to get data from the Kinect. The easiest way to verify this is to run one of the OpenNI samples.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> OpenNI<span style="color: #000000; font-weight: bold;">/</span>Platform<span style="color: #000000; font-weight: bold;">/</span>Linux-x86<span style="color: #000000; font-weight: bold;">/</span>Bin<span style="color: #000000; font-weight: bold;">/</span>Release
.<span style="color: #000000; font-weight: bold;">/</span>Sample-NiSimpleViewer</pre></div></div>

<p>You should see a yellow-black depth image. At this point, you&#8217;re left with (optionally) installing the higher level NITE module.</p>
<h3>Step 5: Install NITE (optional)</h3>
<p>Firstly, you need to obtain NITE. Go to the following link, select OpenNI compliant Middleware Binaries.</p>
<p><a href="http://www.openni.org/Downloads/OpenNIModules.aspx" target="_blank">http://www.openni.org/Downloads/OpenNIModules.aspx</a></p>
<p>Download either the 32 or 64 bit version, depending on your platform. As of writing they only have versions for Ubuntu 10.10, but these seem to work fine with 11.04 as well.</p>
<p>Extract the archive, and run the installer:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>install.sh</pre></div></div>

<p>At some point, you may be asked for a license key. A working license key can be found <a href="http://www.google.com/search?q=NITE+license+key" target="_blank">just about anywhere on the Internet</a>. I don&#8217;t think PrimeSense care, or maybe this is a non-commercial license or something. But whatever, just copy that license into the console, including the equals sign at the end, and NITE will install just fine.</p>
<h3>Conclusion</h3>
<p>After following these steps, you will be able to write programs that use the Microsoft Kinect through OpenNI and NITE middleware. I hope this helps someone, because I spent a lot of time screwing around this morning trying to get it all to work. Like I said, the process is pretty straight forward, it just hasn&#8217;t been written down in one place (or I suck at google).</p>
<p style="text-align: center;"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/programming/kinect-on-ubuntu-with-openni/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Latex, Texlipse, and EPS Figures</title>
		<link>http://www.20papercups.net/latex/latex-texclipse-and-eps-figures/</link>
		<comments>http://www.20papercups.net/latex/latex-texclipse-and-eps-figures/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 01:00:20 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eps]]></category>
		<category><![CDATA[epstopdf]]></category>
		<category><![CDATA[figure]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[texlipse]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=383</guid>
		<description><![CDATA[I&#8217;m currently in the early stages of writing my PhD thesis. I&#8217;m writing it using LaTeX, and I&#8217;m trying to get the perfect build system and editing environment going. Yesterday I had a look at Texlipse, a plugin for Eclipse. There was one problem: EPS figures didn&#8217;t work. In newish versions of Latex, if you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.20papercups.net/wp-content/uploads/2011/06/800px-LaTeX_logo.svg_-e1308095178677.png"><img class="size-full wp-image-384 alignleft" title="800px-LaTeX_logo.svg" src="http://www.20papercups.net/wp-content/uploads/2011/06/800px-LaTeX_logo.svg_-e1308095178677.png" alt="" width="150" height="62" /></a> I&#8217;m currently in the early stages of writing my PhD thesis. I&#8217;m writing it using LaTeX, and I&#8217;m trying to get the <em>perfect</em> build system and editing environment going. Yesterday I had a look at Texlipse, a plugin for Eclipse. There was one problem: EPS figures didn&#8217;t work.</p>
<p>In newish versions of Latex, if you use the epstopdf package, your images are converted on the fly, but this wasn&#8217;t  working in Texlipse. Luckily the fix is easy, and the rest of this post explains what to do.<br />
<span id="more-383"></span></p>
<p style="text-align: center;"></p>
<p>Lets start with a minimum working example to demonstrate the problem:</p>

<div class="wp_syntax"><div class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #E02020; ">\</span><span style="color: #800000;">documentclass</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">minimal</span><span style="color: #E02020; ">}</span>
<span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">epsfig</span><span style="color: #E02020; ">}</span>
<span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">epstopdf</span><span style="color: #E02020; ">}</span>
<span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">graphicx</span><span style="color: #E02020; ">}</span>
&nbsp;
<span style="color: #C00000; font-weight: normal;">\begin</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #0000D0; font-weight: normal;">document</span></span><span style="color: #E02020; ">}</span>
&nbsp;
Here's an EPS Figure:
&nbsp;
<span style="color: #E02020; ">\</span><span style="color: #800000;">includegraphics</span><span style="color: #E02020; ">[</span><span style="color: #C08020; font-weight: normal;">height=5cm</span><span style="color: #E02020; ">]{</span><span style="color: #2020C0; font-weight: normal;">unisa</span><span style="color: #E02020; ">}</span>
&nbsp;
<span style="color: #C00000; font-weight: normal;">\end</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #0000D0; font-weight: normal;">document</span></span><span style="color: #E02020; ">}</span></pre></div></div>

<p>Download <a title="Unisa EPS Logo" href="20papercups.net/wp-content/uploads/2011/06/unisa.eps">unisa.eps</a>, and try this yourself. On Ubuntu, I get output that looks like this:</p>
<div id="attachment_391" class="wp-caption aligncenter" style="width: 254px"><a href="http://www.20papercups.net/wp-content/uploads/2011/06/eps-broken.png"><img class="size-full wp-image-391" title="eps-broken" src="http://www.20papercups.net/wp-content/uploads/2011/06/eps-broken.png" alt="" width="244" height="193" /></a><p class="wp-caption-text">Broken PDFLatex output on Ubuntu</p></div>
<p style="text-align: center;">&nbsp;</p>
<p>If you look at the console output generated by TexLipse, you will see one of two problems, described below.</p>
<h3>Problem 1: Shell escape feature is not enabled</h3>
<p>I encountered this problem on Ubuntu. If you see the following output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pdflatex<span style="color: #000000; font-weight: bold;">&gt;</span> Package epstopdf Warning: Shell escape feature is not enabled.</pre></div></div>

<p>Then you have encountered this. The fix is quite easy.</p>
<ol>
<li>Open up Eclipse Preferences</li>
<li>Click on Texlipse Builder Settings</li>
<li>Click on PdfLatex program, and press the edit button</li>
<li>Add &#8211;shell-escape to the argument list as the first argument.</li>
<li>You&#8217;re done! Rebuild your project and it should work fine.</li>
</ol>
<h3>Problem 2: Cannot Open Ghostscript</h3>
<p>I encountered this problem on OSX. Weird how the two systems have the same symptoms with different causes, but whatever. If you see the output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pdflatex<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">!!!</span> Error: Cannot open Ghostscript <span style="color: #000000; font-weight: bold;">for</span> piped input</pre></div></div>

<p>Then you are suffering from problem 2. This problem is caused by the PATH environment variable not being set correctly when Texclipse runs pdflatex. Essentially, the Ghostcript program, gs, cannot be found by pdflatex. The fix is to add an environment variable to Texlipse&#8217;s builder settings so the path is corrected.</p>
<h4>Step 1: Locate Ghostscript, Repstopdf, and Perl</h4>
<p>Open up a terminal, and type:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #c20cb9; font-weight: bold;">gs</span></pre></div></div>

<p>This should show you the directory where Ghostscript lives on your system. On my laptop it is:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin</pre></div></div>

<p>Repeat the process with repstopdf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">which</span> repstopdf</pre></div></div>

<p>Which on my system gives:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>texbin</pre></div></div>

<p>And with perl:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #c20cb9; font-weight: bold;">perl</span></pre></div></div>

<p>gives me:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin</pre></div></div>

<p>The exact paths will depend on how you have installed these things. For example, Perl lives in /opt on my system because I installed it using macports. It doesn&#8217;t really matter. However, if you don&#8217;t have any of these packages installed, you will need to do so.</p>
<h4>Step 2: Create the Environment Variable</h4>
<p>Now that we know where the programs are installed, we need to create a PATH environment variable for Texlipse to use.</p>
<ol>
<li>Open up Eclipse Preferences</li>
<li>Go down to Environment, which is under Texlipse Builder Settings</li>
<li>Click new to create a new environment variable</li>
<li>the key should be set to PATH. The value should be the three directories, separated by colons (:). For example, on my system:<br />
<a href="http://www.20papercups.net/wp-content/uploads/2011/06/add-environment-variable.png"><img class="aligncenter size-full wp-image-402" title="add-environment-variable" src="http://www.20papercups.net/wp-content/uploads/2011/06/add-environment-variable.png" alt="" width="453" height="210" /></a></li>
<li>You&#8217;re done! Save the settings and everything should work.</li>
</ol>
<h3>Conclusions</h3>
<p>If you complete the steps above, depending on what problem you had  (you may have even had both), then you should see the correct output,  which looks like this:</p>
<div id="attachment_403" class="wp-caption aligncenter" style="width: 254px"><a href="http://www.20papercups.net/wp-content/uploads/2011/06/eps-fixed.png"><img class="size-full wp-image-403" title="eps-fixed" src="http://www.20papercups.net/wp-content/uploads/2011/06/eps-fixed.png" alt="" width="244" height="193" /></a><p class="wp-caption-text">EPS Figure working!</p></div>
<p>Well, I hope that helps someone. Its surprising that this error came up on both of my computers. Searching the internet finds others with the same problem, but as yet no solutions. This post should fix that.</p>
<p style="text-align: center;"></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/latex/latex-texclipse-and-eps-figures/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Graphics Applications and Libraries Month at Packt Publishing</title>
		<link>http://www.20papercups.net/random-news/graphics-applications-and-libraries-month-at-packt-publishing/</link>
		<comments>http://www.20papercups.net/random-news/graphics-applications-and-libraries-month-at-packt-publishing/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 23:13:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Random News]]></category>
		<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[openscenegraph]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=371</guid>
		<description><![CDATA[Hey guys So a little while ago I said that I was going to review the new Open Scene Graph 3: Beginners Guide book from Packt Publishing. Unfortunately, I still haven&#8217;t had time to do the review. However, I thought I would mention that all through April Packt Publishing are running discounts on all of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.20papercups.net/wp-content/uploads/2011/04/packt_logo.png"><img class="alignleft size-full wp-image-372" title="packt_logo" src="http://www.20papercups.net/wp-content/uploads/2011/04/packt_logo.png" alt="" width="104" height="45" /></a>Hey guys</p>
<p>So a little while ago I said that I was going to review the new <a href="http://link.packtpub.com/NwneHs">Open Scene Graph 3: Beginners Guide</a> book from Packt Publishing. Unfortunately, I <em>still</em> haven&#8217;t had time to do the review. However, I thought I would mention that all through April Packt Publishing are running discounts on all of their Graphics books!</p>
<blockquote><p><span style="color: #000000;"><span style="font-family: Calibri;"><span style="font-size: small;">During April, Packt will be running a series of discounts and promotions on a selection of its Open Source Graphic books wherein readers can avail exclusive discounts of 20% and 30% off the cover price of Graphic print books and eBooks.</span></span></span></p></blockquote>
<p><span style="color: #000000;"><span style="font-family: Calibri;"><span style="font-size: small;">So, I suggest you go check out what they have to offer:</span></span></span></p>
<p><a href="http://www.packtpub.com/article/graphic-open-source" target="_blank">http://www.packtpub.com/article/graphic-open-source</a></p>
<p>Cheers<br />
Michael</p>
<p><small><em>Full Disclosure: I have nothing to do with Packt Publishing. However, they did give me a free e-book version of the OSG3 Beginners Guide for me to review. I feel a little bit guilty that I haven&#8217;t done the review yet. Other than that, I have no affiliation with Packt Publishing, and I didn&#8217;t get anything for posting this. So I haven&#8217;t sold out. In my opinion, someone going out of their way to produce documentation and reference books for Open Source Software is a good thing!</em></small></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/random-news/graphics-applications-and-libraries-month-at-packt-publishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Videos Now On Youtube</title>
		<link>http://www.20papercups.net/random-news/java-videos-now-on-youtube/</link>
		<comments>http://www.20papercups.net/random-news/java-videos-now-on-youtube/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 06:24:08 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Java Video Tutorials]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Random News]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[vtm]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=366</guid>
		<description><![CDATA[Hi Everyone Just a quick note to say that I&#8217;ve put all the Java video tutorials up on Youtube. Things have changed since I started making the videos &#8211; Youtube has finally allowed videos longer than 15 minutes, which means I can upload them without having to slice them all up. Youtube Playlist Cheers Michael]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.20papercups.net/wp-content/uploads/2008/12/fonzie.jpeg"><img class="alignleft size-full wp-image-12" title="fonzie" src="http://www.20papercups.net/wp-content/uploads/2008/12/fonzie.jpeg" alt="" width="120" height="120" /></a>Hi Everyone</p>
<p>Just a quick note to say that I&#8217;ve put all the Java video tutorials up on Youtube. Things have changed since I started making the videos &#8211; Youtube has finally allowed videos longer than 15 minutes, which means I can upload them without having to slice them all up.</p>
<p><a href="http://www.youtube.com/view_play_list?p=A7C651F65A0C41F7" target="_blank">Youtube Playlist</a></p>
<p>Cheers<br />
Michael</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/random-news/java-videos-now-on-youtube/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quimo. A deformable material to support freeform modelling in spatial augmented reality environments</title>
		<link>http://www.20papercups.net/random-news/quimo/</link>
		<comments>http://www.20papercups.net/random-news/quimo/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 04:05:26 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Random News]]></category>
		<category><![CDATA[UniSA]]></category>
		<category><![CDATA[industrial design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[sar]]></category>
		<category><![CDATA[sculpting]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=361</guid>
		<description><![CDATA[Hello Everyone 3DUI has wrapped up for the year, so here is our second publication. We introduce a new material for freeform sculpting in spatial augmented reality environments. Please read the paper, and have a look at the video below. &#160;]]></description>
			<content:encoded><![CDATA[<p>Hello Everyone</p>
<p>3DUI has wrapped up for the year, so here is our second publication. We introduce a new material for freeform sculpting in spatial augmented reality environments. Please read the <a href="http://www.20papercups.net/wp-content/uploads/2009/09/quimo.pdf">paper</a>, and have a look at the video below.</p>
<p><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/LqsMzRuDZOs" frameborder="0" allowfullscreen></iframe><br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/random-news/quimo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Publication: Adaptive Color Marker for SAR Environments</title>
		<link>http://www.20papercups.net/random-news/adaptive-color-marker/</link>
		<comments>http://www.20papercups.net/random-news/adaptive-color-marker/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 03:36:12 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Random News]]></category>
		<category><![CDATA[UniSA]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[sar]]></category>

		<guid isPermaLink="false">http://www.20papercups.net/?p=357</guid>
		<description><![CDATA[Hey Everyone So right now I am at the IEEE Symposium on 3D User Interfaces in Singapore. We have a couple of publications which I&#8217;ll be posting over the next few days. First up is Adaptive Color Marker for SAR Environments. In a previous study we created interactive virtual control panels by projecting onto otherwise [...]]]></description>
			<content:encoded><![CDATA[<p>Hey Everyone</p>
<p>So right now I am at the IEEE Symposium on 3D User Interfaces in Singapore. We have a couple of publications which I&#8217;ll be posting over the next few days. First up is<em> Adaptive Color Marker for SAR Environments</em>. In a <a href="http://www.youtube.com/watch?v=6SAjX8-iBOc" target="_blank">previous study</a> we created interactive virtual control panels by projecting onto otherwise blank designs. We used a simple orange marker to track the position of the user&#8217;s finger. However, in a SAR environment, this approach suffers from several problems:</p>
<ul>
<li>The tracking system can&#8217;t track the marker if we project the same colour as the marker.</li>
<li>Projecting onto the marker changes it&#8217;s appearance, causing tracking to fail.</li>
<li>Users could not tell when they were pressing virtual controls, because their finger occluded the projection.</li>
</ul>
<p>We address these problems with an active colour marker. We use a colour sensor to detect what is being projected onto the marker, and change the colour of the marker to an <em>opposite</em> colour, so that tracking continues to work. In addition, we can use the active marker as a form of visual feedback. For example, we can change the colour to indicate a virtual button press.</p>
<p>I&#8217;ve added the publication to my publications page, and here&#8217;s the video of the marker in action.</p>
<p><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/s8m9JAe9fZ0" frameborder="0" allowfullscreen></iframe></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.20papercups.net/random-news/adaptive-color-marker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

