<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.neuroproductions.be/wp-atom.php">
	<title type="text">Neuro Productions</title>
	<subtitle type="text">Freelance Creative Developer : IOS -OpenGL/WebGL - Flash - openFrameworks</subtitle>

	<updated>2012-07-20T07:11:33Z</updated>

	<link rel="alternate" type="text/html" href="http://www.neuroproductions.be" />
	<id>http://www.neuroproductions.be/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/NeuroProductions" /><feedburner:info uri="neuroproductions" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Making a 3D Game with OpenGL: Deferred shading and stuff]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/fIoAyvtPQB0/" />
		<id>http://www.neuroproductions.be/?p=674</id>
		<updated>2012-07-20T07:11:33Z</updated>
		<published>2012-07-19T10:40:28Z</published>
		<category scheme="http://www.neuroproductions.be" term="OpenGL" />		<summary type="html"><![CDATA[Lately OpenGL and C++ is pretty much the only thing I do for clients, mostly for installations and iPad apps. [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/opengl/making-a-3d-game-with-opengl-deferred-shading-and-stuff/">&lt;p&gt;Lately OpenGL and C++ is pretty much the only thing I do for clients, mostly for installations and iPad apps. And that&amp;#8217;s gowning pretty well.  But as a creative code guy, I pretty much stayed in our own tech subculture. But when it comes to cutting edge graphic techniques, we can learn a lot from those other guys, the game developers.&lt;/p&gt;
&lt;p&gt;So one sunny afternoon, I decided to do just that and I started to make my own 3D game from scratch.&lt;/p&gt;
&lt;p&gt;I wanted to write a blog-post when it was finished. But I hugely underestimated the work (Now I understand why indie gamedevelopers take +3 years to finish a game).  And I&amp;#8217;ve already done so much it wouldn&amp;#8217;t fit in one blog post. So I&amp;#8217;m going to try to make multiple blog-posts, to light out different technical things I&amp;#8217;ve used for my game, and keep you updated about the progress of the game itself.&lt;/p&gt;
&lt;h3&gt;The game:&lt;/h3&gt;
&lt;p&gt;Or more game engine, since I don&amp;#8217;t really have any game play at the moment:&lt;br /&gt;
&lt;iframe src="http://player.vimeo.com/video/46021001?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="700" height="394" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;br /&gt;
As you can see, there are still a lot of glitches and things to be done, but I&amp;#8217;m happy where it&amp;#8217;s going.&lt;/p&gt;
&lt;p&gt;Some of the things I&amp;#8217;ve done so far (not always complete, final or clean).&lt;/p&gt;
&lt;p&gt;-The terrain generation, it&amp;#8217;s an infinite/live generated terrain.&lt;br /&gt;
-Seamless day-night transitions.&lt;br /&gt;
-Cascade shadow maps, SSAO (screen space ambient occlusion).&lt;br /&gt;
-Normal maps, alpha textures, alpha shadows.&lt;br /&gt;
-Some simple LOD (level of detail) setup for the terrain mesh and the 3D objects.&lt;br /&gt;
-Bone animations in the vertex shader + interpolations between the animations. (models are loaded with &lt;a href="http://assimp.sourceforge.net/" target="_blank"&gt;Assimp&lt;/a&gt;)&lt;br /&gt;
-The main part of the rendering pipeline.&lt;br /&gt;
-Learned the basics of modeling and animating in Blender &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;&lt;br /&gt;
-and a lot of other stuff.&lt;/p&gt;
&lt;h3&gt;The current Render pipeline&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s very WIP at this moment, but here is a diagram of how the current rendering is done. More about this below.&lt;br /&gt;
(click for the full size image, open in new tab if you get the popup)&lt;br /&gt;
&lt;a href="http://www.neuroproductions.be/uploads/openglGame/openglRenderPipline_large.jpg" rel="shadowbox[post-674];player=img;" target="_blank"&gt;&lt;img class="alignnone" title="Deferred Shading" src="http://www.neuroproductions.be/uploads/openglGame/openglRenderPipline_small.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Deferred Shading:&lt;/h3&gt;
&lt;p&gt;One of the things I wanted to try was deferred shading, just for the heck of it. But I&amp;#8217;m really glad I did. Since it seems much faster, and has some additional advantages (there are also some disadvantages)&lt;/p&gt;
&lt;h4&gt;How does it work:&lt;/h4&gt;
&lt;p&gt;You just render all the main geometry once, In 3 textures. a depth texture, a color texture with just the diffuse. and a color texture with the normals in worldspace.&lt;br /&gt;
you can do that in OpenGL all at once, with an FBO (frame buffer object) with multiple color attachments. And since you don&amp;#8217;t do any lightning, its pretty fast. After that, you use those textures to calculate the lighting etc.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Deferred Shading" src="http://www.neuroproductions.be/uploads/openglGame/DeferredShadingOpengl.jpg" alt="" width="700" height="394" /&gt;&lt;/p&gt;
&lt;p&gt;The big advantage is that you only have to calculate the lightning on the pixels that are actually visible on the screen. So you have no overhead of overlapping objects. And if you want to do some post processing stuff, like ambient occlusion or depth of field, you already have the depth texture and normal texture in place.&lt;/p&gt;
&lt;p&gt;To get back from the depth to the worldspace, you just multiply the screen space with the inverse of the perspective matrix:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="glsl" style="font-family:monospace;"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;float&lt;/span&gt; depth &lt;span style="color: #000066;"&gt;=&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;texture2D&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;depthTexture&lt;span style="color: #000066;"&gt;,&lt;/span&gt; uv_var&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;x&lt;/span&gt;&lt;span style="color: #000066;"&gt;*&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;2.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;-&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;vec3&lt;/span&gt; viewSpace &lt;span style="color: #000066;"&gt;;&lt;/span&gt;
viewSpace &lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;xy&lt;/span&gt; &lt;span style="color: #000066;"&gt;=&lt;/span&gt; uv &lt;span style="color: #000066;"&gt;*&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;2.0&lt;/span&gt; &lt;span style="color: #000066;"&gt;-&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;
viewSpace&lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;z&lt;/span&gt;&lt;span style="color: #000066;"&gt;=&lt;/span&gt;depth&lt;span style="color: #000066;"&gt;;&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;vec4&lt;/span&gt; worldSpace &lt;span style="color: #000066;"&gt;=&lt;/span&gt; perspectiveInvMatrix&lt;span style="color: #000066;"&gt;*&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;vec4&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;viewSpace&lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;
worldSpace&lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;xyz&lt;/span&gt;&lt;span style="color: #000066;"&gt;/=&lt;/span&gt;worldSpace&lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;w&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But what I really liked about it, is that you can have a lot of dynamic lights in your scene. When you use forward shading, your happy if you can use a couple of lights. But but with deferred shading you can have hundreds. You just render the lights as volumes in a separate pass (sphere for a point light, a cone for a spotlight etc). So you only have to calculate the light on the position where it really affects things, and since you use the normal and depth texture as input, only on the geometry you really see.&lt;/p&gt;
&lt;p&gt;The light volumes rendered as normal geometrie:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Deferred Shading Light volumes" src="http://www.neuroproductions.be/uploads/openglGame/deferredShadingLightVolumes.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;The fragment shader calculation I use for the light volumes:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="glsl" style="font-family:monospace;"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;vec3&lt;/span&gt; dir &lt;span style="color: #000066;"&gt;=&lt;/span&gt; worldPos&lt;span style="color: #000066;"&gt;.&lt;/span&gt;&lt;span style="color: #006600;"&gt;xyz&lt;/span&gt;&lt;span style="color: #000066;"&gt;-&lt;/span&gt;lightCenter&lt;span style="color: #000066;"&gt;;&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;// worldPos from the depth&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;float&lt;/span&gt; l &lt;span style="color: #000066;"&gt;=&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;length&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt; dir&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;float&lt;/span&gt; dist &lt;span style="color: #000066;"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;-&lt;/span&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;pow&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;clamp&lt;/span&gt; &lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;l &lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;0.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;,&lt;/span&gt;lightSize_var&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;/&lt;/span&gt;lightSize_var&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;2.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;// quick light falloff&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;float&lt;/span&gt; lambert  &lt;span style="color: #000066;"&gt;=&lt;/span&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;clamp&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;dot&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;normalize&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;dir&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #000066;"&gt;,&lt;/span&gt; &lt;span style="color: #000066;"&gt;-&lt;/span&gt;normal &lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;0.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;//shading&lt;/span&gt;
&lt;span style="color: #551111;"&gt;gl_FragColor&lt;/span&gt; &lt;span style="color: #000066;"&gt;=&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;vec4&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#40;&lt;/span&gt;lightColor &lt;span style="color: #000066;"&gt;*&lt;/span&gt;dist &lt;span style="color: #000066;"&gt;*&lt;/span&gt; lambert   &lt;span style="color: #000066;"&gt;,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000066;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #000066;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The result of the Light pass:&lt;br /&gt;
&lt;img class="alignnone" title="Deferred Shading Light volumes" src="http://www.neuroproductions.be/uploads/openglGame/deferredPointLightPass.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;I just use a blendfunct GL_ONE, GL_ONE (add) for all the lights, although technically not correct. But it looks good enough.&lt;br /&gt;
The lights in the final scene:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Deferred Shading Light volumes" src="http://www.neuroproductions.be/uploads/openglGame/deferredPointLightOpengl.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;h3&gt;Lambert texutre lookup&lt;/h3&gt;
&lt;p&gt;An other neat trick I discovered while doing research for this, is using a Texture to lookup your shading color (found it in the &lt;a href="http://www.valvesoftware.com/publications/2007/NPAR07_IllustrativeRenderingInTeamFortress2.pdf" target="_blank"&gt;Valve Team Fortress 2 Paper&lt;/a&gt;).&lt;br /&gt;
The great thing about this is that you can edit your shading in photoshop. In my case I used a 2D texture, so I can have al the subtle light differences between day and night.&lt;/p&gt;
&lt;p&gt;This is the texture I use now, but it still needs some work:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Deferred Shading Opengl" src="http://www.neuroproductions.be/uploads/openglGame/lambertMap.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I just use the shading color for the u and the time for the v lookup.&lt;/p&gt;
&lt;p&gt;Here is the plain old shading:&lt;br /&gt;
&lt;img class="alignnone" title="Deferred Shading" src="http://www.neuroproductions.be/uploads/openglGame/plainShading.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;And the shading after the look-up:&lt;br /&gt;
Night:&lt;br /&gt;
&lt;img class="alignnone" title="Deferred Shading Opengl" src="http://www.neuroproductions.be/uploads/openglGame/nightShadingOpengGL.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;Day:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Deferred Shading opengl" src="http://www.neuroproductions.be/uploads/openglGame/dayShadingOpengl.jpg" alt="" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s it for now, hopefully some more blog-posts to follow this up &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Source code and assets at &lt;a href="https://github.com/neuroprod/npDeferredS" target="_blank"&gt;Github&lt;/a&gt; ( at your own risk  )&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F&amp;amp;title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F&amp;amp;title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F&amp;amp;title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F&amp;amp;headline=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F&amp;amp;title=Making+a+3D+Game+with+OpenGL%3A+Deferred+shading+and+stuff&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fopengl%2Fmaking-a-3d-game-with-opengl-deferred-shading-and-stuff%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/fIoAyvtPQB0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/opengl/making-a-3d-game-with-opengl-deferred-shading-and-stuff/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/opengl/making-a-3d-game-with-opengl-deferred-shading-and-stuff/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/opengl/making-a-3d-game-with-opengl-deferred-shading-and-stuff/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Hairy Kinect Pictures]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/Su4MRXWMhhQ/" />
		<id>http://www.neuroproductions.be/?p=627</id>
		<updated>2012-04-23T16:26:35Z</updated>
		<published>2012-02-02T16:50:58Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" /><category scheme="http://www.neuroproductions.be" term="Generative art" /><category scheme="http://www.neuroproductions.be" term="Source code &amp; tutorials" />		<summary type="html"><![CDATA[You may remember the Furry Santa. That gave me the idea to use the Kinect 3D data to add hair to [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/furry-photos-with-kinect/">&lt;p&gt;You may remember the &lt;a href="http://www.neuroproductions.be/experiments/3d-fur-renderer/" target="_blank"&gt;Furry Santa&lt;/a&gt;. That gave me the idea to use the Kinect 3D data to add hair to everything!&lt;/p&gt;
&lt;p&gt;Yes, I know, pretty useless &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt;  . But I like the results :&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="fur render kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_fur_black4.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="fur rendering kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_fur_black2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="fur rendering kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_fur_black6.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="fur rendering kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_fur_black3.png" alt="" /&gt;&lt;/p&gt;
&lt;h4&gt;How Does it work?&lt;/h4&gt;
&lt;p&gt;In short, make an isosurface of the depth output from the Kinect and calculate the normals.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="fur rendering kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_isosurface.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Then calculate points on the triangles where a hair starts. Now, start growing the hair in the direction of the normal in that point. Add some random and gravity to the growing direction of the hair. And to finish it of, calculate the lightning on every hair segment for a more realistic effect.&lt;/p&gt;
&lt;p&gt;Of course, you can also use the pixel data of the Kinect webcam to make hairs in the original object colours. But I liked the black images more.&lt;br /&gt;
&lt;img class="alignnone" title="fur rendering kinect" src="http://www.neuroproductions.be/uploads/blog/fur_kinect/kinect_fur_color.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s uses &lt;a href="http://www.openframeworks.cc/"&gt;openFrameworks&lt;/a&gt; + it needs the &lt;a href="https://github.com/ofTheo/ofxKinect" target="_blank"&gt;ofxKinect&lt;/a&gt; addon.&lt;/p&gt;
&lt;p&gt;[update] I now got it now running real-time with a geometry shader:&lt;br /&gt;
&lt;iframe src="http://player.vimeo.com/video/40855520?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="700" height="525" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Source code is a real mess, so at your own risk : &lt;a href="https://github.com/neuroprod/kinectHair" target="_blank"&gt;Kinect Hair&lt;/a&gt;.&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F&amp;amp;title=Hairy+Kinect+Pictures" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F&amp;amp;title=Hairy+Kinect+Pictures" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F&amp;amp;title=Hairy+Kinect+Pictures" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F&amp;amp;headline=Hairy+Kinect+Pictures" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Hairy+Kinect+Pictures&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Hairy+Kinect+Pictures&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Hairy+Kinect+Pictures&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Hairy+Kinect+Pictures&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Hairy+Kinect+Pictures&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F&amp;amp;title=Hairy+Kinect+Pictures&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ffurry-photos-with-kinect%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/Su4MRXWMhhQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/furry-photos-with-kinect/#comments" thr:count="11" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/furry-photos-with-kinect/feed/atom/" thr:count="11" />
		<thr:total>11</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/furry-photos-with-kinect/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[3D Pixel Editor for iPad with source code]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/KL4f17LBuso/" />
		<id>http://www.neuroproductions.be/?p=594</id>
		<updated>2012-03-29T14:08:01Z</updated>
		<published>2012-01-25T09:55:52Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" /><category scheme="http://www.neuroproductions.be" term="IOS" /><category scheme="http://www.neuroproductions.be" term="Neuro Productions" /><category scheme="http://www.neuroproductions.be" term="Source code &amp; tutorials" />		<summary type="html"><![CDATA[Yeah, blogpost. After a year doing mostly C++/OpenGL for client (installations and iPad games) I decided it was time to release my [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/cube-construct-a-3d-pixel-editor-for-ipad/">&lt;p&gt;Yeah, blogpost.&lt;/p&gt;
&lt;p&gt;After a year doing mostly C++/OpenGL for client (installations and iPad games) I decided it was time to release my own app. Its a 3D pixel editor for the iPad!&lt;/p&gt;
&lt;p&gt;Check out the &lt;a title="3D pixel editor for ipad" href="http://www.cubeconstruct.net/" target="_blank"&gt;free 3D pixel art iPad app&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Watch the video to see it in action:&lt;br /&gt;
&lt;iframe src="http://player.vimeo.com/video/35197228?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="700" height="525" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;h3&gt;How did I make it&amp;#8230;&lt;/h3&gt;
&lt;p&gt;From scratch, no Flash, Unity, Cocos2D or some other framework (beside some matrix classes I borrowed form Open Frameworks).  Although there is some Objective C in the mix,the main part is done in C++/ OpenGL ES2. Does it make sense to do it like that? Probably not, but hey, you learn a lot by doing it that way and it is pretty fun to do, and in the end I hopefully have some performance advantages.&lt;/p&gt;
&lt;p&gt;For the main part of the 2D interface I  use a Flash like displaylist I made (OpenGL ES2/ bitmap based) . Which give me the freedom to create cool interactive interfaces like in Flash and I still have the performance of C++.&lt;/p&gt;
&lt;p&gt;Of course you have UIkit and cocos2D etc for  i-devices. But  the main reason I made it  is that it also runs on native mac and windows and can be implemented in Open Frameworks and Cinder etc . Open Frameworks en Cinder are both nice for quick prototyping, they really lack the ability to create pretty interfaces without to much work.&lt;/p&gt;
&lt;p&gt;And because you eat your own dog-food, I also use it on I-devices. On the plus side, its OpenglES2, so it can be nicely integrated with high performance 3D content in IOS + if I ever want to port it to a non IOS OS, it shouldn&amp;#8217;t be to much of a problem.&lt;/p&gt;
&lt;p&gt;If you have done ActionScript, you probably recognize the classes, like npDisplayObject, npBitmapSprite, npBitmapMovieClip, npEventdispatcher, npEvent, npTouchEvent, npTweener etc. Its far from complete/finished.  But I already used it in several commercial projects. And I implement and optimise things as I need them.&lt;/p&gt;
&lt;p&gt;Both the interface and the 3D are rendered first in there own frame buffer object, This gives the main advantage that in most cases, you only have to render one of the two at the same time,  + the cubes are rendered in a multi sample buffer (on iPad 2), with isn&amp;#8217;t necessary for the interface . Sadly Al those frame buffers slows it a little bit down on the Ipad 1 if you have a few cubes. But if you you use a certain amount of cubes, it also becomes an advantage there.&lt;/p&gt;
&lt;h3&gt;&lt;del&gt;Yes it&amp;#8217;s a paid app, but&amp;#8230;&lt;/del&gt;&lt;/h3&gt;
&lt;p&gt;&lt;del&gt;It was a tuff decision for me to make, I always loved to give things away for free. But hey, maybe some of the time I put in it can be paid back this way. So I can make more apps in the future.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;Screw it, its &lt;a title="3D pixel editor for ipad" href="http://www.cubeconstruct.net/" target="_blank"&gt;free !&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But no worries, even if its a paid app in the app store , I still decided to open source it. And if you read my blog and have an iPad, you probably can figure out how to build it (it&amp;#8217;s a complete xcode project)&lt;br /&gt;
You get the source code &lt;a href="https://github.com/neuroprod/CubeBuilder" target="_blank"&gt;here&lt;/a&gt; (Of course,  &lt;a title="3D pixel editor" href="http://www.cubeconstruct.net/" target="_blank"&gt;buying&lt;/a&gt; a copy would be appreciated  &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  )&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F&amp;amp;title=3D+Pixel+Editor+for+iPad+with+source+code" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F&amp;amp;title=3D+Pixel+Editor+for+iPad+with+source+code" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F&amp;amp;title=3D+Pixel+Editor+for+iPad+with+source+code" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F&amp;amp;headline=3D+Pixel+Editor+for+iPad+with+source+code" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F&amp;amp;title=3D+Pixel+Editor+for+iPad+with+source+code&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fcube-construct-a-3d-pixel-editor-for-ipad%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/KL4f17LBuso" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/cube-construct-a-3d-pixel-editor-for-ipad/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/cube-construct-a-3d-pixel-editor-for-ipad/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/cube-construct-a-3d-pixel-editor-for-ipad/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[WebGL Tadpoles]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/MuJ7eCdFeOQ/" />
		<id>http://www.neuroproductions.be/?p=557</id>
		<updated>2011-08-14T10:37:07Z</updated>
		<published>2011-08-14T10:32:37Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" /><category scheme="http://www.neuroproductions.be" term="WebGL" />		<summary type="html"><![CDATA[Its been a while since my latest blog post, I spend this year renovating my new house and office. I [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/webgl-tadpoles/">&lt;p&gt;Its been a while since my latest blog post, I spend this year renovating my new house and office. I also became more and more frustrated by the slow speed of Flash for my experiments, so I started learning C++ and OpenGL. Which is coming along fine now. I made a C++-OpenGL Kinect installation for a client, made an IPad app in C++ and OpenGL ES2 etc.&lt;/p&gt;
&lt;p&gt;And although I still do a lot of Flash development for clients, I kind of lost track on what&amp;#8217;s happening on the web. So I was surprised to see what has become of WebGL. And with OpenGL more and more becoming my new love, I thought I give it a try and remake a C++ experiment I did in JavaScript.&lt;/p&gt;
&lt;p&gt;It uses derivatives in the shader, which is an optional extension in the WebGL specifications, and as far is I can see, its only supported by Chrome at the moment. If you have the HTML5 audio API enabled, it reacts to the music (very basic, just some speed adjustments).&lt;br /&gt;
&lt;a href="http://www.neuroproductions.be/webgl/tadPoles/" target="_blank"&gt;&lt;br /&gt;
&lt;img src="http://www.neuroproductions.be/uploads/blog/webgl_hatchshader.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.neuroproductions.be/webgl/tadPoles/" target="_blank"&gt;» Visit the experiment (needs Google Chrome)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;The 30 tadpoles are Inverse Kinematic chains moving in a 3D Perlin Noise vector field. And since they aren&amp;#8217;t static objects, I have to project the vertics and calculate the normals every frame in JavaScript. In that sense, the JavaScript speed is reasonable. But as always, I was hoping for more. In C++ I can easily render +500 tadpoles with 4 times as many triangles per tadpole . It should be interesting to see how fast Flash can do this&amp;#8230; maybe I try that later.&lt;/p&gt;
&lt;p&gt;To get some anti-alias, I render it first in a  frame buffer object 9 times the window size (width*3, height*3). So, no complaints about the WebGL speed&amp;#8230; for now&amp;#8230; &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  &lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F&amp;amp;title=WebGL+Tadpoles" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F&amp;amp;title=WebGL+Tadpoles" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F&amp;amp;title=WebGL+Tadpoles" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F&amp;amp;headline=WebGL+Tadpoles" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=WebGL+Tadpoles&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=WebGL+Tadpoles&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=WebGL+Tadpoles&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=WebGL+Tadpoles&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=WebGL+Tadpoles&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F&amp;amp;title=WebGL+Tadpoles&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fwebgl-tadpoles%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/MuJ7eCdFeOQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/webgl-tadpoles/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/webgl-tadpoles/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/webgl-tadpoles/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[A take on Generative Art]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/3I5rGPcfyfc/" />
		<id>http://www.neuroproductions.be/?p=452</id>
		<updated>2011-08-14T10:36:05Z</updated>
		<published>2010-11-02T12:53:32Z</published>
		<category scheme="http://www.neuroproductions.be" term="Flash 3D" /><category scheme="http://www.neuroproductions.be" term="Generative art" />		<summary type="html"><![CDATA[Ok, I did some generative art-like things before. But it was never my goal, they where always somehow the side [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/generative-art/a-take-on-generative-art/">&lt;p&gt;Ok, I did some generative art-like things &lt;a title="generative art image distortion" href="http://www.neuroproductions.be/experiments/blowing-up-images/" target="_blank"&gt;before&lt;/a&gt;. But it was never my goal, they where always somehow the side effect of experimenting with code.&lt;/p&gt;
&lt;p&gt;But recently I did a nice project for &lt;a href="http://www.littlemissrobot.com/"&gt;Little Miss Robot&lt;/a&gt;. They asked me to make an Air application that generates images with code. At that point the code didn&amp;#8217;t really mater. The only thing that counted was the result.&lt;/p&gt;
&lt;p&gt;Some of the type of pictures the application creates (click to enlarge):&lt;br /&gt;
&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/genrative_triangles2.png"&gt;&lt;br /&gt;
&lt;img title="generative triangles 1" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/genrative_triangles2_small.jpg" alt="generative art, perlin noise, delaunay triangulation" width="700" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/genrative_triangles.png"&gt;&lt;br /&gt;
&lt;img title="generative triangles 2" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/genrative_triangles_small.jpg" alt="generative art, perlin noise, delaunay triangulation" width="700" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(no source code for now, but think Perlin Noise and Delaneay triangulation &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  ) Ill update this post when the app is available. In the meantime, there is a &lt;a href="http://www.vimeo.com/15872096" target="_blank"&gt;video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This whas a big difference in mindset for me. The code was just the medium, not the goal, and I actually liked the approach of making interesting images instead of making interesting code.&lt;/p&gt;
&lt;p&gt;I looked around on the internet to see what was actually going on in the &lt;a href="http://www.flickr.com/groups/generatorx/" target="_blank"&gt;generative art scene&lt;/a&gt;. And one thing I noticed is that a lot of people use photos to extract colours and/or shapes for there art (I also did it).  Which makes a lot of sense, photos always have a nice natural colour scheme. But with everything I saw that uses this technique, the source pictures got somehow lost.  So this gave me the idea to extend the original pictures instead of just using them.&lt;/p&gt;
&lt;p&gt;Some results of exploring that concept (click to enlarge):&lt;/p&gt;
&lt;p&gt;&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_lines2.png"&gt;&lt;br /&gt;
&lt;img title="generative lines 1" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_lines2_small.jpg" alt="generative art, perlin noise" width="700" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_lines.png"&gt;&lt;br /&gt;
&lt;img title="generative lines 2" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_lines_small.jpg" alt="generative art, perlin noise" width="700" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Original (public domain) pictures:&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/library_of_congress/2179909780/"&gt;http://www.flickr.com/photos/library_of_congress/2179909780/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/library_of_congress/2179146618/"&gt;http://www.flickr.com/photos/library_of_congress/2179146618/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source code:  &lt;a class="downloadlink" href="http://www.neuroproductions.be/wp-content/plugins/download-monitor/download.php?id=2" title=" downloaded 2735 times" &gt;generative_art_source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An other thing I saw where beautiful 3d structures (mostly made with &lt;a title="3D generative art" href="http://structuresynth.sourceforge.net/" target="_blank"&gt;structuresynth&lt;/a&gt; and rendered with &lt;a href="http://sunflow.sourceforge.net/" target="_blank"&gt;sunflow&lt;/a&gt;) So I thought it would be nice to make stuff like that in Flash.&lt;/p&gt;
&lt;p&gt;Creating 3D structures ain&amp;#8217;t a problem, but two things I really wanted for my renders where depth of field and ambient occlusion. So I messed a round with depth-maps to create screen-space ambient occlusion and custom blur filters for the depth of field. But the result wasn&amp;#8217;t really satisfying. To get a good result I had to ray trace my structures.  Creating a ray tracer in ActionScript seemed like an interesting challenge, so that&amp;#8217;s what I did&amp;#8230;&lt;/p&gt;
&lt;p&gt;Some of the ray traced images (click to enlarge) :&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/fries_generative_art_full.jpg"&gt;&lt;br /&gt;
&lt;img title="generative art 3D 1" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/fries_generative_art.jpg" alt="generative art, perlin noise, 3D flash ray-tracer" width="700" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_art_cubes_full.jpg"&gt;&lt;br /&gt;
&lt;img title="generative art 3D 1" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_art_cubes.jpg" alt="generative art, perlin noise, 3D flash ray-tracer" width="700" /&gt;&lt;/a&gt;&lt;br /&gt;
Making a ray tracer is quit addictive, and soon I wasn&amp;#8217;t satisfied with my limited feature set and at this point I don&amp;#8217;t feel I have explored those 3D structures enough. So in the next post (coming very soon&amp;#8230;) some more renders and more about the ray tracer + the ray tracer source code. So, stay tuned &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;And finally, a little preview of things to come ( I admit, the shading is a little bit overdone :p ):&lt;br /&gt;
&lt;a rel="shadowbox" href="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_art_pipes_full.jpg"&gt;&lt;br /&gt;
&lt;img title="generative triangles 2" src="http://www.neuroproductions.be/uploads/blog/examples/generative_art_exp/generative_art_pipes.jpg" alt="generative art, perlin noise, delaunay triangulation" width="700" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F&amp;amp;title=A+take+on+Generative+Art" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F&amp;amp;title=A+take+on+Generative+Art" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F&amp;amp;title=A+take+on+Generative+Art" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F&amp;amp;headline=A+take+on+Generative+Art" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=A+take+on+Generative+Art&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=A+take+on+Generative+Art&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=A+take+on+Generative+Art&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=A+take+on+Generative+Art&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=A+take+on+Generative+Art&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F&amp;amp;title=A+take+on+Generative+Art&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fgenerative-art%2Fa-take-on-generative-art%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/3I5rGPcfyfc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/generative-art/a-take-on-generative-art/#comments" thr:count="10" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/generative-art/a-take-on-generative-art/feed/atom/" thr:count="10" />
		<thr:total>10</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/generative-art/a-take-on-generative-art/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Blowing Up Images]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/yZ9b_SkrJaE/" />
		<id>http://www.neuroproductions.be/?p=384</id>
		<updated>2010-06-08T15:41:34Z</updated>
		<published>2010-06-06T17:17:01Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" /><category scheme="http://www.neuroproductions.be" term="Generative art" /><category scheme="http://www.neuroproductions.be" term="Source code &amp; tutorials" /><category scheme="http://www.neuroproductions.be" term="generative_art" /><category scheme="http://www.neuroproductions.be" term="perlin_noise" />		<summary type="html"><![CDATA[After my previous experiment I thought those shapes that were created looked kinda cool. But those were optimised for speed.  [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/blowing-up-images/">&lt;p&gt;After &lt;a title="perlin noise transitions" href="http://www.neuroproductions.be/experiments/particle-transition/" target="_blank"&gt;my previous experiment&lt;/a&gt; I thought those shapes that were created looked kinda cool. But those were optimised for speed.  So this time I tried the same effect but now I aimed for a better quality.&lt;/p&gt;
&lt;p&gt;Source code: &lt;a class="downloadlink" href="http://www.neuroproductions.be/wp-content/plugins/download-monitor/download.php?id=28" title=" downloaded 2774 times" &gt;blowing_up_src&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The result of a Sunday afternoon rendering:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="generative art perlin noise 5" src="http://www.neuroproductions.be/uploads/blog/examples/noise_generative_art/generative_art_4.png" alt="generative art noise 4" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="generative art perlin noise 6" src="http://www.neuroproductions.be/uploads/blog/examples/noise_generative_art/generative_art_6.png" alt="generative art noise 4" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="generative art perlin noise 7" src="http://www.neuroproductions.be/uploads/blog/examples/noise_generative_art/generative_art_7.png" alt="generative art noise 5" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="generative art  perlin noise 2" src="http://www.neuroproductions.be/uploads/blog/examples/noise_generative_art/generative_art_5.png" alt="generative art noise 2" width="700" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="generative art noise 1" src="http://www.neuroproductions.be/uploads/blog/examples/noise_generative_art/generative_art_3.png" alt="generative art noise 1" width="700" height="515" /&gt;&lt;/p&gt;
&lt;p&gt;Update:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nocreativity.com/blog/" target="_blank"&gt;Ronny Welter&lt;/a&gt; used my source code to make a cool video of the rendering process. Now you really see how its created and why I called this post &amp;#8220;Blowing Up Images&amp;#8221; . I also love how he added the shadow so it look like its 3D. Great job Ronny!&lt;/p&gt;
&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="700" height="394" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12379381&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed type="application/x-shockwave-flash" width="700" height="394" src="http://vimeo.com/moogaloop.swf?clip_id=12379381&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F&amp;amp;title=Blowing+Up+Images" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F&amp;amp;title=Blowing+Up+Images" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F&amp;amp;title=Blowing+Up+Images" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F&amp;amp;headline=Blowing+Up+Images" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Blowing+Up+Images&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Blowing+Up+Images&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Blowing+Up+Images&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Blowing+Up+Images&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Blowing+Up+Images&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F&amp;amp;title=Blowing+Up+Images&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fblowing-up-images%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/yZ9b_SkrJaE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/blowing-up-images/#comments" thr:count="27" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/blowing-up-images/feed/atom/" thr:count="27" />
		<thr:total>27</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/blowing-up-images/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Particle Transition]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/k2uPT0xsH7E/" />
		<id>http://www.neuroproductions.be/?p=368</id>
		<updated>2010-12-08T13:00:13Z</updated>
		<published>2010-06-05T12:28:33Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" /><category scheme="http://www.neuroproductions.be" term="Generative art" /><category scheme="http://www.neuroproductions.be" term="Source code &amp; tutorials" /><category scheme="http://www.neuroproductions.be" term="bitmapdata" /><category scheme="http://www.neuroproductions.be" term="perlinnoise" /><category scheme="http://www.neuroproductions.be" term="perlin_noise" />		<summary type="html"><![CDATA[It&#8217;s been quite silent on this blog lately. The main reason is that I have a lot of work for [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/particle-transition/">&lt;p&gt;It&amp;#8217;s been quite silent on this blog lately. The main reason is that I have a lot of work for clients (Some great stuff, maybe i&amp;#8217;ll post some of that later). That&amp;#8217;s good for me, but not for my site. To break the silence, a very small test I made. It&amp;#8217;s not that special, but it looks pretty cool, I think&amp;#8230;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s dynamic, but it needs some pre-rendering. so the sliders update in the next animation sequence.&lt;/p&gt;

&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SmokeTransition_574597003"
			align="left"
			class="flashmovie"
			width="700"
			height="520"&gt;
	&lt;param name="movie" value="http://www.neuroproductions.be/uploads/blog/examples/particleTrans/SmokeTransition.swf" /&gt;
	&lt;param name="play" value="false" /&gt;
	&lt;param name="loop" value="false" /&gt;
	&lt;param name="menu" value="false" /&gt;
	&lt;param name="quality" value="high" /&gt;
	&lt;param name="scale" value="noscale" /&gt;
	&lt;param name="salign" value="tl" /&gt;
	&lt;param name="wmode" value="window" /&gt;
	&lt;param name="bgcolor" value="#ffffff" /&gt;
	&lt;param name="swliveconnect" value="false" /&gt;
	&lt;param name="devicefont" value="true" /&gt;
	&lt;param name="allowscriptaccess" value="always" /&gt;
	&lt;param name="seamlesstabbing" value="true" /&gt;
	&lt;param name="allowfullscreen" value="true" /&gt;
	&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--[if !IE]&gt;--&gt;
	&lt;object	type="application/x-shockwave-flash"
			data="http://www.neuroproductions.be/uploads/blog/examples/particleTrans/SmokeTransition.swf"
			name="fm_SmokeTransition_574597003"
			align="left"
			width="700"
			height="520"&gt;
		&lt;param name="play" value="false" /&gt;
		&lt;param name="loop" value="false" /&gt;
		&lt;param name="menu" value="false" /&gt;
		&lt;param name="quality" value="high" /&gt;
		&lt;param name="scale" value="noscale" /&gt;
		&lt;param name="salign" value="tl" /&gt;
		&lt;param name="wmode" value="window" /&gt;
		&lt;param name="bgcolor" value="#ffffff" /&gt;
		&lt;param name="swliveconnect" value="false" /&gt;
		&lt;param name="devicefont" value="true" /&gt;
		&lt;param name="allowscriptaccess" value="always" /&gt;
		&lt;param name="seamlesstabbing" value="true" /&gt;
		&lt;param name="allowfullscreen" value="true" /&gt;
		&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--&lt;![endif]--&gt;
		
&lt;p&gt;&lt;a href="http://adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /&gt;&lt;/a&gt;&lt;/p&gt;

	&lt;!--[if !IE]&gt;--&gt;
	&lt;/object&gt;
	&lt;!--&lt;![endif]--&gt;
&lt;/object&gt;
&lt;p&gt;In short, I create particles of every pixel. I pre-render the out animation of the in and out bitmap with the same Perlin Noise. Then I animate them over each other.&lt;/p&gt;
&lt;p&gt;Check the source code for the details &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Source code: &lt;a class="downloadlink" href="http://www.neuroproductions.be/wp-content/plugins/download-monitor/download.php?id=27" title=" downloaded 1536 times" &gt;ParticleTrans_src&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Edit: sometimes the example  doesn&amp;#8217;t work in the browser (blame twitter, and there ever changing crossdomain policy &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  )&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F&amp;amp;title=Particle+Transition+" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F&amp;amp;title=Particle+Transition+" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F&amp;amp;title=Particle+Transition+" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F&amp;amp;headline=Particle+Transition+" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Particle+Transition+&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Particle+Transition+&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Particle+Transition+&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Particle+Transition+&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Particle+Transition+&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F&amp;amp;title=Particle+Transition+&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fparticle-transition%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/k2uPT0xsH7E" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/particle-transition/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/particle-transition/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/particle-transition/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Web crawler &#8211; Link Visualisation]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/n17V4hgEJ-g/" />
		<id>http://www.neuroproductions.be/?p=347</id>
		<updated>2010-06-06T18:49:54Z</updated>
		<published>2010-03-16T15:57:51Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" />		<summary type="html"><![CDATA[Yet another small weekend project (as in &#8220;Omg , I have 2 days to make something for myself before I have [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/web-crawler-link-visualisation/">&lt;p&gt;Yet another small weekend project (as in &amp;#8220;Omg , I have 2 days to make something for myself before I have to go back working on commercial projects!&amp;#8221; )&lt;/p&gt;
&lt;p&gt;This time I made a simple web crawler that visualises html pages and the links between them&lt;/p&gt;
&lt;p&gt;In short: Every circle is a page, they try to group per domain, the biggest circle is the start page, the smaller the circle, the more clicks your away from it (the smallest ones are 3 clicks), if there is a connection there is a line between them (the deepest items aren&amp;#8217;t checked for connections between each other)&lt;/p&gt;
&lt;p&gt;An example, click to view in full size (starts from neuroproductions.be) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.neuroproductions.be/uploads/blog/examples/crawler/high.html" target="_blank"&gt;&lt;img class="alignnone" title="flash_web_crawler" src="http://www.neuroproductions.be/uploads/blog/crawler.jpg" alt="flash_web_crawler"  /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It only works local due cross domain issues and spring-graphing almost 2000 nodes is not what you call fast, so no live example.&lt;br /&gt;
You can always download the source code and try it yourself.  (Warning: the source code is a crappy mess )&lt;br /&gt;
Source code: &lt;a class="downloadlink" href="http://www.neuroproductions.be/wp-content/plugins/download-monitor/download.php?id=26" title=" downloaded 2183 times" &gt;WebCrawler_src&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I should have put more time in it, but time flies, and I already have some new exiting ideas for next weekend&amp;#8230; &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F&amp;amp;title=Web+crawler+-+Link+Visualisation" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F&amp;amp;title=Web+crawler+-+Link+Visualisation" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F&amp;amp;title=Web+crawler+-+Link+Visualisation" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F&amp;amp;headline=Web+crawler+-+Link+Visualisation" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Web+crawler+-+Link+Visualisation&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Web+crawler+-+Link+Visualisation&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Web+crawler+-+Link+Visualisation&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Web+crawler+-+Link+Visualisation&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Web+crawler+-+Link+Visualisation&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F&amp;amp;title=Web+crawler+-+Link+Visualisation&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Fweb-crawler-link-visualisation%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/n17V4hgEJ-g" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/web-crawler-link-visualisation/#comments" thr:count="9" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/web-crawler-link-visualisation/feed/atom/" thr:count="9" />
		<thr:total>9</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/web-crawler-link-visualisation/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Outlines and other Dynamic Text pimping]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/q6W44eeWd_c/" />
		<id>http://www.neuroproductions.be/?p=308</id>
		<updated>2010-06-06T19:00:42Z</updated>
		<published>2010-03-08T14:35:14Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" />		<summary type="html"><![CDATA[Trying to parse binary formats was on my to do list for quite a while. And recently I saw a [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/outlines-dynamic-text/">&lt;p&gt;Trying to parse binary formats was on my to do list for quite a while. And recently I saw a &lt;a href="http://www.haxer.be/fontwriter/index.swf" rel="shadowbox[post-308];width=640;height=385;" target="_blank"&gt;cool little tool&lt;/a&gt; made in Haxe by &lt;a href="http://code.google.com/p/hxswfml/" target="_blank"&gt;Adnez&lt;/a&gt; that parses True Type Fonts, and exports the raw data to different formats. And you since you don&amp;#8217;t have text outlines in Flash,  I wanted to give it a shot.&lt;/p&gt;
&lt;p&gt;So I looked up the &lt;a href="http://www.microsoft.com/typography/otspec/otff.htm" target="_blank"&gt;TTF specifications&lt;/a&gt; and started reading those bytes. Due to time shortage it wasn&amp;#8217;t a complete success. But I got some results and the cool thing about having the raw font data is that you can manipulate it:&lt;/p&gt;

&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_TextTest_414720959"
			align="left"
			class="flashmovie"
			width="700"
			height="450"&gt;
	&lt;param name="movie" value="http://www.neuroproductions.be/uploads/blog/examples/fontfun/TextTest.swf" /&gt;
	&lt;param name="play" value="false" /&gt;
	&lt;param name="loop" value="false" /&gt;
	&lt;param name="menu" value="false" /&gt;
	&lt;param name="quality" value="high" /&gt;
	&lt;param name="scale" value="noscale" /&gt;
	&lt;param name="salign" value="tl" /&gt;
	&lt;param name="wmode" value="window" /&gt;
	&lt;param name="bgcolor" value="#ffffff" /&gt;
	&lt;param name="swliveconnect" value="false" /&gt;
	&lt;param name="devicefont" value="true" /&gt;
	&lt;param name="allowscriptaccess" value="always" /&gt;
	&lt;param name="seamlesstabbing" value="true" /&gt;
	&lt;param name="allowfullscreen" value="true" /&gt;
	&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--[if !IE]&gt;--&gt;
	&lt;object	type="application/x-shockwave-flash"
			data="http://www.neuroproductions.be/uploads/blog/examples/fontfun/TextTest.swf"
			name="fm_TextTest_414720959"
			align="left"
			width="700"
			height="450"&gt;
		&lt;param name="play" value="false" /&gt;
		&lt;param name="loop" value="false" /&gt;
		&lt;param name="menu" value="false" /&gt;
		&lt;param name="quality" value="high" /&gt;
		&lt;param name="scale" value="noscale" /&gt;
		&lt;param name="salign" value="tl" /&gt;
		&lt;param name="wmode" value="window" /&gt;
		&lt;param name="bgcolor" value="#ffffff" /&gt;
		&lt;param name="swliveconnect" value="false" /&gt;
		&lt;param name="devicefont" value="true" /&gt;
		&lt;param name="allowscriptaccess" value="always" /&gt;
		&lt;param name="seamlesstabbing" value="true" /&gt;
		&lt;param name="allowfullscreen" value="true" /&gt;
		&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--&lt;![endif]--&gt;
		&lt;a href="http://adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /&gt;&lt;/a&gt;&lt;/p&gt;

	&lt;!--[if !IE]&gt;--&gt;
	&lt;/object&gt;
	&lt;!--&lt;![endif]--&gt;
&lt;/object&gt;
&lt;p&gt;But as you can see, it&amp;#8217;s not really that fast or spectacular and my parser is not what you&amp;#8217;d call complete or bug free (A lot of Fonts don&amp;#8217;t work or are mapped wrong). I guess the important thing is that I learned that you don&amp;#8217;t have to be afraid of parsing binary files. It&amp;#8217;s not so hard as I thought.&lt;/p&gt;
&lt;p&gt;But it took some time and effort, so I made an other example to fill this Blog post &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  (inspired by Japanese toy typography)&lt;/p&gt;

&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_TextTest2_1539452285"
			align="left"
			class="flashmovie"
			width="700"
			height="960"&gt;
	&lt;param name="movie" value="http://www.neuroproductions.be/uploads/blog/examples/fontfun/TextTest2.swf" /&gt;
	&lt;param name="play" value="false" /&gt;
	&lt;param name="loop" value="false" /&gt;
	&lt;param name="menu" value="false" /&gt;
	&lt;param name="quality" value="high" /&gt;
	&lt;param name="scale" value="noscale" /&gt;
	&lt;param name="salign" value="tl" /&gt;
	&lt;param name="wmode" value="window" /&gt;
	&lt;param name="bgcolor" value="#ffffff" /&gt;
	&lt;param name="swliveconnect" value="false" /&gt;
	&lt;param name="devicefont" value="true" /&gt;
	&lt;param name="allowscriptaccess" value="always" /&gt;
	&lt;param name="seamlesstabbing" value="true" /&gt;
	&lt;param name="allowfullscreen" value="true" /&gt;
	&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--[if !IE]&gt;--&gt;
	&lt;object	type="application/x-shockwave-flash"
			data="http://www.neuroproductions.be/uploads/blog/examples/fontfun/TextTest2.swf"
			name="fm_TextTest2_1539452285"
			align="left"
			width="700"
			height="960"&gt;
		&lt;param name="play" value="false" /&gt;
		&lt;param name="loop" value="false" /&gt;
		&lt;param name="menu" value="false" /&gt;
		&lt;param name="quality" value="high" /&gt;
		&lt;param name="scale" value="noscale" /&gt;
		&lt;param name="salign" value="tl" /&gt;
		&lt;param name="wmode" value="window" /&gt;
		&lt;param name="bgcolor" value="#ffffff" /&gt;
		&lt;param name="swliveconnect" value="false" /&gt;
		&lt;param name="devicefont" value="true" /&gt;
		&lt;param name="allowscriptaccess" value="always" /&gt;
		&lt;param name="seamlesstabbing" value="true" /&gt;
		&lt;param name="allowfullscreen" value="true" /&gt;
		&lt;param name="allownetworking" value="all" /&gt;
	&lt;!--&lt;![endif]--&gt;
		&lt;a href="http://adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /&gt;&lt;/a&gt;&lt;/p&gt;

	&lt;!--[if !IE]&gt;--&gt;
	&lt;/object&gt;
	&lt;!--&lt;![endif]--&gt;
&lt;/object&gt;
&lt;p&gt;I added the source code, but I don&amp;#8217;t recommend using it in a real project. There are more optimal ways to get those results. And there are definitely better TTF parsers out there like &lt;a href="http://code.google.com/p/hxswfml/"&gt;hxswfml&lt;/a&gt; (there is a swc you can use in Flash) or &lt;a href="http://www.sephiroth.it/weblog/archives/2007/07/fontreader_convert_truetype_fonts_in.php"&gt;FontReader.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source code with the two examples (without the fonts ): &lt;a class="downloadlink" href="http://www.neuroproductions.be/wp-content/plugins/download-monitor/download.php?id=25" title=" downloaded 1284 times" &gt;ttf_source&lt;/a&gt;&lt;/p&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F&amp;amp;title=Outlines+and+other+Dynamic+Text+pimping" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F&amp;amp;title=Outlines+and+other+Dynamic+Text+pimping" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F&amp;amp;title=Outlines+and+other+Dynamic+Text+pimping" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F&amp;amp;headline=Outlines+and+other+Dynamic+Text+pimping" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Outlines+and+other+Dynamic+Text+pimping&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Outlines+and+other+Dynamic+Text+pimping&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Outlines+and+other+Dynamic+Text+pimping&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Outlines+and+other+Dynamic+Text+pimping&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Outlines+and+other+Dynamic+Text+pimping&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F&amp;amp;title=Outlines+and+other+Dynamic+Text+pimping&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Foutlines-dynamic-text%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/q6W44eeWd_c" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/outlines-dynamic-text/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/outlines-dynamic-text/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/outlines-dynamic-text/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Kris</name>
					</author>
		<title type="html"><![CDATA[Trying HTML5 as a Flash developer]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeuroProductions/~3/7Id4TwFjUM8/" />
		<id>http://www.neuroproductions.be/?p=244</id>
		<updated>2010-02-23T10:31:04Z</updated>
		<published>2010-02-22T09:53:07Z</published>
		<category scheme="http://www.neuroproductions.be" term="Experiments" />		<summary type="html"><![CDATA[We have all seen (and participated) in the recent Flash vs HTML5 discussions. But to get a good view on [...]]]></summary>
		<content type="html" xml:base="http://www.neuroproductions.be/experiments/trying-html5-as-flash-developer/">&lt;div class="longtext"&gt;We have all seen (and participated) in the recent Flash vs HTML5 discussions. But to get a good view on HTML5, I needed to try it out. So I remade an old Flash project of mine (&lt;a title="twitter browser" href="http://www.neuroproductions.be/twitter_friends_network_browser/" target="_blank"&gt;The Twitter Browser&lt;/a&gt;) in HTML5.&lt;br /&gt;
I chose that one because I knew it would be possible, its not to complicated and it has a little bit of everything: Loading external data, scripted animation, custom interactions and it needs a decent amount of computing power.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.neuroproductions.be/twitter_friends_network_browser_html5/"&gt;&lt;img title="twitter Explorer HTML5" src="http://www.neuroproductions.be/wp-content/uploads/2010/02/twitterExplorer.png" alt="twitter Explorer HTML5" width="700" height="365" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I never did any real JavaScript, so I went to w3schools.com and browsed thru the JavaScript tutorials and started coding. It took me +- 8 hours to to finish the job: &lt;a title="html5 twitter browser" href="http://www.neuroproductions.be/twitter_friends_network_browser_html5/" target="_blank"&gt;the HTML5 version&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;My opinion&lt;/h3&gt;
&lt;p&gt;But first a disclaimer:  I only have one day experience with JavaScript. Correct me if I say something wrong.&lt;/p&gt;
&lt;h4&gt;Possibilities&lt;/h4&gt;
&lt;p&gt;Its cool how can manipulate the DOM elements, I really loved that. And yes, It can and will replace some of the Flash out there. But there are sill a lot of limitations. &lt;/p&gt;
&lt;p&gt;The canvas element is not an alternative for Flash. There is not something like a display-list and no mouse-events for separate elements. But I guess you can emulate that with a lot of layered canvases and other DOM elements, combined with mouse position calculations etc, but that&amp;#8217;s going to be a mess and I don&amp;#8217;t know if my cpu will like that&amp;#8230; I&amp;#8217;m also missing webcam access, decent sound handling, 3D (webGL will do that, but it won&amp;#8217;t be in IE9), real video integration etc, the list goes on.  You can say that they are details, but I used those things in almost every recent commercial project. At this point HTML5 would be a step backwards for me.&lt;/p&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;p&gt;Comparing the Flash and the HTML version wouldn&amp;#8217;t be fair. I probably did some stupid things in the HTML version, and I know I did some stupid things in the Flash version (which is a couple years old). In many ways the JavaScript version handles  things smarter than the Flash version. The least thing you can say about the Flash version is that it wasn&amp;#8217;t optimized for speed.&lt;/p&gt;
&lt;p&gt;But I was quit surprised about the JavaScript speed. It&amp;#8217;s decent in a modern browser. I was expecting that I had to make a striped down version (with less nodes) But it seems to work fine. But HTML5/JavaScript is no miracle, it uses a lot of CPU for this and it will crash if you have an older browser or slower computer.&lt;/p&gt;
&lt;h4&gt;JavaScript&lt;/h4&gt;
&lt;p&gt;This is my main concern with the hole HTML5 thing, sorry guys, but JavaScript sucks. People who say that JavaScript is the future of the web obviously haven&amp;#8217;t done some real programming in it. The dynamic objects, the loose typing, the prototype model, the silent failing, they are all a real pain in the ass. For those old enough to remember, JavaScript feels a lot like/is ActionScript 1&amp;#8230;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s doable if you make a 500 lines project, but if you need to do a 10,000-100,000 lines app/website (which I do daily in AS3) it&amp;#8217;s not going to be funny any more.&lt;/p&gt;
&lt;h4&gt;Mobile Safari&lt;/h4&gt;
&lt;p&gt;Mobile Safari can&amp;#8217;t handle it on an iphone. It goes really slow. But you can&amp;#8217;t compare a normal cpu with a phone cpu. And I didn&amp;#8217;t want to write about this, till I noticed something very strange and disturbing when I was testing it on the iphone.&lt;/p&gt;
&lt;p&gt;Take a look at example below, and try to drag both images:&lt;br /&gt;
&lt;iframe src="http://www.neuroproductions.be/twitter_friends_network_browser_html5/safariTest.html" width="700" height="300"&gt;&lt;/iframe&gt;&lt;br /&gt;
The left image just reacts as you would expect from an image in a browser. With the right image, I stopped the default browser behaviour, and made my own drag.&lt;/p&gt;
&lt;p&gt;This is something very useful. Besides for dragging, you need this functionality if you want to make a html5 drawing app or, and this is the interesting part, if you want to detect mouse/touch gestures&lt;/p&gt;
&lt;p&gt;But what seems to be the case : &lt;strong&gt;This doesn&amp;#8217;t work on Mobile Safari!&lt;/strong&gt; &lt;del datetime="2010-02-23T09:50:29+00:00"&gt;Does this mean that Apple is blocking html touch functionality in Mobile Safari? It seems so.&lt;/del&gt; This wasn&amp;#8217;t right. Thanks &lt;a href="http://www.thecssninja.com"&gt;Ryan&lt;/a&gt; for pointing that out! There seems to be good touch support in JavaScript/on the iphone, even multi touch. Which is very cool!  -&gt; http://www.quirksmode.org/m/tests/drag2.html&lt;/p&gt;
&lt;h4&gt;They took our jobs!&lt;/h4&gt;
&lt;p&gt;You can&amp;#8217;t ignore that some Flash developers out there are starting to worry about there future. But I don&amp;#8217;t think you have to. If there comes a day when Flash will be obsolete (and I don&amp;#8217;t see that happen soon), we&amp;#8217;re gonna be excellent JavaScript developers.&lt;/p&gt;
&lt;p&gt;I never did any JavaScript before, and I sill managed to make that example in one day. I&amp;#8217;m sure it&amp;#8217;s not perfect, and I probably made a lot of beginners mistakes. But I know it won&amp;#8217;t take me long to make the switch.&lt;/p&gt;
&lt;p&gt;As a Flash developer you can script advanced animations and interaction and UIs from scratch. You know your math. You can create large and complex client-side apps. You know how to be creative and create great user experiences with a limited tool-set. And you really love to do all those things.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s that combination of talents that made us leave HTML for Flash in the first place. And I think that those talents make that Flash developers can and will kick most HTML&amp;#8217;ers asses when it comes to JavaScript development.&lt;/p&gt;
&lt;p&gt;So, if that day comes, there not gonna take our jobs, but were gonna take theirs. &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;h4&gt;Will I do more JavaScript/html5&lt;/h4&gt;
&lt;p&gt;WebGL is definitely still on my to-do list, but apart from that,  I think I will stick with Flash for now. I have some pretty cool commercial projects coming up and Flash is still is the tool of my choice for experimenting. &lt;img src='http://www.neuroproductions.be/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/div&gt;
&lt;div class="lightsocial_container"&gt;&lt;a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F&amp;amp;title=Trying+HTML5+as+a+Flash+developer" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F&amp;amp;title=Trying+HTML5+as+a+Flash+developer" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F&amp;amp;title=Trying+HTML5+as+a+Flash+developer" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F&amp;amp;headline=Trying+HTML5+as+a+Flash+developer" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Trying+HTML5+as+a+Flash+developer&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Trying+HTML5+as+a+Flash+developer&amp;amp;u=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://delicious.com/save?title=Trying+HTML5+as+a+Flash+developer&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Trying+HTML5+as+a+Flash+developer&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Trying+HTML5+as+a+Flash+developer&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F&amp;amp;title=Trying+HTML5+as+a+Flash+developer&amp;amp;summary=&amp;amp;source=" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.neuroproductions.be%2Fexperiments%2Ftrying-html5-as-flash-developer%2F" target="_blank"&gt;&lt;img class="lightsocial_img" src="http://www.neuroproductions.be/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeuroProductions/~4/7Id4TwFjUM8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.neuroproductions.be/experiments/trying-html5-as-flash-developer/#comments" thr:count="14" />
		<link rel="replies" type="application/atom+xml" href="http://www.neuroproductions.be/experiments/trying-html5-as-flash-developer/feed/atom/" thr:count="14" />
		<thr:total>14</thr:total>
	<feedburner:origLink>http://www.neuroproductions.be/experiments/trying-html5-as-flash-developer/</feedburner:origLink></entry>
	</feed>
