<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stickman Ventures, Inc.</title>
	<atom:link href="http://blog.stickmanventures.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.stickmanventures.com</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Tue, 17 Apr 2012 14:00:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>On the ground at SPAR International</title>
		<link>http://blog.stickmanventures.com/2012/04/17/on-the-ground-at-spar-international/</link>
		<comments>http://blog.stickmanventures.com/2012/04/17/on-the-ground-at-spar-international/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 14:00:43 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[Seymour3D]]></category>
		<category><![CDATA[SPAR.2012]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196594</guid>
		<description><![CDATA[I&#8217;m in Houston this week, attending SPAR International, a conference centered around a different kind of 3D then what most people are familiar with. SPAR is all about 3D capture and processing, from laser scanners to photogrammetry. The datasets are &#8230; <a href="http://blog.stickmanventures.com/2012/04/17/on-the-ground-at-spar-international/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Houston this week, attending <a href="http://www.sparpointgroup.com/International/">SPAR International</a>, a conference centered around a different kind of 3D then what most people are familiar with. SPAR is all about 3D capture and processing, from laser scanners to photogrammetry.  The datasets are huge, the use cases range from historical to industrial and everything inbetween, and the science is terribly interesting.</p>
<p>I&#8217;m present to support <a href="http://www.sparpointgroup.com/SPAR-International-2012-Bernard-Frischer/">Dr. Bernard Frischer</a>, with whom Stickman partnered some time ago to help in the development of Seymour3D. Seymour3D is an interactive viewer system that combines secure asset management with a WebGL based frontend viewer that uses a little secret sauce we created to offload rendering of high resolution frames of the object or scene (millions of point or polys). Bernie will be speaking on Wednesday at 10:30 in Waterway Ballroom 6. I&#8217;ll be there to answer technical questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2012/04/17/on-the-ground-at-spar-international/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop SOPA and PIPA</title>
		<link>http://blog.stickmanventures.com/2012/01/18/stop-sopa-and-pipa/</link>
		<comments>http://blog.stickmanventures.com/2012/01/18/stop-sopa-and-pipa/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 16:44:30 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[legislation]]></category>
		<category><![CDATA[PIPA]]></category>
		<category><![CDATA[SOPA]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196592</guid>
		<description><![CDATA[The Internet continues to go dark today, as sites make their positions known that H.R.3261 &#8220;Stop Online Piracy Act&#8221; and S.968 &#8220;PROTECT IP&#8221; will not only damage the Internet you know, but also the very ability to create products and &#8230; <a href="http://blog.stickmanventures.com/2012/01/18/stop-sopa-and-pipa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The Internet continues to go dark today, as sites make their positions known that H.R.3261 &#8220;Stop Online Piracy Act&#8221; and S.968 &#8220;PROTECT IP&#8221; will not only damage the Internet you know, but also the very ability to create products and services. For folks like us, that means creating less jobs, hiring less people, and additional red tape for many of our clients. </p>
<p>The bills create uncertainty for businesses, with broad language that could give no recourse to bring your online business back.  Worse than that, it threatens the very fabric of the First Amendment and what you can say online.</p>
<p>For more information, a list of informative viewpoints from around the web:</p>
<ul>
<li><a href="https://www.google.com/landing/takeaction/sopa-pipa/">Google &#8211; End Piracy, Not Liberity</a></li>
<li><a href="http://blog.reddit.com/2012/01/technical-examination-of-sopa-and.html">Reddit &#8211; A technical examination of SOPA and PROTECT IP</a></li>
<li><a href="http://www.wired.com/threatlevel/2012/01/why-weve-censored-wired-com/">Wired &#8211; Why We’ve Censored Wired.com</a></li>
<li><a href="https://plus.google.com/photos/106351386231433168228/albums/5698839421449000865">PBS &#8211;  SOPA Blackout Photos</a></li>
<li><a href="http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Learn_more">Wikipedia &#8211;  SOPA and PIPA &#8211; Learn more</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2012/01/18/stop-sopa-and-pipa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C-Cab night drive demo using WebGL and three.js</title>
		<link>http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/</link>
		<comments>http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 00:44:09 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196587</guid>
		<description><![CDATA[We&#8217;ve been working on a new WebGL based game that utilizes three.js as it&#8217;s core. You see a lot of demo&#8217;s with three.js, but you can also do things with it, like build games. While the game isn&#8217;t slated to &#8230; <a href="http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working on a new WebGL based game that utilizes three.js as it&#8217;s core. You see a lot of demo&#8217;s with three.js, but you can also do things with it, like build games.  While the game isn&#8217;t slated to be ready until after the new year, we wanted to release something that shows a more advanced model and environment that has some of the basics of games, such as collision and simple heads up display (HUD).</p>
<p>Enter, <a href="http://stickmanventures.com/labs/demo/ccab-night-drive-webgl-threejs/">C-Cab Night Drive</a>.</p>
<p>The model, a c-cab delivery van, was designed by David Steele in Maya and exported as obj&#8217;s and converted into json files.  The model is fairly complicated, which is what gives it&#8217;s flexibility in use. The rigging operates like a modern independent suspension car, allowing the wheels to rise and fall independently. This allows the model to take on the hilly terrain and curbs with ease, and allows the cab to sway when turning.</p>
<p>Similarly, the back doors of the c-cab model will swing open and closed based on momentum as you&#8217;re driving. Switch to camera view 4, and you&#8217;ll nearly fall out if you drive too fast.</p>
<p>The scene offers collision detection on the building and fence (we turned off the lamp posts, you can drive through them if you want).  The trees you see on the other side of the fence are randomly generated, instanced and grouped. It makes rendering faster.</p>
<p>We&#8217;ve added five different camera views as well, that show you various viewpoints.  In camera view #4, you can actually see the steering wheel turn as you turn (a nice rigging touch on David&#8217;s part).</p>
<p>The start screen transition actually uses native CSS3 transition as does the HUD, and the progress bar you see if actually an HTML5 progress as well.</p>
<p>There are of course, some gotchas. One, the audio tracks aren&#8217;t as tied the car or scene as deeply as they will be in the actual game. You&#8217;ll also note that unless you have last nights Firefox patch for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=449157">bug #449157</a>, the audio won&#8217;t loop.  If you&#8217;re running stable versions of Chrome, the loading progress bar has a tenancy to go too quickly from 0% to 100% (works fine in Chrome Canary and Firefox).</p>
<p>We&#8217;re always interested in feedback (especially bugs, we heart the bug reports), so please let us know what you think!</p>

<a href='http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/screenshot-20111121-ccab01-blog/' title='screenshot-20111121-ccab01-blog'><img width="150" height="150" src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/screenshot-20111121-ccab01-blog-150x150.jpg" class="attachment-thumbnail" alt="screenshot-20111121-ccab01-blog" title="screenshot-20111121-ccab01-blog" /></a>
<a href='http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/screenshot-20111121-ccab02-blog/' title='screenshot-20111121-ccab02-blog'><img width="150" height="150" src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/screenshot-20111121-ccab02-blog-150x150.jpg" class="attachment-thumbnail" alt="screenshot-20111121-ccab02-blog" title="screenshot-20111121-ccab02-blog" /></a>
<a href='http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/screenshot-20111121-ccab03-blog/' title='screenshot-20111121-ccab03-blog'><img width="150" height="150" src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/screenshot-20111121-ccab03-blog-150x150.jpg" class="attachment-thumbnail" alt="screenshot-20111121-ccab03-blog" title="screenshot-20111121-ccab03-blog" /></a>

<h2>Update</h2>
<p>We appreciate all the feedback, and have greatly lowered the overall GPU usage and changed the reverse controls. If you&#8217;ve having trouble running the demo, do have a look at the YouTube example video below:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/Eob3JrxkHgM?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/11/22/c-cab-night-drive-demo-using-webgl-and-three-js/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Convert a model from Maya to WebGL for use with THREE.js</title>
		<link>http://blog.stickmanventures.com/2011/11/17/convert-a-model-from-maya-to-webgl-for-use-with-three-js/</link>
		<comments>http://blog.stickmanventures.com/2011/11/17/convert-a-model-from-maya-to-webgl-for-use-with-three-js/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 01:25:24 +0000</pubDate>
		<dc:creator>david.steele</dc:creator>
				<category><![CDATA[animation]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196581</guid>
		<description><![CDATA[I&#8217;ve been a bit busy, but lots of folks have asked for this so here is the quick step by step on how I export from Maya to WebGL for use with three.js. Within the THREE.js github project, under utils/exporter &#8230; <a href="http://blog.stickmanventures.com/2011/11/17/convert-a-model-from-maya-to-webgl-for-use-with-three-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a bit busy, but lots of folks have asked for this so here is the quick step by step on how I export from Maya to WebGL for use with three.js.</p>
<p>Within the <a href="https://github.com/mrdoob/three.js/">THREE.js github project</a>, under utils/exporter there is a obj conversion tool called <a href="https://github.com/mrdoob/three.js/blob/master/utils/exporters/convert_obj_three.py">convert_obj_three.py</a>. It&#8217;s written in python as a command line script, so a python executable is required to make it work. If you don&#8217;t have Python, you can download the version appropriate for your platform from <a href="http://python.org/download/">python.org</a>. I drop both the python.exe and convert_obj_three.py in the folder where I save my models, just to avoid typing lengthy paths into the command line.</p>
<p>In Maya, there&#8217;s a few things which I do to retain consistancy in translations and scaling before importing the model in THREE.js. I ensure that the model&#8217;s xyz translation&#8217;s and rotation&#8217;s values are 0, and the xyz scaling is at 1. The model also needs to be a child of the world and not under any groups or objects, due to inheritated transformations from the parent group or object.  At this point I delete any available history of the model, and select &#8220;freeze transformations&#8221; from the MODIFY menu.</p>
<p><a href="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_2.jpg"><img src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_2-300x206.jpg" alt="" title="Converting the object" width="300" height="206" class="alignleft size-medium wp-image-2865196583" /></a></p>
<p>I export the model as an obj (make sure that the plugin(objExport) is loaded) into the folder I have the python converter script in.  &#8220;All File Type Specific Options&#8221; can be left checked.</p>
<p><a href="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_3.jpg"><img src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_3-300x206.jpg" alt="" title="Exporting the object" width="300" height="206" class="alignleft size-medium wp-image-2865196586" /></a></p>
<p>Run cmd(command prompt).  Go to the directory which the models and &#8220;convert_obj_three.py&#8221; is located and run the exectution line as such for a basic conversion: </p>
<p><a href="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_4.jpg"><img src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_4-300x165.jpg" alt="" title="Command line script action to convert obj" width="300" height="165" class="alignnone size-medium wp-image-2865196584" /></a></p>
<p>-i for import, -o is output, -x is truncation and scaling. I typically use 1000 so it truncates the vertice values as intergers, and rescaling is easy to remember via 10, 100,1000 etc.</p>
<p>Now the exported model is ready for use in THREE.js.  If transformations need to be inherrited from Maya, just multiply by 10, 100 or 1000 depending on your preferred scene scaling.</p>
<p><a href="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_5.jpg"><img src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/objconvert_5-300x63.jpg" alt="" title="Object ready for three.js" width="300" height="63" class="alignnone size-medium wp-image-2865196585" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/11/17/convert-a-model-from-maya-to-webgl-for-use-with-three-js/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Pulling data from Google+ stream, caching with PHP and displaying with jQuery</title>
		<link>http://blog.stickmanventures.com/2011/11/16/pulling-data-from-google-stream-caching-with-php-and-displaying-with-jquery/</link>
		<comments>http://blog.stickmanventures.com/2011/11/16/pulling-data-from-google-stream-caching-with-php-and-displaying-with-jquery/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 20:52:18 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Google+]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196580</guid>
		<description><![CDATA[Just want to see the demo and code? See the demo! As a heavy user of Google Reader, the recent changes to the way links are shared within the app left me high and dry. I had been consuming the &#8230; <a href="http://blog.stickmanventures.com/2011/11/16/pulling-data-from-google-stream-caching-with-php-and-displaying-with-jquery/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Just want to see the demo and code? <a href="http://stickmanventures.com/labs/demo/googleplus-api-callout-php-jquery/">See the demo!</a></em></p>
<p>As a heavy user of Google Reader, the recent changes to the way links are shared within the app left me high and dry. I had been consuming the RSS feed from the shared stories blog that was generated, but since that was deprecated and soon to be non-existent, I needed some other way of consuming my shared links for display on blogs or status pages.</p>
<p>Enter Google+. At the moment, Google+ doesn&#8217;t do RSS feeds of public streams (and why would it really, given the nature of how Google+ works). There have been a couple of tools that call out and create an RSS stream from a Google+ feed (notably Russell Beattie&#8217;s very cool <a href="https://github.com/russellbeattie/plusfeed">PlusFeed</a>), but that wasn&#8217;t going to swing it. What to do? Google APIs.</p>
<p>If you&#8217;ve never used the Google APIs, I highly suggest you give the <a href="https://developers.google.com/">Google Developers</a> site a quick look over. They&#8217;ve got articles and tutorials and a whole bunch of very good info on what you can do.  Want to test drive the APIs in browser? Use the <a href="https://code.google.com/apis/explorer/">API Explorer</a>.</p>
<h2>Getting the JSON from Google+ API</h2>
<p>Getting the JSON from the <a href="https://developers.google.com/+/api/">Google+ API</a> for a public, read-only feed is not terribly hard, you simply run a GET against the properly formed Google API URL. In our case, we limit the verbose data that we get back in the JSON as much as possible for this example by limiting the fields returned.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$myGooglePlusQuery</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;https://www.googleapis.com/plus/v1/people/&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$myGooglePlusUser</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/activities/public?alt=json&amp;maxResults=&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$myGooglePlusMaxResults</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&amp;fields=items(object(attachments(categories%2Ccontentsource%2CdisplayName%2CobjectType%2Curl)%2Curl))&amp;pp=1&amp;key=&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$myGoogleAPIkey</span><span style="color: #339933;">;</span></pre></div></div>

<p>You&#8217;re notice some PHP variables in there, defining the Google+ user we want to get the data for, the max results, and our API key (which you generate in the Google API console). This is going to return the items which have attachments, which is what we want in this case (our shared links). You can get all kinds of data (shared photos and what not), but I&#8217;m keeping this simple.</p>
<h2>Caching the JSON with PHP</h2>
<p>The Google+ API has a courtesy limit of 1,000 queries per day, so we use a bit of PHP to call our Google API query and than cache it for 10 minutes (see gist of entire PHP script on <a href="http://stickmanventures.com/labs/demo/googleplus-api-callout-php-jquery/">demo page</a>).  It&#8217;s not very fancy and could be duplicated in any shape and form in any language you want; the only thing it&#8217;s doing is a call out and writing to a file.</p>
<h2>Displaying the data with jQuery</h2>
<p>For a bit of fun, instead of muxing the JSON on the server side into a slightly slimmer profile, I decided to have fun with jQuery AJAX converters to convert the JSON to a custom datatype called JSONG. I check the 20 results in the converter, verify their type (I only wants articles) and then return this new set of data into $.done().  This is then displayed out to the page using jsRender (overkill for this simple example mind you).</p>
<h2>The end result</h2>
<p>The end result is a simple way to get, cache and display content from a public Google+ stream and display it where ever or how ever you want. The <a href="http://stickmanventures.com/labs/demo/googleplus-api-callout-php-jquery/">demo page</a> shows this simple case in action, along with the code that generates it for my Google+ user.</p>
<p>As you can see, it doesn&#8217;t take a lot of code to work with the Google+ API, nor does it require loads of heavy lifting in jQuery to display that data out. Hopefully this will inspire you to write your own little connectors to keep information flowing from Google+ to your home pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/11/16/pulling-data-from-google-stream-caching-with-php-and-displaying-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>At New Game Conference in San Francisco Nov 1-2</title>
		<link>http://blog.stickmanventures.com/2011/11/01/at-new-game-conference-in-san-francisco-nov-1-2/</link>
		<comments>http://blog.stickmanventures.com/2011/11/01/at-new-game-conference-in-san-francisco-nov-1-2/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 16:06:47 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[NewGameConf.2011]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196575</guid>
		<description><![CDATA[TeamStickman, represented by James Duvall and David Steele will be attending the New Game Conference the next two days in San Francisco. The conference, the only HTML5 game conference in North America, will focus on the HTML5 game development from &#8230; <a href="http://blog.stickmanventures.com/2011/11/01/at-new-game-conference-in-san-francisco-nov-1-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.newgameconf.com/"><img src="http://blog.stickmanventures.com/wp-content/uploads/2011/11/newgame-attendee-badge.png" alt="" title="newgame-attendee-badge" width="155" height="218" class="aligncenter size-full wp-image-2865196576" style="float:right; clear: both;" /></a> TeamStickman, represented by <a href="http://twitter.com/jamesduvall">James Duvall</a> and <a href="http://twitter.com/RustedSprocket">David Steele</a> will be attending the <a href="http://www.newgameconf.com/">New Game Conference</a> the next two days in San Francisco.  The conference, the only HTML5 game conference in North America, will focus on the HTML5 game development from the likes of Bocoup, Google, Mozilla, Opera and EA among others.</p>
<p>Given that we&#8217;re working on a couple of in house games as well as a conversion to the HTML5 space, this seemed like just the place to exchange ideas and hear some new ones.</p>
<p>If you happen to run into the guys, ask them for a Stickman sticker. Everyone loves stickers. <img src='http://blog.stickmanventures.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/11/01/at-new-game-conference-in-san-francisco-nov-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OnScreen keyboard implemented in HTML5 canvas with multitouch support via touch events API and Magictouch.js</title>
		<link>http://blog.stickmanventures.com/2011/10/22/onscreen-keyboard-implemented-in-html5-canvas-with-multitouch-support-via-touch-events-api-and-magictouch-js/</link>
		<comments>http://blog.stickmanventures.com/2011/10/22/onscreen-keyboard-implemented-in-html5-canvas-with-multitouch-support-via-touch-events-api-and-magictouch-js/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 00:10:55 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[animation]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[multitouch]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196573</guid>
		<description><![CDATA[Note: Just want to see the goods? the demo, the video. We&#8217;ve recently been building a few applications for PQ Labs multitouch overlays. It&#8217;s a very sweet piece of hardware offering 12 simultaneous touch points, a solid SDK, big sizes, &#8230; <a href="http://blog.stickmanventures.com/2011/10/22/onscreen-keyboard-implemented-in-html5-canvas-with-multitouch-support-via-touch-events-api-and-magictouch-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Note: Just want to see the goods? <a href="http://stickmanventures.com/labs/demo/onscreen-keyboard-html5-canvas-multitouch/">the demo</a>, <a href="http://www.youtube.com/watch?v=tAUSOve8IAc">the video</a>.</em></p>
<p>We&#8217;ve recently been building a few applications for PQ Labs multitouch overlays. It&#8217;s a very sweet piece of hardware offering 12 simultaneous touch points, a solid SDK, big sizes, and TUIO support.</p>
<p>While a native SDK is nice, if there&#8217;s one thing we love it&#8217;s the open web. We set out to start writing a few web apps that could be run either locally from the connected machine or from the web that would offer the ability to use the multitouch aspects of the overlay in a web browser.</p>
<p>One particular use case (soon to be tested in the field) was an event based guest book. Walk up to the screen, enter your details, (yada yada more features yada), and away you go. Stores the data via localStorage (no internet access required for the device) and can be dumped for review later on.</p>
<p>The problem with this idea in a browser was that the onscreen keyboard of choice just doesn&#8217;t work as seamless as we&#8217;d like. It&#8217;ll hide itself when not in use, you can lose it behind the browser if you touch focus away, you can&#8217;t have three of them in use at once. So, we decided to roll our own onscreen, in browser keyboard that supports multitouch.</p>
<p>To do this via desktop Chrome or Firefox, you need TUIO support. Just so happens there is a <a href="https://github.com/fajran/npTuioClient">npTuioClient NPAPI plugin</a> that offers the very support that we need. For us, the testing is easy because we have the big &#8216;ol overlay to work with. But if you want to test our demo on your desktop sans the overlay, Boris Smus wrote a sweet article on the topic you should read: <a href="http://smus.com/multi-touch-browser-patch">Multi-Touch for your Desktop Browser</a>.</p>
<p>Which gets us to the nuts and bolts. The onscreen keyboard uses a couple different things. One, it uses the <a href="http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html">touch events API</a>, and two, it use&#8217;s Smus&#8217; <a href="https://github.com/borismus/MagicTouch">MagicTouch.js</a> polyfill to convert the npTuioClient callbacks to the compatible touch events as defined by the touch events API.</p>
<p>Once that&#8217;s up and working, we can now track multiple touches on the screen, which makes things like the shift key work really nice (as seen in the video below), but also allows us to run multiple keyboards on the same screen (which is for an HTML5 game we&#8217;re doing a little something something on&#8230;that&#8217;s a video for another day <img src='http://blog.stickmanventures.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>The demo on the lab page is the most basic version. The keyboard is defined via an object (you could technically load it up from a JSON file very easy like), the layout can be defined at the keyboard level or set to a global default, the click sound is just an HTML5 audio element. We designed it with flexibility in mind.</p>
<p>As for the touch support, you can sorta run the lab demo on an iPad or Xoom/Tab, but it&#8217;s laggy with the full keyboard set (not to mention the wrong size for those screens). That&#8217;s really not what it&#8217;s designed for, but could be tweaked to make it work.</p>
<p>If you don&#8217;t want to setup the emulation of multitouch on your desktop or don&#8217;t want to fire up your overlay, than have a peak at the video below to see it in action in Google Chrome</p>
<p><object width="640" height="360"><param name="movie" value="http://www.youtube.com/v/tAUSOve8IAc?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tAUSOve8IAc?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/10/22/onscreen-keyboard-implemented-in-html5-canvas-with-multitouch-support-via-touch-events-api-and-magictouch-js/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Facial rigging explained</title>
		<link>http://blog.stickmanventures.com/2011/09/07/facial-rigging-explained/</link>
		<comments>http://blog.stickmanventures.com/2011/09/07/facial-rigging-explained/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 18:43:33 +0000</pubDate>
		<dc:creator>david.steele</dc:creator>
				<category><![CDATA[animation]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196567</guid>
		<description><![CDATA[Lots of questions and comments coming in about Ginger (loving the enthusiastic response), so I want to get a sort of base answer as to the how of the rigging. In character animation within the 3-D realm, blend(morph) targets are used to tween the &#8230; <a href="http://blog.stickmanventures.com/2011/09/07/facial-rigging-explained/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lots of questions and comments coming in about Ginger (loving the enthusiastic response), so I want to get a sort of base answer as to the how of the rigging. </p>
<p>In character animation within the 3-D realm, blend(morph) targets are used to tween the surface of a shape&#8217;s vertices or control points to another destination using a duplicated shape different topology.  Typically morph target&#8217;s for facial rigging don&#8217;t act as the sole tool, usually its combined using other tools for deformation such as clusters or skeletal(joint) system.</p>
<p>We looked at various libs when we started working on the tools for WebGL, and settled on <a title="three.js" href="https://github.com/mrdoob/three.js">THREE.js</a>. <a title="three.js" href="https://github.com/mrdoob/three.js">THREE.js</a> has morph target capabilities so it became my tool to move the shapes for the facial rig from Maya into WebGL.</p>
<p>I&#8217;m not going to go into the from-Maya-to-three.js right now, I&#8217;ll cover that in a different post.</p>
<p>The goal was to see if I could get multiple morphtargets active at one time with the same values combined, ending with a result that acts the same in WebGL as in Maya. It&#8217;s close. </p>
<p>THREE.js morph targets are strictly linear, so I need to make &#8220;in-between&#8221; targets to aid in altering a linear path from a vertice&#8217;s point A to point B.  A good example is <a title="Ginger" href="http://stickmanventures.com/labs/demo/webgl-threejs-morph-target/">Ginger&#8217;s</a> jaw movement. Using a linear morph path her jaw would open <em>straight</em> into it&#8217;s end pose, not <em>rolling</em> into its end pose.  So a partially opened mouth position was used to simulated a in-between target, to aid in the downward rolling moment into the fully open jaw&#8217;s end pose.</p>
<p>I&#8217;ll follow up with more detailed posts and information as we continue working on the toolset. For now I need to finish me coffee. -David Steele</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/09/07/facial-rigging-explained/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple facial rigging utilizing morph targets powered by three.js</title>
		<link>http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/</link>
		<comments>http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 05:19:38 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[animation]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196562</guid>
		<description><![CDATA[We&#8217;ve been working on a set of tools for creating web based WebGL animations, but since we&#8217;re not quite finished yet, we decided to release a demo of something fun. Meet Ginger. Ginger is a facial rig that utilizes 25 &#8230; <a href="http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working on a set of tools for creating web based WebGL animations, but since we&#8217;re not quite finished yet, we decided to release a demo of something fun.</p>
<p><a title="Simple facial rigging utilizing morph targets powered by three.js." href="http://stickmanventures.com/labs/demo/webgl-threejs-morph-target/">Meet Ginger</a>.</p>
<p>Ginger is a facial rig that utilizes 25 or so morph targets that get powered by <a href="https://github.com/mrdoob/three.js" title="three.js">three.js</a> in WebGL. The facial features of the model can be shifted into different forms and expressions using the jQuery UI sliders (we originally had html5 range inputs, but wanted to get some love for Firefox out there which doesn&#8217;t quite support them yet). </p>
<p>The demo works pretty well in the latest versions of Chrome and Firefox (sorry IE users&#8230;no WebGL for you).</p>
<p>The models where designed by our resident Chief Artist David Steele in Maya (he also did all the conversions and a significant portion of the JavaScript for this particular demo).  He&#8217;ll be getting into more of the technical details of the models in Maya and the three.js action in a later post.</p>
<p>While the demo offers simple functionality, the overall toolset that we&#8217;re working on has to deal with creating easier animation tools for the cutting edge of the web in canvas and WebGL.  But we&#8217;ll get into that later.</p>
<p>In the mean time, enjoy playing with the demo, and stay tuned from some cool tools in the pipe!</p>
<p>NOTE: if the demo isn&#8217;t loading (and in certain cases with video drivers being blacklisted in Chrome/Firefox that will be the case), you can see the demo in action in the YouTube videos below.  For comparison purposes, we did videos in both Firefox and Chrome.</p>
<p>In Firefox</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Qsm7-4fA-LU?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Qsm7-4fA-LU?version=3" type="application/x-shockwave-flash" width="640" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>In Chrome</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/_oPWQtngO40?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_oPWQtngO40?version=3" type="application/x-shockwave-flash" width="640" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<a href='http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/screenshot-20110906-ginger/' title='Screenshot of Demo'><img width="150" height="150" src="http://blog.stickmanventures.com/wp-content/uploads/2011/09/screenshot-20110906-ginger-150x150.jpg" class="attachment-thumbnail" alt="Screenshot of Demo" title="Screenshot of Demo" /></a>
<a href='http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/maya_ginger_webgl/' title='David working on the models in Maya'><img width="150" height="150" src="http://blog.stickmanventures.com/wp-content/uploads/2011/09/maya_ginger_webgl-150x150.jpg" class="attachment-thumbnail" alt="David working on the models in Maya" title="David working on the models in Maya" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/09/07/simple-facial-rigging-utilizing-morph-targets-powered-by-three-js/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Dealing with compromised WordPress blogs via the timthumb vulnerability</title>
		<link>http://blog.stickmanventures.com/2011/08/25/dealing-with-compromised-wordpress-blogs-via-the-timthumb-vulnerability/</link>
		<comments>http://blog.stickmanventures.com/2011/08/25/dealing-with-compromised-wordpress-blogs-via-the-timthumb-vulnerability/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 18:51:50 +0000</pubDate>
		<dc:creator>Justin Ribeiro</dc:creator>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[vulnerability]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.stickmanventures.com/?p=2865196561</guid>
		<description><![CDATA[We&#8217;ve gotten a rash of calls today about WordPress weirdness. Malware redirects, login failures&#8230;slightly different in each case, but all having one thing in common: theme&#8217;s or plugins running older versions of timthumb. Earlier this month, it was widely reported &#8230; <a href="http://blog.stickmanventures.com/2011/08/25/dealing-with-compromised-wordpress-blogs-via-the-timthumb-vulnerability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve gotten a rash of calls today about WordPress weirdness.  Malware redirects, login failures&#8230;slightly different in each case, but all having one thing in common: theme&#8217;s or plugins running older versions of <a href="http://code.google.com/p/timthumb/" title="timthumb - image crop zoom resize management">timthumb</a>.</p>
<p>Earlier this month, it was widely reported that timthumb had a security vulnerability (see <a href="http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/">Mark Maunder&#8217;s announcement</a> or <a href="http://www.binarymoon.co.uk/2011/08/timthumb-2/">Ben Gillbanks followup</a>) that would allow an attacker to push files into your WordPress install.  subsequently, timthumb 2.0 came out and solved the issue, but alas not all theme&#8217;s or plugins updated to this version.</p>
<p>It appears now that attacks utilizing this vector are now bot automated (or someone has a lot of time on their hands), because the phone has been ringing today.  How to deal with this and recover?  The following is a general action plan you can use as a base.  It&#8217;s not the end all solution; you&#8217;ll have to adapt to your specific case of infection.</p>
<p><em>NOTE: let me repeat: the following instructions are NOT the end all solution in most cases: you have to adapt them to your particular case. We offer no warrenty if you screw something up.</em></p>
<p><em>BACKUP NOW! if you have not done so, please backup your files and data. You should be doing this already, but do it one more time just in case.</em></p>
<p>Fire up your SSH to your server, and get ready from some command line action.</p>
<p>First, find if you&#8217;ve where your timthumb is installed (might be a theme, might be a plugin)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-ri</span> <span style="color: #660033;">-l</span> <span style="color: #ff0000;">&quot;timthumb&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>blog<span style="color: #000000; font-weight: bold;">/</span>folder</pre></div></div>

<p>After you&#8217;ve found it (sometimes the file itself is not named timthumb.php, so make note), go get the latest version of timthumb from trunk:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>timthumb.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>trunk<span style="color: #000000; font-weight: bold;">/</span>timthumb.php</pre></div></div>

<p>You&#8217;ll need to sort out the particular settings that the old version used (some installs use the sidecar timthumb-config.php for that, others have it defined within their version of timthumb). Once you have that sorted, copy/move that file into place, destroying the old file:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mv</span> timthumb.php <span style="color: #000000; font-weight: bold;">/</span>where<span style="color: #000000; font-weight: bold;">/</span>ever<span style="color: #000000; font-weight: bold;">/</span>old<span style="color: #000000; font-weight: bold;">/</span>file<span style="color: #000000; font-weight: bold;">/</span>located<span style="color: #000000; font-weight: bold;">/</span>thumb.php</pre></div></div>

<p>Great, timthumb should feel better. Now let&#8217;s cleanup other damage.</p>
<p>Several of the sites we looked at today had a variation of a redirect to securesoft.ru, which was being reported by Google Chrome as containing malware.  The first thing you have to do is sort out where that&#8217;s coming from.  Let&#8217;s find it:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-ri</span> <span style="color: #660033;">-l</span> <span style="color: #ff0000;">&quot;securesoft&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>blog<span style="color: #000000; font-weight: bold;">/</span>folder</pre></div></div>

<p>This for us returned the root level .htaccess file in the wordpress directory.  Chances are, you&#8217;ll note that it the modified date was recent and that it&#8217;s larger in size than usual. If you open it, it&#8217;ll probably look like the normal version your wordpress install uses. It&#8217;s not; the file is padded with space to hide the new redirect rules.  Basically, you have two options: scrub the bad rules out or simply delete the .htaccess and replace with a fresh version.  Your choice.</p>
<p>Second, let&#8217;s look for changed files that the attacker may have uploaded.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>blog<span style="color: #000000; font-weight: bold;">/</span>folder <span style="color: #660033;">-mtime</span> <span style="color: #660033;">-2</span></pre></div></div>

<p>That find command will look for files that have been modified within the last 2 days.  You can change the days span by simply updating the &#8220;-2&#8243; to what ever number you want.  In our case, this returned two files in most cases, wp.php and script_new3.php in the theme that was compromised (this was also <a href="http://serverfault.com/questions/303992/worried-that-my-webserver-has-been-hacked-or-compromised-with-redirects-to-gui/304467#304467">noted on ServerFault</a> yesturday).  Remove these two files.</p>
<p>At this point, you should be generally back to normal. Login into your WordPress Admin, change all your passwords for all users and update any and all plugins, themes, and WordPress files as needed.</p>
<p>Again, I cannot stress this enough: this is general. You should check your logs to verify if any other activity that may have taken place and evaluate if any other files changes may occurred.  But hopefully this will help get you started.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stickmanventures.com/2011/08/25/dealing-with-compromised-wordpress-blogs-via-the-timthumb-vulnerability/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

