<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>blog.omine.net</title>
		<atom:link href="http://blog.omine.net/rss/" rel="self" type="application/rss+xml" />
		<link>http://blog.omine.net</link>
		<description></description>
		<generator>http://chyrp.net/</generator>
		<language>en</language>
		<pubDate>Mon, 14 Feb 2011 10:33:00 -0500</pubDate>
		<docs>http://backend.userland.com/rss2</docs>
		<item>
			<title>Golden Ages concert visuals</title>
			<link>http://blog.omine.net/2011/02/14/golden-ages-concert-visuals/</link>
			<description><![CDATA[	<p><iframe src="http://player.vimeo.com/video/19880647?portrait=0&amp;color=dd1100" width="450" height="253" frameborder="0"></iframe></p>

	<p><a href="http://vimeo.com/19880647">Watch in HD on Vimeo</a></p>

	<p>I was invited by Francis Tseng of <a href="http://goldenages.bandcamp.com/">Golden Ages</a> to create audio-reactive visuals for the band&#8217;s concerts.</p>

	<p>The visuals revolve around a rotating spiral thing made of balls and lines, inspired by <a href="http://www.google.com/images?q=ctenophora">ctenophora</a> and <a href="http://www.google.com/images?q=zooplankton">zooplankton</a>. There are 7 &#8220;scenes&#8221;, one for each song in their set list. With each scene, the visuals becomes more distorted and more agitated. It was built with Processing and reacted to the sound of the band fed to the computer during the concert. The post-processing effects (blurring, glowing, displacement) were done with <span class="caps">GLSL</span> shaders. Above is a screen capture of this audio visualization fed with the MP3 of Everything Will Be Alright (<a href="http://vimeo.com/14134820">official video</a>).</p>

	<p>This was a fun project and I really like how it turned out. Looking forward to work on more projects of this kind.</p>

	<p><img src="/upload/goldenages/concert.jpg" alt="" width="450" height="300" /></p>

	<p><object width="450" height="338"> <param name="flashvars" value="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157626039432134%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157626039432134%2F&set_id=72157626039432134&jump_to="></param> <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157626039432134%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157626039432134%2F&set_id=72157626039432134&jump_to=" width="450" height="338"></embed></object></p>]]></description>
			<pubDate>Mon, 14 Feb 2011 10:33:00 -0500</pubDate>
			<guid>http://blog.omine.net/2011/02/14/golden-ages-concert-visuals/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>untitled 252</title>
			<link>http://blog.omine.net/2010/06/13/untitled-252/</link>
			<description><![CDATA[	<p><object width="450" height="253"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12445697&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12445697&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object></p>

	<p><a href="http://vimeo.com/12445697">Watch the HD video</a> on Vimeo.</p>

	<p>Or <a href="/upload/untitled252/">click here for the realtime version</a> (Java applet). A good graphics card is required.</p>

	<p>Realtime graphics made with <a href="http://www.processing.org/">Processing</a>, <a href="http://toxiclibs.org/">toxiclibs</a> for general vector math and <a href="http://code.compartmental.net/tools/minim/">Minim</a> for audio playback. The following links were very helpful:</p>

	<ul>
		<li>Algorithm for <a href="http://cgafaq.info/wiki/Evenly_distributed_points_on_sphere">even distribution of points on a sphere</a> from <span class="caps">CGA</span> <span class="caps">FAQ</span> wiki, used for uniformly distributing tentacles over a spherical body&#8217;s surface.</li>
		<li><a href="http://www.mvps.org/directx/articles/catmull/">Introduction to Catmull Rom Splines</a> by Robert Dunlop, used for interpolating camera&#8217;s position.</li>
		<li><a href="http://www.lighthouse3d.com/opengl/glsl/index.php?intro">Per-pixel lighting <span class="caps">GLSL</span> shaders</a> from Lighthouse3D.</li>
		<li>Billboard particles code from this <a href="http://www.openframeworks.cc/forum/viewtopic.php?f=9&amp;t=2639">OpenFrameworks forums thread</a>.</li>
		<li>Solution for finding the normal of a point in a sine wave from this <a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=551569">Gamedev forums thread</a>. I had to solve this problem to calculate the normals of the moving tentacles, because each tentacle is a cylinder deformed by a vertex shader with a sine wave. I need to learn calculus. :-)</li>
	</ul>

	<p>I feel that I haven&#8217;t explored 3D graphics in my projects so far, so that was one thing I wanted to do this time. But 3D graphics implies lighting, texturing, shadows, which are all difficult problems to solve. In the end, I only used one directional light and wasn&#8217;t able to implement shadows nor ambient occlusion.</p>

	<p>Another important thing was sequencing. One person on Vimeo commented that <a href="http://vimeo.com/8393653">untitled 246</a> lacked some sort of ending, and I agreed. Even abstract visual graphics can benefit from some sense of storytelling. I think this time there are too many things happening in the ending scene, but not much changes between the first and the second sections of song, so there&#8217;s an imbalance.</p>

	<p>Conclusion: I think I tried to build something too big (or too complex) for my current OpenGL skills. Have to keep studying. Next time I&#8217;ll probably try something a bit simpler, though. :-)</p>

	<p><em>PS: 2010 has been a busy year, I&#8217;ve worked on some interesting Flash development projects, but none of them are public yet. Hope to be able to show them soon!</em></p>]]></description>
			<pubDate>Sun, 13 Jun 2010 22:00:00 -0400</pubDate>
			<guid>http://blog.omine.net/2010/06/13/untitled-252/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>untitled 246</title>
			<link>http://blog.omine.net/2009/12/25/untitled-246/</link>
			<description><![CDATA[	<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/5N92xNwmnwM&hl=en_US&fs=1&rel=0&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5N92xNwmnwM&hl=en_US&fs=1&rel=0&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>

	<p>A video for a song. Code and music by me.<br />
(Note: music is <em>not</em> realtime generated, only the graphics).</p>

	<p><img src="/upload/untitled246-sketch.jpg" alt="" width="450" height="337" /></p>

	<p>Video made with <a href="http://www.processing.org/">Processing</a>, <a href="http://code.google.com/p/toxiclibs/">toxiclibs</a>, <a href="http://www.jesusgollonet.com/blog/2007/09/16/penner-easing-processing-library/">penner.easing lib</a>, Robert Hodgin&#8217;s <a href="http://www.flight404.com/blog/?p=113">perlin noise movement</a>, and Paul Bourke&#8217;s <a href="http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/">2D line intersection algorithm</a>.</p>

	<p>Music made with <a href="http://flstudio.image-line.com/">FL</a> and <a href="http://mda.smartelectronix.com/synths.htm"><span class="caps">MDA</span> JX10</a>.</p>]]></description>
			<pubDate>Fri, 25 Dec 2009 05:20:32 -0500</pubDate>
			<guid>http://blog.omine.net/2009/12/25/untitled-246/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Pixel Bender audio visualization</title>
			<link>http://blog.omine.net/2009/10/25/pixel-bender-audio-visualization/</link>
			<description><![CDATA[	<p>This simple <a href="/upload/pb-audio-vis/">audio visualization</a> is based on a combination of pixel shader effects (2D lookup table <a href="http://www.iquilezles.org/www/articles/deform/deform.htm">deformation</a> with sine and cosine functions) and BitmapData effects (accumulation effect, additive blending, blur filter).</p>

	<p>Instead of running a &#8220;real&#8221; audio analysis with <span class="code">SoundMixer.computeSpectrum</span>, I just measured the sound&#8217;s intensity level with <span class="code">SoundChannel.leftPeak</span> and <span class="code">SoundChannel.rightPeak</span>.</p>

	<p>The <span class="caps">SWF</span> file was compiled with Flex <span class="caps">SDK</span> 3.3 and weighs 3.985 bytes (<span class="caps">PBJ</span> data included).</p>

	<p>Music: &#8220;A&#8221; by <a href="http://www.myspace.com/turzi">Turzi</a>.</p>

	<p><a href="/upload/pb-audio-vis/"><img src="/upload/pb-audio-vis/pb-audio-vis.jpg" alt="" width="451" height="254" /></a></p>]]></description>
			<pubDate>Sun, 25 Oct 2009 07:39:05 -0400</pubDate>
			<guid>http://blog.omine.net/2009/10/25/pixel-bender-audio-visualization/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Stogrepock at FILE 2009</title>
			<link>http://blog.omine.net/2009/08/02/stogrepock-at-file-2009/</link>
			<description><![CDATA[	<p>Stogrepock is a remake of the classic <a href="http://en.wikipedia.org/wiki/Lunar_Lander_(arcade_game)">Lunar Lander</a> game. But in this installation, the two players control the spaceship using their voices, instead of a controller. This work is currently on exhibition at <a href="http://www.file.org.br/file2009/press_sp/"><span class="caps">FILE</span> 2009</a> in São Paulo.</p>

	<p>Concept and development by <a href="http://www.fabianoonca.com.br/">Fabiano Onça</a> and <a href="http://www.colmeia.tv/">colmeia</a>.</p>

	<p>Made with <a href="http://www.openframeworks.cc/">OpenFrameworks</a>.</p>

	<p><object width="450" height="338"> <param name="flashvars" value="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157621798051765%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157621798051765%2F&set_id=72157621798051765&jump_to="></param> <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157621798051765%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157621798051765%2F&set_id=72157621798051765&jump_to=" width="450" height="338"></embed></object></p>]]></description>
			<pubDate>Sun, 02 Aug 2009 06:56:11 -0400</pubDate>
			<guid>http://blog.omine.net/2009/08/02/stogrepock-at-file-2009/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>First vvvv experiment</title>
			<link>http://blog.omine.net/2009/04/16/first-vvvv-experiment/</link>
			<description><![CDATA[	<p><object type="application/x-shockwave-flash" width="450" height="253" data="http://www.flickr.com/apps/video/stewart.swf?v=70848" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&photo_secret=46ace082f3&photo_id=3432020180&hd_default=false"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=70848"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=70848" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&photo_secret=46ace082f3&photo_id=3432020180&hd_default=false" height="253" width="450"></embed></object></p>

	<p>This is a quick experiment made with <a href="http://www.vvvv.org/">vvvv</a>.</p>

	<p>Just spinning spheres and moving textures.</p>]]></description>
			<pubDate>Thu, 16 Apr 2009 03:39:47 -0400</pubDate>
			<guid>http://blog.omine.net/2009/04/16/first-vvvv-experiment/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Audio reactive GLSL tentacles</title>
			<link>http://blog.omine.net/2009/04/04/audio-reactive-glsl-tentacles/</link>
			<description><![CDATA[	<p><object type="application/x-shockwave-flash" width="450" height="259" data="http://www.flickr.com/apps/video/stewart.swf?v=68975" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&amp;photo_secret=12a47c7452&amp;photo_id=3411929882"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=68975"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=68975" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=12a47c7452&amp;photo_id=3411929882" height="259" width="450"></embed></object></p>

	<p>Continuing my <a href="http://blog.omine.net/tag/glsl/"><span class="caps">GLSL</span> studies</a> &#8212; now with dynamic lighting (vertex shader) and texturing (fragment shader).</p>

	<p>This application runs at 35fps at 1280&#215;720 pixel resolution on my <span class="caps">ATI</span> HD 4850 card. There are 1024 tentacles, drawn with <span class="code">gluCylinder</span> &#8212; I guess this can still be optimized.</p>

	<p>Made with <a href="http://www.openframeworks.cc/">OpenFrameworks v0.06</a> and <a href="http://glfw.sourceforge.net/"><span class="caps">GLFW</span></a>.<br />
Music: &#8220;M&#8221; by <a href="http://www.telefontelaviv.com/">Telefon Tel-Aviv</a>.</p>]]></description>
			<pubDate>Sat, 04 Apr 2009 04:36:45 -0400</pubDate>
			<guid>http://blog.omine.net/2009/04/04/audio-reactive-glsl-tentacles/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>GLSL Tentacles</title>
			<link>http://blog.omine.net/2009/02/23/glsl-tentacles/</link>
			<description><![CDATA[	<p><object type="application/x-shockwave-flash" width="450" height="259" data="http://www.flickr.com/apps/video/stewart.swf?v=67090" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&amp;photo_secret=58b31990aa&amp;photo_id=3303757227"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=67090"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=67090" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=58b31990aa&amp;photo_id=3303757227" height="259" width="450"></embed></object></p>

	<p>Replaced the small spheres by cones distributed over the big sphere&#8217;s surface. Blur amount is controlled with the mouse.<br />
Made with <a href="http://www.openframeworks.cc/">OpenFrameworks</a>.<br />
Music: &#8220;My Two Nads (Dad Reprise)&#8221; by Out Hud.</p>]]></description>
			<pubDate>Mon, 23 Feb 2009 11:39:44 -0500</pubDate>
			<guid>http://blog.omine.net/2009/02/23/glsl-tentacles/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>GLSL Blob 2</title>
			<link>http://blog.omine.net/2009/02/22/glsl-blob-2/</link>
			<description><![CDATA[	<p><object type="application/x-shockwave-flash" width="450" height="259" data="http://www.flickr.com/apps/video/stewart.swf?v=67090" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&amp;photo_secret=decac281c4&amp;photo_id=3300907980"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=67090"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=67090" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=decac281c4&amp;photo_id=3300907980" height="259" width="450"></embed></object></p>

	<p>Lightning the scene with the vertex shader.<br />
Made with <a href="http://www.openframeworks.cc/">OpenFrameworks</a>.<br />
Music: &#8220;Trash Scapes&#8221; by Ellen Allien.</p>]]></description>
			<pubDate>Sun, 22 Feb 2009 09:21:31 -0500</pubDate>
			<guid>http://blog.omine.net/2009/02/22/glsl-blob-2/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>GLSL Blob</title>
			<link>http://blog.omine.net/2009/02/21/glsl-blob/</link>
			<description><![CDATA[	<p><object type="application/x-shockwave-flash" width="450" height="259" data="http://www.flickr.com/apps/video/stewart.swf?v=67090" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&amp;photo_secret=c911a2e09c&amp;photo_id=3298853988"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=67090"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=67090" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=c911a2e09c&amp;photo_id=3298853988" height="259" width="450"></embed></object></p>

	<p>My first <a href="http://en.wikipedia.org/wiki/GLSL"><span class="caps">GLSL</span></a> -based animation. The blob is made of 3 <span class="code">glutWireSpheres</span> deformed by applying a vertex shader. Deformation is affected by the music and mouse coordinates. In the code snippet below, <span class="code">fft</span> is a value taken from <span class="code">ofSoundGetSpectrum</span> and <span class="code">mult</span> is the pair of mouse coordinates (x, y).</p>

<pre>
#version 120
uniform float fft;
uniform vec2 mult;
uniform vec3 col;
varying vec4 v;
void main()
{
    v = vec4(gl_Vertex);
    vec4 v2 = v;
    v.x += cos( v2.z * mult.x ) * fft;
    v.y += sin( v2.x * mult.y ) * fft;
    v.z += cos( v2.y * mult.x ) * fft;
    gl_Position = gl_ModelViewProjectionMatrix * v;
}
</pre>

	<p>Check the high-res images at <a href="http://www.flickr.com/photos/eomine/sets/72157614267421878/">Flickr</a> .<br />
Made with <a href="http://www.openframeworks.cc">OpenFrameworks</a> .<br />
Music: &#8220;Geek Down&#8221; by J Dilla.</p>]]></description>
			<pubDate>Sat, 21 Feb 2009 12:57:16 -0500</pubDate>
			<guid>http://blog.omine.net/2009/02/21/glsl-blob/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Typographic sketches</title>
			<link>http://blog.omine.net/2009/01/11/typographic-sketches/</link>
			<description><![CDATA[	<p>Before working with <a href="/category/actionscript/">web</a> and <a href="/category/processing/">interactive development</a>, I was very involved in <a href="http://en.wikipedia.org/wiki/Type_design">type design</a>. Most of <a href="http://www.omine.net/">my typefaces</a> are currently distributed through <a href="http://www.myfonts.com/foundry/ominetype/">MyFonts</a>.</p>

	<p>I haven&#8217;t released any typefaces since 2006 but I still draw letters all the time &#8212; I always like to have a piece of paper and a pen or pencil at hand. Today I scanned and uploaded some sketches to <a href="http://flickr.com/photos/eomine/">my Flickr account</a>.</p>

	<p><object width="475" height="356"> <param name="flashvars" value="&offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157612397112169%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157612397112169%2F&set_id=72157612397112169&jump_to="></param> <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=63961"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=63961" allowFullScreen="true" flashvars="&offsite=true&lang=en-us&page_show_url=%2Fphotos%2Feomine%2Fsets%2F72157612397112169%2Fshow%2F&page_show_back_url=%2Fphotos%2Feomine%2Fsets%2F72157612397112169%2F&set_id=72157612397112169&jump_to=" width="475" height="356"></embed></object></p>

	<p>P.S.: Just finished doing some blog maintenance: 
	<ul>
		<li>deleted &#8220;Playground&#8221; category</li>
		<li>created <a href="/category/processing/">Processing</a> and <a href="/category/openframeworks/">OpenFrameworks</a> categories</li>
		<li>deleted <a href="http://chyrp.net/community/comments.php?DiscussionID=335&amp;page=1#Item_0">trackback spam</a></li>
		<li>added links to my <a href="http://www.blip.fm/eomine/">Blip.fm</a>, <a href="http://www.friendfeed.com/eomine/">FriendFeed</a> and <a href="http://www.twitter.com/eomine/">Twitter</a> profiles</li>
		<li>added <a href="http://www.networkedblogs.com/blog/blog.omine.net/">Facebook blog network</a> widget.</li>
	</ul></p>]]></description>
			<pubDate>Sun, 11 Jan 2009 10:57:35 -0500</pubDate>
			<guid>http://blog.omine.net/2009/01/11/typographic-sketches/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>OpenFrameworks audio visualization</title>
			<link>http://blog.omine.net/2008/12/26/openframeworks-audio-visualization/</link>
			<description><![CDATA[	<p><object width="450" height="339"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2638247&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2638247&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="339"></embed></object><br />
<a href="http://vimeo.com/2638247">Passion Pit &#8211; Sleepyhead</a> from <a href="http://vimeo.com/eomine">eduardo omine</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

	<p>&#8212;</p>

	<p>After making some tests with Java OpenGL (<a href="http://en.wikipedia.org/wiki/Java_OpenGL"><span class="caps">JOGL</span></a>) in Eclipse, I decided I should try <a href="http://www.openframeworks.cc/">OpenFrameworks</a> again to delve deeper into <a href="http://en.wikipedia.org/wiki/Opengl">OpenGL</a>. The main problem with <span class="caps">JOGL</span> is that it&#8217;s a &#8220;layer&#8221; on top of the original OpenGL <span class="caps">API</span>; some things are different and often more complex in <span class="caps">JOGL</span> (for example the need to pass ByteBuffers instead of arrays).</p>

	<p>This audio visualization is a simple exercise with <span class="caps">FBO</span>s, <span class="caps">VBO</span>s and shaders. An audio-reactive particle system (512 quads) is rendered to a <span class="caps">FBO</span> and applied as texture to a cube. This cube is then rendered to a second <span class="caps">FBO</span>, which is applied as texture to a second cube. There is a slight blur effect made with <span class="caps">GLSL</span> shaders. The stripes result from the way the cube was UV-mapped, an unexpected effect that turned out interesting.</p>

	<p>At a 640&#215;480 pixels resolution, framerate varies from 30 to 60 <span class="caps">FPS</span> in my computer, equipped with a GeForce 6200 (I need to upgrade my PC).</p>

	<p><strong>Happy 2009 to all! :-)</strong></p>]]></description>
			<pubDate>Fri, 26 Dec 2008 17:23:25 -0500</pubDate>
			<guid>http://blog.omine.net/2008/12/26/openframeworks-audio-visualization/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>CubeMonster</title>
			<link>http://blog.omine.net/2008/11/16/cubemonster/</link>
			<description><![CDATA[	<p><object width="400" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2261960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2261960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="400"></embed></object><br />
<a href="http://vimeo.com/2261960">CubeMonster</a> from <a href="http://vimeo.com/eomine">eduardo omine</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

	<p>Just finished a simple Processing sketch for the <a href="http://rmx.cz/monsters/">Processing Monsters</a> project by <a href="http://rmx.cz">Lukas Vojir</a>. He invited Processing developers to create and share (source code included) little black-and-white, mouse reactive monsters &#8212; there are some cool entries already, <a href="http://rmx.cz/monsters/">go check them out</a>.</p>]]></description>
			<pubDate>Sun, 16 Nov 2008 16:28:52 -0500</pubDate>
			<guid>http://blog.omine.net/2008/11/16/cubemonster/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>I Am David Sparkle - Jaded Afghan</title>
			<link>http://blog.omine.net/2008/10/08/i-am-david-sparkle-jaded-afghan/</link>
			<description><![CDATA[	<p><object width="450" height="254">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1912921&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" />	<embed src="http://vimeo.com/moogaloop.swf?clip_id=1912921&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="254"></embed></object><br />
<a href="http://vimeo.com/1912921?pg=embed&amp;sec=1912921">I Am David Sparkle &#8211; Jaded Afghan</a> from <a href="http://vimeo.com/eomine?pg=embed&amp;sec=1912921">eduardo omine</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1912921">Vimeo</a>.</p>

	<p>&#8212;</p>

	<p>After watching Moscow Olympics&#8217; <a href="http://blog.omine.net/2008/06/22/moscow-olympics-second-trace/">Second Trace video</a>, Errol from <a href="http://www.myspace.com/kittywurecords">KittyWu Records</a> invited me to make a video for Singaporean band <a href="http://www.myspace.com/iamdavidsparkle">I Am David Sparkle</a>.</p>

	<p><em>Jaded Afghan</em> is one of the best tracks on their 2007 album <a href="http://www.last.fm/music/I+am+David+Sparkle/This+Is+The+New"><em>This Is The New</em></a> and also a song well suited to my beat detection algorithm (based on <a href="http://www.gamedev.net/reference/programming/features/beatdetection/">this gamedev.net article</a> &#8212; look for &#8220;frequency selected sound energy algorithm #2&#8221;).</p>

	<p>Inspired by <a href="http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Sound;action=display;num=1174169711">this thread</a> (especially comments from <a href="http://www.pixelsumo.com">Chris O&#8217;Shea</a> and <a href="http://davebollinger.com/works/">Dave Bollinger</a>), this Processing sketch has two modes: <em>capture</em> and <em>render</em>. In capture mode, there&#8217;s audio playback, <span class="caps">FFT</span> analysis and beat detection &#8212; the resulting data is saved to a text file. In render mode, there&#8217;s no audio: all data is retrieved from the text file and <span class="caps">PNG</span> still frames are rendered. It took approximately 1h30 to render the 6779 frames for this video, at 800&#215;450 pixels, 24FPS. The movie file with audio was assembled in Adobe Premiere.</p>

	<p>It&#8217;s highly recommended to download the <a href="http://vimeo.com/1912921">original 170MB Quicktime file</a> &#8212;  the link is at the bottom of the page, below &#8220;Statistics&#8221;. A Vimeo account is required, but it&#8217;s free.</p>

	<p>&#8212;</p>

	<p>Libraries and code snippets used in this project:</p>

	<ul>
		<li><a href="http://code.google.com/p/toxiclibs/">geomutils</a> by <a href="http://postspectacular.com/">Karsten Schmidt</a></li>
		<li><a href="http://www.flight404.com/blog/?p=115">_gl.pde</a> from Robert Hodgin</li>
		<li><a href="http://code.compartmental.net/tools/minim/">Minim</a> by Damien Di Fede</li>
		<li><a href="http://workshop.evolutionzone.com/2007/09/26/code-mousewheelpde/">mouseWheel.pde</a> by Marius Watz</li>
		<li><a href="http://www.cise.ufl.edu/~kdamkjer/processing/libraries/ocd/"><span class="caps">OCD</span></a> by Kristian Damkjer</li>
		<li><a href="http://www.cs.princeton.edu/~traer/physics/">Traer Physics</a> by <a href="http://www.traer.cc/">Jeffrey Traer</a></li>
	</ul>]]></description>
			<pubDate>Wed, 08 Oct 2008 11:12:52 -0400</pubDate>
			<guid>http://blog.omine.net/2008/10/08/i-am-david-sparkle-jaded-afghan/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Tantalus Quest at FILE 2008</title>
			<link>http://blog.omine.net/2008/08/04/tantalus-quest-at-file-2008/</link>
			<description><![CDATA[	<p>Tantalus Quest is a game / installation that I developed at <a href="http://www.colmeia.tv">colmeia</a> for <a href="http://www.file.org.br/"><span class="caps">FILE</span></a> <a href="http://www.file.org.br/file2008press/eng/sao/menu_sao.html">2008</a>, Brazil&#8217;s main electronic arts festival.</p>

	<p>Game designer <a href="http://www.fabianoonca.com.br/">Fabiano Onça</a> conceived the game, in which people must fill geometric shapes with their own silhouettes (as captured by webcams hanging from the ceiling):</p>

	<p><object width="450" height="338"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1544091&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1544091&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="338"></embed></object><br />

<a href="http://www.vimeo.com/1544091?pg=embed&amp;sec=1544091">Tantalus Quest at <span class="caps">FILE</span> 2008</a> from <a href="http://www.vimeo.com/eomine?pg=embed&amp;sec=1544091">eduardo omine</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1544091">Vimeo</a>.</p>

	<p>Software was built with <a href="http://www.openframeworks.cc">OpenFrameworks</a>, which is to C++ what <a href="http://www.processing.org/">Processing</a> is to Java. A prototype was built with Flash (AS3), but it was slow &#8212; reading pixel values (<span class="code">BitmapData.getPixel</span>) can be processor-heavy. Thanks to OpenFrameworks, porting the AS3 code to C++ was quite easy.</p>

	<p>The application is very simple: the images captured by the cameras are brightened, blurred and thresholded, resulting in black blobs. The amount of blob pixels inside the geometric shape count as positive points and the pixels outside the geometric shape count as negative points.</p>

	<p><a href="http://www.flickr.com/photos/eomine/sets/72157606548812962/"><img src="/upload/tantalus/0.jpg" alt="" width="450" height="338" /></a></p>

	<p><a href="http://www.flickr.com/photos/eomine/sets/72157606548812962/"><img src="/upload/tantalus/1.jpg" alt="" width="450" height="338" /></a></p>

	<p>This was my first project with computer art in a physical space &#8212; it&#8217;s something that I should explore further in my personal projects.</p>

	<p><a href="http://www.flickr.com/photos/eomine/sets/72157606548812962/">More pictures at Flickr.</a></p>]]></description>
			<pubDate>Mon, 04 Aug 2008 22:03:57 -0400</pubDate>
			<guid>http://blog.omine.net/2008/08/04/tantalus-quest-at-file-2008/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Context Free</title>
			<link>http://blog.omine.net/2008/07/06/context-free/</link>
			<description><![CDATA[	<p>Finally managed to experiment with <a href="http://www.contextfreeart.org/">Context Free</a>, a software that uses <a href="http://en.wikipedia.org/wiki/Context-free_grammar">context-free grammar</a> to generate images. Substitution rules define a grammar &#8212; it&#8217;s very simple but also very powerful; appropriate to explore the concepts of recursion and randomness.</p>

	<p><a href="http://www.flickr.com/photos/eomine/2639926738/"><img src="/upload/context-free-tentacles2.jpg" alt="" width="450" height="450" /></a></p>

	<p><a href="http://www.flickr.com/photos/eomine/tags/contextfree/">More Context-Free images at Flickr</a></p>]]></description>
			<pubDate>Sun, 06 Jul 2008 08:03:44 -0400</pubDate>
			<guid>http://blog.omine.net/2008/07/06/context-free/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Moscow Olympics: Second Trace</title>
			<link>http://blog.omine.net/2008/06/22/moscow-olympics-second-trace/</link>
			<description><![CDATA[	<p><object width="450" height="261"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1214495&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1214495&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="261"></embed></object><br />
<a href="http://www.vimeo.com/1214495?pg=embed&sec=1214495">Moscow Olympics: Second Trace</a> from <a href="http://www.vimeo.com/user498952?pg=embed&sec=1214495">eduardo omine</a> on <a href="http://vimeo.com?pg=embed&sec=1214495">Vimeo</a>.</p>

	<p>&#8212;</p>

	<p>This is my first music video; made with <a href="http://www.processing.org/">Processing</a> + <a href="http://www.tree-axis.com/Ess/">Ess library</a>.</p>

	<p>The song is <a href="http://youtube.com/watch?v=w8Ba3vttRQc">Second Trace</a> by Filipino band <a href="http://www.myspace.com/moskva80">Moscow Olympics</a>, from their recently released debut album <a href="http://www.chlirre.com/lavender/">Cut The World</a>. Although the band&#8217;s musical references are clear (post-punk, shoegaze), their music has that ineffable quality that makes it stand out.</p>]]></description>
			<pubDate>Sun, 22 Jun 2008 17:15:22 -0400</pubDate>
			<guid>http://blog.omine.net/2008/06/22/moscow-olympics-second-trace/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Pointillism</title>
			<link>http://blog.omine.net/2008/06/08/pointillism/</link>
			<description><![CDATA[	<p>I&#8217;ve been posting some images I produced with <a href="http://www.processing.org/">Processing</a> to my <a href="http://www.flickr.com/photos/eomine/">Flickr account</a>. The latest batch is a series of pointillist pictures.</p>

	<p><a href="http://www.flickr.com/photos/eomine/"><img src="/upload/pointillism.jpg" alt="" width="450" height="338" /></a></p>]]></description>
			<pubDate>Sun, 08 Jun 2008 07:23:29 -0400</pubDate>
			<guid>http://blog.omine.net/2008/06/08/pointillism/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Animated Voronoi 2</title>
			<link>http://blog.omine.net/2008/05/25/animated-voronoi-2/</link>
			<description><![CDATA[	<p><object width="450" height="253"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1064883&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1064883&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object><br />
<a href="http://www.vimeo.com/1064883?pg=embed&sec=1064883">View HD video at Vimeo</a>.</p>

	<p>&#8212;</p>

	<p>It seems that computing a Voronoi diagram with mathematical accuracy for a real-time animation is not really feasible. I found this <a href="http://processing.org/hacks/doku.php?id=hacks:voronoicones">Processing hack</a> that takes advantage of graphic acceleration to draw an approximate Voronoi diagram. It works by drawing 3D cones at the points of interest of the diagram and rendering a top view &#8212; the regions are drawn automatically as the Voronoi edges sit on the intersections between the cones.</p>

	<p>Using this hack, it is possible to make a real-time Voronoi diagram animation, albeit with a limited number of points and a restricted applet area. This video was rendered with 364 particles (= sum of powers of 3 from 0 to 5).</p>]]></description>
			<pubDate>Sun, 25 May 2008 11:29:56 -0400</pubDate>
			<guid>http://blog.omine.net/2008/05/25/animated-voronoi-2/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Animated Voronoi</title>
			<link>http://blog.omine.net/2008/05/23/animated-voronoi/</link>
			<description><![CDATA[	<p><object width="450" height="253"><param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1057441&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1057441&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=dd1100&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object><br />
<a href="http://www.vimeo.com/1057441?pg=embed&sec=1057441">View HD video at Vimeo</a>.</p>

	<p>&#8212;</p>

	<p><a href="http://en.wikipedia.org/wiki/Voronoi_diagram">Voronoi diagrams</a> display areas of influence of a set of points in a plane. And they can also be used to create beautiful, organic images.</p>

	<p>But even though constructing a Voronoi diagram geometrically seems easy, computing it efficiently can be quite hard. I&#8217;m still trying to figure out both <a href="http://en.wikipedia.org/wiki/Fortune%27s_algorithm">Fortune&#8217;s</a> and <a href="http://en.wikipedia.org/wiki/Bowyer-Watson_algorithm">Bowyer-Watson</a> algorithms, but as a first and quick exercise I implemented a naive algorithm with <a href="http://www.processing.org/">Processing</a> and generated a short animation.</p>]]></description>
			<pubDate>Fri, 23 May 2008 19:19:57 -0400</pubDate>
			<guid>http://blog.omine.net/2008/05/23/animated-voronoi/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Flash Player 10 Cover Flow</title>
			<link>http://blog.omine.net/2008/05/17/flash-player-10-cover-flow/</link>
			<description><![CDATA[	<p>A beta version of <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash Player 10</a> (codename Astro) was released this week, along with a <a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10+Beta+with+Flex+SDK+3.0.x">new build of the free Flex <span class="caps">SDK</span> 3</a> that allows developers to test the new Flash Player capabilities.</p>

	<p>The following demo is a simple implementation of <a href="http://en.wikipedia.org/wiki/Coverflow">Cover Flow</a> that takes advantage of the 2.5D <span class="caps">API</span> &#8212; all <span class="code">DisplayObjects</span> now have <span class="code">x</span>, <span class="code">y</span>, and <span class="code">z</span> properties (<span class="code">position</span>, <span class="code">rotation</span>, <span class="code">scale</span>).</p>

	<p>Use the arrow keys to navigate:<br />
<object type="application/x-shockwave-flash" data="/upload/imageflow/main.swf" width="450" height="300"><br />
<param name="movie" value="/upload/imageflow/main.swf" /><br />
</object></p>

	<p>I developed a Cover Flow clone with <a href="http://blog.papervision3d.org">Papervision3D 1.5</a> for the <a href="http://www.quatroarquitetura.com.br">Quatro Arquitetura website</a> a few months ago, and adapting it to the new FP10 <span class="caps">API</span> was really easy. <a href="/upload/imageflow/imageflow-src.zip">Download the source code</a>. You&#8217;ll also need <a href="http://code.google.com/p/tweener/">Tweener</a>.</p>]]></description>
			<pubDate>Sat, 17 May 2008 11:53:50 -0400</pubDate>
			<guid>http://blog.omine.net/2008/05/17/flash-player-10-cover-flow/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Apophysis</title>
			<link>http://blog.omine.net/2008/05/11/apophysis/</link>
			<description><![CDATA[	<p>Following the <a href="http://www.flickr.com/groups/generatorx/">Generator.x group on Flickr</a> I came across <a href="http://www.apophysis.org/">Apophysis</a>, an open-source <a href="http://en.wikipedia.org/wiki/Fractal_flame">fractal flame</a> editor (there&#8217;s a dedicated <a href="http://www.flickr.com/groups/apophysis/">Apophysis Flickr group</a> too). It is so easy to create beautiful images with it &#8212; <em>too</em> easy, one might say. The following is my first Apophysis flame (adjusted brightness/contrast in Photoshop).</p>

	<p><a href="http://www.flickr.com/photos/eomine/2483828846/"><img src="/upload/apophysis-080501-201.jpg" alt="" width="450" height="338" /></a></p>]]></description>
			<pubDate>Sun, 11 May 2008 10:39:14 -0400</pubDate>
			<guid>http://blog.omine.net/2008/05/11/apophysis/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>PV3D sound visualization</title>
			<link>http://blog.omine.net/2008/04/21/pv3d-sound-vis/</link>
			<description><![CDATA[	<p>Playing with <span class="code">computeSpectrum()</span> and <a href="http://blog.papervision3d.org">PV3D</a> 2.0 alpha (Great White). The mesh reacts to sound by having its vertices moved along the Z axis (X and Y coordinates are fixed). Had a problem with <span class="code">FlatShadeMaterial</span> failing to render on regions of coplanar faces; small creases were made in the mesh to fix it.</p>

	<p>Sound analysis was made with <span class="code">SoundMixer.computeSpectrum()</span>, <span class="code"><span class="caps">FFTM</span>ode</span> set to <span class="code">true</span> (a frequency spectrum results in a more interesting visualization) and <span class="code">stretchFactor</span> set to 4. Increasing the <span class="code">stretchFactor</span> value means analyzing a smaller frequency range of the sound &#8212;thus ignoring non-audible high frequencies. The 16&#215;16 vertex grid represents the average values of left and right channels.</p>

	<p><em>Music Is Music As Devices Are Kisses Is Everything</em> (5:20) by <a href="http://www.65daysofstatic.com/wordpress/">65daysofstatic</a> (from the 2007 album <a href="http://www.cargorecords.co.uk/release/3777">The Destruction Of Small Ideas</a>) is the song; a nice fit for this visualization because of the contrasting quiet and loud parts &#8212;the visualization of the piano notes in the quiet sections is very clear.</p>

	<p><a href="/upload/pv3d-sound-vis/">View <span class="caps">SWF</span></a> (5MB, move mouse on X direction to change rotation, music plays 10 times)</p>

	<p><a href="/upload/pv3d-sound-vis/"><img src="/upload/pv3d-sound-vis/pv3d-sound-vis.jpg" alt="" width="450" height="250" /></a></p>

	<p><strong>Update</strong>: comments closed because of spam.</p>

	<p><strong>Update #2</strong>: this experiment was featured on PV3D blog &#8212; <a href="http://blog.papervision3d.org/2008/10/08/pv3d-showcase-9-cool-experiments-in-3d/">9 Cool Experiments in 3D</a>.</p>]]></description>
			<pubDate>Mon, 21 Apr 2008 11:10:11 -0400</pubDate>
			<guid>http://blog.omine.net/2008/04/21/pv3d-sound-vis/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>PV3D ribbons</title>
			<link>http://blog.omine.net/2008/04/13/pv3d-ribbons/</link>
			<description><![CDATA[	<p>This week I worked on converting last week&#8217;s <a href="/2008/04/06/particles-and-trails">Particles and trails</a> code to 3 dimensions, using the Effects branch of <a href="http://blog.papervision3d.org">Papervision3D</a>.</p>

	<p>The <a href="/upload/pv3d-ribbons/">final <span class="caps">SWF</span></a> runs smoothly at 30fps on my computer, and initially uses about 5MB of memory as measured by <span class="code">System.totalMemory</span>. The biggest challenge in this project was fixing a memory leak that occurred whenever a ribbon was removed from the <span class="code">scene</span>. If you run into this problem when removing a <span class="code">DisplayObject3D</span>, remember to:
	<ul>
		<li>reset the <span class="code">geometry.faces</span> and <span class="code">geometry.vertices</span> arrays;</li>
		<li><a href="http://www.nabble.com/Object-deletion-and-Memory-Issue-tt16098250.html#a16176347">unregister the object from its material</a>.</li>
	</ul></p>

<pre>
public function destroy():void
{
    geometry.faces = [];
    geometry.vertices = [];
    material.unregisterObject(this);
}
</pre>

	<p>Each ribbon has 3 life phases:
	<ol>
		<li><em>Growth:</em> the ribbon grows until it reaches 120 vertices;</li>
		<li><em>Stability:</em> the ribbon keeps moving but older faces and vertices are removed, keeping vertex count equal to 120;</li>
		<li><em>Removal:</em> the ribbon stops moving and 2 vertices and 2 faces are removed frame by frame until it reaches zero vertices and zero faces.</li>
	</ol></p>

	<p>The applied material is a simple <span class="code">FlatShadeMaterial</span> with a moving light source. Finally, a <span class="code">BitmapLayerEffect</span> with <span class="code">BlurFilter</span> was applied and the <span class="code">viewport.blendMode</span> was set to <span class="code">BlendMode.ADD</span>.</p>

	<p><a href="/upload/pv3d-ribbons">View animation</a> (move mouse to change camera rotation)</p>

	<p><a href="/upload/pv3d-ribbons/"><img src="/upload/pv3d-ribbons/pv3d-ribbons.jpg" alt="" width="400" height="250" /></a></p>]]></description>
			<pubDate>Sun, 13 Apr 2008 11:13:58 -0400</pubDate>
			<guid>http://blog.omine.net/2008/04/13/pv3d-ribbons/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
		<item>
			<title>Particles and trails</title>
			<link>http://blog.omine.net/2008/04/06/particles-and-trails/</link>
			<description><![CDATA[	<p>This is a remake of one of the first programmatic animations I did with Flash (<span class="caps">AS2</span> at that time). I decided to translate it to <span class="caps">AS3</span>, looking for a better performance.</p>

	<p>The pseudo swarm behaviour of the particles is obtained by combining the movement of the visible particles with the movement of a non-visible, reference particle.</p>

	<p>Interestingly, the animation performed much better when I unified all <span class="code">Event.ENTER_FRAME</span> handlers in one single place. Originally I made each particle and each trail listen to <span class="code">Event.ENTER_FRAME</span>, removing the event listeners when destroying the particle. Now I only listen to <span class="code">Event.ENTER_FRAME</span> in the <span class="code">Main</span> class, and then loop through all instances to call each instance&#8217;s <span class="code">update()</span> method.</p>

	<p>The background color changes with time; one cycle should take 1 minute to complete. You can also click the background to toggle full screen mode.</p>

	<p><a href="/upload/particles-and-trails/">View <span class="caps">SWF</span></a></p>

	<p><a href="/upload/particles-and-trails/"><img src="/upload/particles-and-trails/particles-and-trails.jpg" alt="" width="450" height="300" /></a></p>]]></description>
			<pubDate>Sun, 06 Apr 2008 11:52:46 -0400</pubDate>
			<guid>http://blog.omine.net/2008/04/06/particles-and-trails/</guid>
			<dc:creator>eduardo.omine</dc:creator>
		</item>
	</channel>
</rss>