<?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>Xavier&#039;s Blog</title>
	<atom:link href="http://www.xaviert.be/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaviert.be</link>
	<description></description>
	<lastBuildDate>Sat, 05 Nov 2011 11:02:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Experimenting with RenderMan</title>
		<link>http://www.xaviert.be/2010/12/experimenting-with-renderman/</link>
		<comments>http://www.xaviert.be/2010/12/experimenting-with-renderman/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 18:25:33 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Computer Graphics]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[RenderMan]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=244</guid>
		<description><![CDATA[Yesterday I&#8217;ve made my first renders with RenderMan (or more specific, with 3Delight, a RenderMan compatible renderer). Even if you don&#8217;t know what RenderMan is, you have without doubt enjoyed the endless amount of CGI scenes made with the help of RenderMan. From Harry Potter to Toy Story, almost every movie made in the past [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I&#8217;ve made my first renders with <a href="https://renderman.pixar.com/">RenderMan</a> (or more specific, with <a href="http://www.3delight.com/en/">3Delight</a>, a RenderMan compatible renderer). Even if you don&#8217;t know what RenderMan is, you have without doubt enjoyed the endless amount of CGI scenes made with the help of RenderMan. From Harry Potter to Toy Story, almost every movie made in the past decade has used RenderMan for their CGI. Below are some of the fascinating results you can make using the RenderMan Shading Language:</p>
<div id="attachment_246" class="wp-caption aligncenter" style="width: 490px"><img src="http://www.xaviert.be/uploads/2010/12/teapot.png" alt="" title="Subsurface Scattering on Utah Teapot" width="480" height="360" class="size-full wp-image-246" /><p class="wp-caption-text">Subsurface Scattering on Utah Teapot</p></div><br />
<div id="attachment_247" class="wp-caption aligncenter" style="width: 460px"><img src="http://www.xaviert.be/uploads/2010/12/shadtest-450x450.png" alt="" title="Displacement mapping on spheres" width="450" height="450" class="size-large wp-image-247" /><p class="wp-caption-text">Displacement mapping on spheres</p></div><br />
<div id="attachment_248" class="wp-caption aligncenter" style="width: 460px"><img src="http://www.xaviert.be/uploads/2010/12/Bunny-450x450.jpg" alt="" title="Metalic Stanford Bunny" width="450" height="450" class="size-large wp-image-248" /><p class="wp-caption-text">Metalic Stanford Bunny</p></div><br />
<div id="attachment_249" class="wp-caption aligncenter" style="width: 460px"><img src="http://www.xaviert.be/uploads/2010/12/Dragon-450x450.jpg" alt="" title="Chromatic Stanford Dragon" width="450" height="450" class="size-large wp-image-249" /><p class="wp-caption-text">Chromatic Stanford Dragon</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/12/experimenting-with-renderman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad and Cat</title>
		<link>http://www.xaviert.be/2010/04/ipad-and-cat/</link>
		<comments>http://www.xaviert.be/2010/04/ipad-and-cat/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 15:01:25 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[cats]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=44</guid>
		<description><![CDATA[Next time you want to buy a toy for your cat, consider buying an iPad instead!]]></description>
			<content:encoded><![CDATA[<p>Next time you want to buy a toy for your cat, consider buying an iPad instead!</p>
<div class="aligncenter"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Q9NP-AeKX40?fs=1&amp;hl=nl_NL" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Q9NP-AeKX40?fs=1&amp;hl=nl_NL" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/04/ipad-and-cat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ray Tracing Fun</title>
		<link>http://www.xaviert.be/2010/04/ray-tracing-fun/</link>
		<comments>http://www.xaviert.be/2010/04/ray-tracing-fun/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 10:12:58 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Computer Graphics]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[dragons]]></category>
		<category><![CDATA[ray tracing]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=57</guid>
		<description><![CDATA[Finished writing my own acceleration structure for my Ray Tracer. Currently it&#8217;s something between a KD-Tree and an Octree. I expected performance to be slightly better than my original code, but to my suprise it&#8217;s already superfast (&#60; 1 second for a Stanford Dragon) and I didn&#8217;t even optimize it yet.]]></description>
			<content:encoded><![CDATA[<p>Finished writing my own acceleration structure for my Ray Tracer. Currently it&#8217;s something between a KD-Tree and an Octree. I expected performance to be slightly better than my original code, but to my suprise it&#8217;s already superfast (&lt; 1 second for a Stanford Dragon) and I didn&#8217;t even optimize it yet.</p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-58" title="Stanford Dragon" src="http://www.xaviert.be/uploads/2010/10/2010414-300x300.png" alt="" width="300" height="300" /><p class="wp-caption-text">Stanford dragon on reflective surface</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/04/ray-tracing-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Hilbert Compression: Results</title>
		<link>http://www.xaviert.be/2010/03/3d-hilbert-compression-results/</link>
		<comments>http://www.xaviert.be/2010/03/3d-hilbert-compression-results/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 12:01:54 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[hilbert curve]]></category>
		<category><![CDATA[thesis]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=76</guid>
		<description><![CDATA[Last week I had a working implementation of the n-dimensional Hilbert algorithm. Next step was using a 3D Hilbert curve on my depth maps. Goal: further increase the compression ratio of my depth maps. I had already done some tests with this kind of curve two weeks ago and back then the results were interesting [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I had a working implementation of the n-dimensional Hilbert algorithm. Next step was using a 3D Hilbert curve on my depth maps. Goal: <strong>further increase the compression ratio of my depth maps</strong>. I had already done some tests with this kind of curve two weeks ago and back then the results were interesting enough to do some further experimenting.</p>
<p>Due to implementation issues back then, I was however limited to a curve of (27)3 elements. For 1024 depth maps with a resolution of 128&#215;128 pixels this came down to 8 cubes of (27)3 elements (1024x128x128 = 224 = (27)3 x 23). With my new implementation this restriction is gone and I can generate Hilbert curves up to (210)3 (going any higher would require the use of 64 bits integers, which would only slow down my computations, something that is to be avoided as much as possible).</p>
<p>These are the currently best results:</p>
<div id="attachment_81" class="wp-caption aligncenter" style="width: 440px"><img class="size-full noborder wp-image-81" title="100322b" src="http://www.xaviert.be/uploads/2010/10/100322b.png" alt="3D Hilbert Compression vs Per-Pixel Compression" width="430" height="417" /><p class="wp-caption-text">3D Hilbert Compression vs Per-Pixel Compression</p></div>
<p>As can be seen from this graph, the <strong>3D Hilbert compression</strong> outperforms the per-pixel compression for anything below 9216 (962) depth maps. Beyond that per-pixel compression is still the way to go. Two weeks ago I thought that this could possibly be solved by increasing the resolution of my Hilbert curve (and thus reducing the amount of cubes necessary to browse through all my data). Last week I got more insight in the recursive nature of the Hilbert curve and had a suspicision that the size of my cubes (and the resolution of the Hilbert curve) wouldn&#8217;t matter that much. The thing is, a Hilbert curve of a higher resolution is basically a concatenation of rotated versions of a lower resolution Hilbert curve. So the difference between one cube of a high resolution and two cubes of lower resolution is merely a rotation. And due to it&#8217;s nature, the effect of these rotations are minimal.</p>
<div id="attachment_82" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-82" title="Hilbert Curve" src="http://www.xaviert.be/uploads/2010/10/100322a-300x92.png" alt="Hilbert Curve" width="300" height="92" /><p class="wp-caption-text">(Left) 2D Hilbert curve of order 1. (Middle) Hilbert curve of order 2. This consists of four rotated order 1 curves (corners) that are connected with each other. (Right) Order 3 curve, consists of four rotated order 2 curves.</p></div>
<p>This theory is also confirmed in practice. The results for higher resolution Hilbert curves are nearly identical to those given above (up to some KB).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/03/3d-hilbert-compression-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-Dimensional Hilbert Curve Generator</title>
		<link>http://www.xaviert.be/2010/03/multi-dimensional-hilbert-curve-generator/</link>
		<comments>http://www.xaviert.be/2010/03/multi-dimensional-hilbert-curve-generator/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 11:36:29 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[hilbert curve]]></category>
		<category><![CDATA[thesis]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=103</guid>
		<description><![CDATA[After spending the last week on spherical stuff, I&#8217;m currently implementing an algorithm to build Hilbert curves. My idea of increasing the compression rate for the Coherent Shadow Maps is to use a 3D (possibly 4D) Hilbert curve that will traverse through all my data. Due to its nature, the Hilbert curve is very good [...]]]></description>
			<content:encoded><![CDATA[<p>After spending the last week on spherical stuff, I&#8217;m currently implementing an algorithm to build <strong>Hilbert curves</strong>. My idea of increasing the compression rate for the Coherent Shadow Maps is to use a 3D (possibly 4D) Hilbert curve that will traverse through all my data. Due to its nature, the Hilbert curve is very good at preserving data locality. This in turn affects my compression ratio in a positive way.<br />
<div id="attachment_104" class="wp-caption aligncenter" style="width: 410px"><img src="http://www.xaviert.be/uploads/2010/10/100317.png" alt="3D Hilbert Curve" title="3D Hilbert Curve" width="400" height="320" class="size-full wp-image-104" /><p class="wp-caption-text">3D Hilbert Curve</p></div><br />
Writing a program that can generate multi-dimensional Hilbert curves for a variety of resolutions is however, far from trivial. Fortunately, a few years ago C. Hamilton wrote a couple of articles on the subject together with a high-level version of the algorithm [1, 2]. Currently I have a CPU version of the basic algorithm working.</p>
<p>In his work, Hamilton also wrote about Compact Hilbert Indices. This allows for Hilbert curves to be applied to non-hypercubic data (a rectangle instead of a square for example). Though a Hilbert curve is still generated for the smallest hypercube fitting around all data, the compact indices don&#8217;t require as much memory (bits) as their conventional indices. This is the next thing I will implement and once the job is done, I can begin working on the GPU version of the algorithm. I wonder if anyone ever tried that before <img src='http://www.xaviert.be/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>[1] C. H. Hamilton. <a href="https://www.cs.dal.ca/sites/default/files/CS-2006-07.pdf" target="_blank">Compact Hilbert Indices</a>. Dalhousie University Technical Report CS-2006-07, July 2006.<br />
[2] C. H. Hamilton, A. Rau-Chaplin. <a href="http://flame.cs.dal.ca/~chamilto/hilbert/ipl.pdf" target="_blank">Compact Hilbert Indices: Space-filling curves for domains with unequal side lengths</a>. Information Processing Letters, 105(5), 155&#8211;163, Feburary 2008.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/03/multi-dimensional-hilbert-curve-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spheres</title>
		<link>http://www.xaviert.be/2010/03/spheres/</link>
		<comments>http://www.xaviert.be/2010/03/spheres/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:04:12 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[hilbert curve]]></category>
		<category><![CDATA[sampling]]></category>
		<category><![CDATA[spheres]]></category>
		<category><![CDATA[thesis]]></category>

		<guid isPermaLink="false">http://www.xaviert.be/?p=108</guid>
		<description><![CDATA[Time to give a recap on what I&#8217;ve been doing the last week: 1. Bounding Sphere Algorithm I&#8217;ve implemented some more advanced algorithms for finding the (minimum) bounding sphere of an object. I first tried the Ritter algorithm (Graphics Gems, 1990). Ritter stated that his algorithm should give an approximation within 5% of the true [...]]]></description>
			<content:encoded><![CDATA[<p>Time to give a recap on what I&#8217;ve been doing the last week:</p>
<p><strong>1. Bounding Sphere Algorithm</strong><br />
I&#8217;ve implemented some more advanced algorithms for finding the (minimum) bounding sphere of an object. I first tried the Ritter algorithm (Graphics Gems, 1990). Ritter stated that his algorithm should give an approximation within 5% of the true minimum sphere. A simple test on a cube proved otherwise though.<br />
Then I tried the <a href="http://www.inf.ethz.ch/personal/gaertner/texts/own_work/esa99_final.pdf" target="_blank">Gärtner</a> algorithm. Writing my own implementation would be to much work, so I used an existing implementation from <a href="http://www.inf.ethz.ch/personal/gaertner/miniball.html" target="_blank">here</a>. After doing some tests with the algorithm, it seems the implementation must be broken because I never even ended up with a sphere containing all the necessary vertices &#8230;</p>
<p>In short: attempts to use another bounding sphere algorithm failed.</p>
<p><strong>2. Uniform Sampling</strong><br />
Taking uniform samples on my bounding sphere gave some interesting results. Depending on the orientation of my bounding sphere and the space-filling curve used to traverse through my samples on this sphere, it&#8217;s possible to decrease the size of the compressed depth maps with one third (compared to my original results). There&#8217;s also a huge variation in the size of the CSM&#8217;s for various settings of orientation and space-filling curve.</p>
<p>To give you an example, an Armadillo with 1024 depth maps:<br />
Uniform, Vertical Zig-Zag curve and a ZYX (left) rotation of the bounding sphere: <strong>6.6 Mb</strong>.<br />
Not uniform, Horizontal Zig-Zag curve, YXZ: <strong>17.3 Mb</strong>!</p>
<div class="aligncenter"><img src="http://www.xaviert.be/uploads/2010/10/100314a.png" alt="Non-uniform" title="Non-uniform" width="200" height="150" class="size-full wp-image-109" /><img src="http://www.xaviert.be/uploads/2010/10/100314b.png" alt="Uniform" title="Uniform" width="200" height="150" class="size-full wp-image-110" /></div>
<p>In order to find the best match of orientation, sampling and path-curve I wrote a script that builds CSM&#8217;s for all of the possible combinations for a specific number of depth maps. This was repeated for the Stanford Dragon, Bunny, Teapot, Armadillo and Venus. (I currently have around 9Gb of CSM&#8217;s, without going any higher than 4096 depth maps). As an overal result of all the data I gathered, the (ZXY, Uniform, Vertical Zig-Zag) combination gave the smallest (and best) CSM&#8217;s. I have yet to test if this is also the case for the overall quality of my shadows.</p>
<p><strong>3. Hilbert Curve</strong><br />
Started reading some papers on how to generate the curve and algorithms for switching between the 1-dimensional and n-dimensional indices of the curve. Goals for this week are getting these implemented and start building results.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xaviert.be/2010/03/spheres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

