<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3814403382429029238</id><updated>2011-07-28T22:06:07.269-07:00</updated><category term='getFileList'/><category term='Emily'/><category term='debug'/><category term='DARPA Grand Challenge'/><category term='rotoCap'/><category term='Radiohead'/><category term='scanning'/><category term='Laser'/><category term='shader'/><category term='video'/><category term='MEL'/><category term='binary image'/><category term='Image Metrics'/><category term='viewer'/><category term='timerX'/><category term='SIGGRAPH'/><category term='GUI'/><title type='text'>ellis3D |  rotoCap | MFA Thesis</title><subtitle type='html'>This is my production journal for my MFA Thesis in Animation at Savannah College of Art &amp;amp; Design.  It focuses on the use of off-the-shelf hardware to capture motion which will drive pre-rigged characters.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-6395890711218611735</id><published>2010-02-16T11:47:00.000-08:00</published><updated>2010-02-16T11:50:07.188-08:00</updated><title type='text'>RotoCap: Off-the-Shelf Motion-Capture</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube-nocookie.com/v/IWy98W1DfQo&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube-nocookie.com/v/IWy98W1DfQo&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-6395890711218611735?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/6395890711218611735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=6395890711218611735' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/6395890711218611735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/6395890711218611735'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2010/02/rotocap-off-shelf-motion-capture.html' title='RotoCap: Off-the-Shelf Motion-Capture'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-4359084418208901706</id><published>2009-11-28T11:28:00.000-08:00</published><updated>2009-11-28T11:46:11.724-08:00</updated><title type='text'>RotoCap and Microcontroller Applications</title><content type='html'>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LM5zrhDUjZU&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/LM5zrhDUjZU&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="437" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Good news. My thesis paper has been initially accepted by my committee. This has freed me to continue research in the fascinating world of human-computer interaction. The &lt;a href="http://www.arduino.cc/"&gt;Arduino &lt;/a&gt;is an open-source microcontroller from Italy. It's cheap, well documented, and has numerous online communities each with their specific niches (&lt;a href="http://diydrones.com/"&gt;diy-drones&lt;/a&gt;, music-production, art-installations). Above is my tinkering which will soon be connected to &lt;a href="http://www.youtube.com/watch?v=KpYqJcaOtUE"&gt;rotoCap&lt;/a&gt; to utilize its color-handling/vision functions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-4359084418208901706?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/4359084418208901706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=4359084418208901706' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4359084418208901706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4359084418208901706'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/11/rotocap-and-microcontroller.html' title='RotoCap and Microcontroller Applications'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-1926408971647579684</id><published>2009-09-15T15:31:00.001-07:00</published><updated>2009-09-15T15:42:37.368-07:00</updated><title type='text'>How Color-Tracking Enhances Sony's PS3 Motion Controller</title><content type='html'>&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="265" id="viddler"&gt;&lt;param name="movie" value="http://www.viddler.com/simple_on_site/8e5c8702" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed src="http://www.viddler.com/simple_on_site/8e5c8702" width="437" height="265" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Sony's motion interface uses not only accelerometers like the Wii, but also uses the color emitted from the sphere to maintain tracking of different controllers.  Since the sphere is a known dimension, Z-depth can also be extracted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-1926408971647579684?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/1926408971647579684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=1926408971647579684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1926408971647579684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1926408971647579684'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/09/sonys-motion-interface-uses-not-only.html' title='How Color-Tracking Enhances Sony&apos;s PS3 Motion Controller'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-3666359761397243704</id><published>2009-08-04T15:03:00.001-07:00</published><updated>2009-08-04T15:19:16.331-07:00</updated><title type='text'>Face Camera Rig</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a style="position: absolute;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e0yP6jI3SJU/SnixT2B58oI/AAAAAAAAACc/7dZnTaGgYu0/s1600-h/rcFaceCam-01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 235px;" src="http://3.bp.blogspot.com/_e0yP6jI3SJU/SnixT2B58oI/AAAAAAAAACc/7dZnTaGgYu0/s320/rcFaceCam-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5366233910491083394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e0yP6jI3SJU/Sniznaku4sI/AAAAAAAAAC0/-X2DmHdLaOA/s1600-h/rcFaceCam-04.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 235px;" src="http://2.bp.blogspot.com/_e0yP6jI3SJU/Sniznaku4sI/AAAAAAAAAC0/-X2DmHdLaOA/s320/rcFaceCam-04.jpg" alt="" id="BLOGGER_PHOTO_ID_5366236445741605570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e0yP6jI3SJU/SnixUuuD1AI/AAAAAAAAACk/76IS02ul6G8/s1600-h/rcFaceCam-02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 235px;" src="http://4.bp.blogspot.com/_e0yP6jI3SJU/SnixUuuD1AI/AAAAAAAAACk/76IS02ul6G8/s320/rcFaceCam-02.jpg" alt="" id="BLOGGER_PHOTO_ID_5366233925708665858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e0yP6jI3SJU/SnixVIRFJyI/AAAAAAAAACs/UJ79TEaNuOM/s1600-h/rcFaceCam-03.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 235px;" src="http://4.bp.blogspot.com/_e0yP6jI3SJU/SnixVIRFJyI/AAAAAAAAACs/UJ79TEaNuOM/s320/rcFaceCam-03.jpg" alt="" id="BLOGGER_PHOTO_ID_5366233932566439714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-3666359761397243704?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/3666359761397243704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=3666359761397243704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3666359761397243704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3666359761397243704'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/08/face-camera-rig.html' title='Face Camera Rig'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e0yP6jI3SJU/SnixT2B58oI/AAAAAAAAACc/7dZnTaGgYu0/s72-c/rcFaceCam-01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-8445065356667276728</id><published>2009-08-03T23:27:00.000-07:00</published><updated>2009-08-03T23:34:31.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><title type='text'>rotoCap Successfully Controls a Character</title><content type='html'>This is a test movie of my MFA thesis project, rotoCap. The person is repeating "Hello world" in different ways to drive the controllers of the 3D character ("Andy" by John Doublestein) only using three markers. The performance was shot on a scratch-built face-camera rig made from:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;discarded webcam&lt;/li&gt;&lt;li&gt;used plastic 3D glasses&lt;/li&gt;&lt;li&gt;steel bailing wire&lt;/li&gt;&lt;li&gt;heat shrink wire wrap&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KpYqJcaOtUE&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KpYqJcaOtUE&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-8445065356667276728?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/8445065356667276728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=8445065356667276728' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8445065356667276728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8445065356667276728'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/08/rotocap-successfully-controls-character.html' title='rotoCap Successfully Controls a Character'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-7576872056067182001</id><published>2009-05-14T11:56:00.000-07:00</published><updated>2009-05-14T12:05:58.937-07:00</updated><title type='text'>Tracking fast movement and optimized centroid detection</title><content type='html'>I have updated the search method to handle motion blur and find centroids faster with greater accuracy.  In this video I show how easy it is to setup targeting and simple key cleanup.  The cleanup portion of the video will soon be automated and will be an option for the user to implement.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n70GjyS5Qk0&amp;hl=en&amp;fs=1&amp;rel=0&amp;ap=%2526fmt%3D18"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/n70GjyS5Qk0&amp;hl=en&amp;fs=1&amp;rel=0&amp;ap=%2526fmt%3D18" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-7576872056067182001?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/7576872056067182001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=7576872056067182001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7576872056067182001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7576872056067182001'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/05/tracking-fast-movement-and-optimized.html' title='Tracking fast movement and optimized centroid detection'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-8520652032206317886</id><published>2009-04-14T12:12:00.000-07:00</published><updated>2009-04-14T12:19:40.281-07:00</updated><title type='text'>Arduino-based Motion Capture System</title><content type='html'>Another mocap project based on the Arduino microcontroller, from: http://blog.makezine.com/archive/2009/04/wireless_inertial_data_glove_using.html&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4044436&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4044436&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/4044436"&gt;Wireless Inertial Arduino Data Glove v0.3&lt;/a&gt; from &lt;a href="http://vimeo.com/noazark"&gt;Noah Zerkin&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;This is a quick vid of one of my later prototype glove units. The software is a proof-of-concept exercise. Regardless, you should be able to get the gist of what I'm trying to do. The thing that makes this special is how insanely inexpensive it was to build. The ultimate aim is to create a low-cost modular full-body interaction capture system for use in gaming, AR, and creative applications. The first commercial app I'm targeting for integration is Maya. After that, we'll look at integration with a game engine. I'm not sure what a glove/arm kit will cost, but it should be under $250 (Perhaps well under... we'll see... there are costs besides parts). Mass-production units would cost considerably less.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-8520652032206317886?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/8520652032206317886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=8520652032206317886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8520652032206317886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8520652032206317886'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/04/arduino-based-motion-capture-system.html' title='Arduino-based Motion Capture System'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-7748620511567297324</id><published>2009-03-25T21:39:00.000-07:00</published><updated>2009-03-25T23:43:20.611-07:00</updated><title type='text'>Making rotoCap Data Useful</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a href="http://tinypic.com/" target="_blank"&gt;&lt;img style="width: 367px; height: 239px;" src="http://i39.tinypic.com/33pd98w.jpg" alt="Image and video hosting by TinyPic" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In order to be adaptable to each user's situation I have come up with a scheme to re-interpret data coming from rotoCap into a usable format.  Motion data such as &lt;a href="http://www.youtube.com/watch?v=CF1zgGTSJRY"&gt;this&lt;/a&gt; is converted to keyable attributes which could be used to drive the user's own character rigs or anything possible via the connectionEditor.  All this is done by essentially drawing the slider around the drone.&lt;br /&gt;&lt;br /&gt;The image above shows the boundary box of the sphere's motion-extremes across the image surface.  The dark triangles were some previous diagnostic graphics, ignore them.  Scaling the green box redefines the parameter range of the drone (sphere) outputs by clamping the X and Y attributes.  Additional number fields will be added to the drone's GUI section for North, South, East, West.  Each field will define what the extreme value is for that direction or to ignore that parameter or clamp it to infinity.  The user should be able to just plug in the extreme values from the control rig, blank fields are ignored:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;yourFaceRig_eyeControlSlider.minY = 0.0 = drone.South&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;yourFaceRig_&lt;/span&gt;&lt;span style="font-style: italic;"&gt;eyeControlSlider.maxY = 1.0 &lt;/span&gt;&lt;span style="font-style: italic;"&gt;= drone.North&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Example:&lt;/span&gt;  The user would like the drone's Y-axis movement to control the blink slider for an eye rig.  When the sphere rises, the eye gets wider; completely open equals an attribute slider value of 1.0.  When the sphere lowers, the eye closes till 0.0 is reached. By translating and transforming the box, the drone's movement is filtered to the desired animation curve equivalent of amplitude and frequency in a visual and intuitive manner.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Simulation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;User Defined Drone Attributes&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-style: italic;"&gt;&lt;li&gt;Target Name = &lt;span style="font-style: italic;"&gt;eyeControlSlider&lt;/span&gt;&lt;/li&gt;&lt;li&gt;North = 1.0&lt;/li&gt;&lt;li&gt;South = 0.0&lt;/li&gt;&lt;li&gt;West = SKIP //ignore&lt;br /&gt;&lt;/li&gt;&lt;li&gt;East = SKIP //ignore&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Output = 0.85&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;.85 would equal a slightly closed eye, or 85% open.  The eye is parented to a null-dummy node which acts as a buffer between rotoCap and the user's rig just in case the user needs to remove portions or all of rotoCap from a scene which actually is the ultimate goal.   rotoCap should work behind the curtains and leave as little impact to a scene beyond passing attributes in the form of a bare-bones node network.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-7748620511567297324?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/7748620511567297324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=7748620511567297324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7748620511567297324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7748620511567297324'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/03/making-rotocap-data-useful.html' title='Making rotoCap Data Useful'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i39.tinypic.com/33pd98w_th.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-5505754137289034315</id><published>2009-03-02T08:29:00.000-08:00</published><updated>2009-03-06T09:21:26.771-08:00</updated><title type='text'>rotoCap Progress (Updated)</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CF1zgGTSJRY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/CF1zgGTSJRY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The past weekend has yielded many successes.  After finally fixing a bug that wouldn't advance the frame properly I've fully re-engineered the core tracking engine and even ran some benchmark tests which will be posted shortly (updated, see below).  The movie above shows the raw output, single pass with "Simplify Curves" command in from the Graph Editor, and a final hand-tweaked version.  The raw output creates lots of key frames that aren't all necessary so by keeping the important key frames, this makes it much easier for the final manual cleanup due to the reduced key set.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Test Results &amp;amp; Observations&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Environment&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;50 JPG image sequence&lt;/li&gt;&lt;li&gt;1 Drone sampled (Pink)&lt;/li&gt;&lt;li&gt; timerX MEL function for timing&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Parameters&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;     Tolerance: (0.0 to 1.0) range of RGB value rotoCap accepts as close enough to desired color.&lt;/li&gt;&lt;li&gt;     Step: (0.0 to 1.0) distance to next sampled UV coordinate&lt;/li&gt;&lt;li&gt;     # of Keys: how many keyframes rotoCap created for a drone&lt;/li&gt;&lt;li&gt;     Time Elapsed: (seconds) starts when "Launch Drones" is pressed, ends after last drone is tested&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Test 1: Initial Test&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tolerance .2&lt;/li&gt;&lt;li&gt;Step .05&lt;/li&gt;&lt;li&gt;# of Keys 7&lt;/li&gt;&lt;li&gt;Time Elapsed = 101.47&lt;/li&gt;&lt;/ul&gt;Observations:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Almost all of the keys occurred at the beginning while the target color was stationary. Tracking was not detecting motion over time. I suspected the step size was too large and rotoCap just couldn't sample enough UV's to find the drone.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test 2: Smaller Step Size/Centering Off&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tolerance .2&lt;/li&gt;&lt;li&gt;Step .025&lt;/li&gt;&lt;li&gt;# of Keys 16&lt;/li&gt;&lt;li&gt;Time Elapsed = 1217.69&lt;/li&gt;&lt;/ul&gt;Observations:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Reducing the step turned out to fix the sparse key issue. rotoCap still seemed to favor the edge of the color mass instead of centered which makes sense since this was run with self-centering turned off.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test 3: Centering On&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tolerance .2&lt;/li&gt;&lt;li&gt;Step .025&lt;/li&gt;&lt;li&gt;# of Keys 35 (simplified: 17)&lt;/li&gt;&lt;li&gt;Time Elapsed = 71.86&lt;/li&gt;&lt;/ul&gt;Observations:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The time difference is substantial due to the centering sub-process passing the centered UV coordinates to the next cycle of the colorSeek process. The key generation also went up significantly. Running a simplify curves on the XY curves in the Graph Editor essentially deletes the unnecessary stationary keyframes. I'm very happy how well the script is working now. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-5505754137289034315?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/5505754137289034315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=5505754137289034315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/5505754137289034315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/5505754137289034315'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/03/rotocap-progress.html' title='rotoCap Progress (Updated)'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-5639096285341689043</id><published>2009-02-28T12:51:00.000-08:00</published><updated>2009-02-28T13:02:10.586-08:00</updated><title type='text'>Alternate Search Modes</title><content type='html'>While working on rotoCap today I thought a nice feature would be allowing the user to manually launch rotoCap on a per-frame basis instead of a run of the whole image sequence.  Additionally I am adding a flag to the keying sub-process whether or not to overwrite existing keyframes on a drone.  If existing keyframes are found then the engine can use them as initial search coordinates, saving time by not having to start at the origin of a UV plane during the initial UV survey.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-5639096285341689043?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/5639096285341689043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=5639096285341689043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/5639096285341689043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/5639096285341689043'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/02/alternate-search-modes.html' title='Alternate Search Modes'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-985623860356050814</id><published>2009-02-20T09:49:00.000-08:00</published><updated>2009-02-20T20:45:16.097-08:00</updated><title type='text'>Homogenous RGB Mass Self-Centering</title><content type='html'>The &lt;span style="font-style:italic;"&gt;colorSeek&lt;/span&gt; engine of rotoCap has been given some new methods for searching and evaluating masses of targeted RGB ranges.  Instead of basing tracker position on a single pixel test, the new method treats a positive RGB test as the origin for a localized survey of the surrounding pixels.  If it detects the pixels immediately surrounding it are within the RGB range it will expand the survey (patch) till it finds the edges of the color mass.  &lt;br /&gt;&lt;br /&gt;The engine then calculates the center of the mass by simply offsetting the target tracker half the size of the mass.  This theoretically will eliminate any false positives due to the quality of the source image due to sensor noise and blurs due to fast movement.  The centered coordinates are then passed on to the next frame's processing cycle to use as an origin for the new search.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-985623860356050814?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/985623860356050814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=985623860356050814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/985623860356050814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/985623860356050814'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/02/homogenous-rgb-mass-self-centering.html' title='Homogenous RGB Mass Self-Centering'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-2788564950791966210</id><published>2009-02-16T13:35:00.001-08:00</published><updated>2009-02-16T13:43:45.870-08:00</updated><title type='text'>Break for Debugging</title><content type='html'>While not moving as quickly as I had hoped, the ideas I've been integrating have been encouraging.  Though like any grand scheme, there comes a time to pause and make sure future development is on a stable foundation.  For the past weekend I've been going back and fixing little bugs so I don't have to worry about them later.  Though not as satisfying, it is essential to maintain a level of coding discipline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-2788564950791966210?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/2788564950791966210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=2788564950791966210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/2788564950791966210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/2788564950791966210'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/02/break-for-debugging.html' title='Break for Debugging'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-4309210554582812569</id><published>2009-01-19T15:21:00.000-08:00</published><updated>2009-01-19T16:34:40.601-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>Integrating Path Prediction</title><content type='html'>The core tracking engine has been successfully installed into the main program.  It remains virtually unchanged since its creation but there are some adjustments to the search-style I'm working out currently.  When the engine spots a target RBG value it uses that "hit" as the initial center for successive UV searches.  Limiting the search area was the first attempt at speeding up processing and now predicting where the target is in the given area is the next step.  &lt;br /&gt;&lt;br /&gt;Noting Newton's First Law of Motion, a target will tend to continue along if not a straight line, a near approximation.  The engine will make a list of coordinates to look at first in order of probability (the opposite direction being the last).  This will require re-writing the engine but every engine needs an overhaul eventually.  I believe the time I spend on this portion will be worth it in terms of process efficiency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-4309210554582812569?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/4309210554582812569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=4309210554582812569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4309210554582812569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4309210554582812569'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2009/01/integrating-path-prediction.html' title='Integrating Path Prediction'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-3779775260162130687</id><published>2008-12-15T17:07:00.000-08:00</published><updated>2008-12-17T16:43:25.535-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><category scheme='http://www.blogger.com/atom/ns#' term='getFileList'/><category scheme='http://www.blogger.com/atom/ns#' term='viewer'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>rotoCap GUI &amp; File Handling Demo Video</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aLN2mukR3WM&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aLN2mukR3WM&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-3779775260162130687?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/3779775260162130687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=3779775260162130687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3779775260162130687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3779775260162130687'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/12/rotocap-gui-file-handling-demo-video.html' title='rotoCap GUI &amp; File Handling Demo Video'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-1054927290806198008</id><published>2008-12-03T13:05:00.000-08:00</published><updated>2008-12-03T13:26:31.121-08:00</updated><title type='text'>Drone Generation Subprocess "makeDrone"</title><content type='html'>I'm calling the visual representations of each color track &lt;span style="font-style: italic;"&gt;drones&lt;/span&gt;.  These, like worker bees and pollen, will track the RGB elements across the UV space.  Currently the &lt;span style="font-style: italic;"&gt;makeDrone&lt;/span&gt; subprocess creates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;visible geometry&lt;/li&gt;&lt;li&gt;RGB attributes from a &lt;span style="font-style: italic;"&gt;colorEditor&lt;/span&gt; call&lt;/li&gt;&lt;li&gt;unique object name&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;colorSeek&lt;/span&gt; inclusion toggle (include in batch color tracking or not)&lt;/li&gt;&lt;li&gt;RGB swatch via &lt;span style="font-style: italic;"&gt;canvas&lt;/span&gt; command&lt;/li&gt;&lt;li&gt;target-rig attribute to control (what does this drone control)&lt;/li&gt;&lt;li&gt;"edit RGB" and delete options&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Possible future features&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;per-drone area constraints&lt;/li&gt;&lt;li&gt;initial search pattern&lt;/li&gt;&lt;li&gt;per-frame census (how many frames does drone find target RGB)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-1054927290806198008?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/1054927290806198008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=1054927290806198008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1054927290806198008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1054927290806198008'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/12/drone-generation-subprocess-makedrone.html' title='Drone Generation Subprocess &quot;makeDrone&quot;'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-1884876148213234579</id><published>2008-11-10T09:13:00.000-08:00</published><updated>2008-11-10T09:34:02.627-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><category scheme='http://www.blogger.com/atom/ns#' term='timerX'/><title type='text'>Over 100!</title><content type='html'>My method of file numbering is when I get a portion of the script running it gets saved as a separate file.  This past weekend, the bugs squashed broke 100 (as of this writing at 103).&lt;br /&gt;&lt;br /&gt;The GUI is being refined into a sleeker interface, but still with the consideration of an Adobe-like familiarity.  Currently I'm working on a timeline-independent playback system for an animated texture.  While scrubbing and stepping frames was relatively easy, the animation of the texture at a constant framerate is a little trickier.  I've been using the &lt;span style="font-style:italic;"&gt;timerX&lt;/span&gt; function to wait a certain amount of time then step the frame.  It works but I'm trying to make it run consistently on different machines.  The amount of times the function checks the elapsed time varies depending on the speed of the machine.  I don't think this is a big issue, but I'm trying to make rotoCap as consistent and stable as I'd rather have all the processing power for the color-tracking engine than the GUI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-1884876148213234579?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/1884876148213234579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=1884876148213234579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1884876148213234579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/1884876148213234579'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/11/over-100.html' title='Over 100!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-7713480058674492127</id><published>2008-10-16T10:19:00.000-07:00</published><updated>2008-10-16T10:26:15.603-07:00</updated><title type='text'>Simple Shape Tracking</title><content type='html'>Andy Wilson has developed an elegant control method based on the shape of the hand.  By comparing the background shapes to newly created shapes (formed by the hand), he is able to track the movement allowing for mouse-less interactions.  (Source:  http://procrastineering.blogspot.com/2008/10/andy-wilson.html)&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AtmwQnUlEmc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/AtmwQnUlEmc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-7713480058674492127?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/7713480058674492127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=7713480058674492127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7713480058674492127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/7713480058674492127'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/10/simple-shape-tracking.html' title='Simple Shape Tracking'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-4795569394452447606</id><published>2008-09-25T10:23:00.000-07:00</published><updated>2008-09-25T11:07:21.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><category scheme='http://www.blogger.com/atom/ns#' term='Laser'/><category scheme='http://www.blogger.com/atom/ns#' term='binary image'/><category scheme='http://www.blogger.com/atom/ns#' term='DARPA Grand Challenge'/><title type='text'>Video-Based vs Laser-Based Tracking of Dynamic Environments</title><content type='html'>In both fields of motion-capture and surface-capture (scanning) the need to discriminate unique points in space is paramount to the accuracy of the capture system.  When I was first conceiving rotoCap I tried to figure out this problem by looking what I had to work with and not having ready access to the specialized cameras of a Vicon system or laser scanner I turned to consumer video cameras.  I conceived I could lessen the amount of computer load by not having the program calculate trajectories but color.  An infrared machine-vision camera is suited to higher resolutions and frame rates, how could the lowly camcorder compete?  The answer is color. &lt;br /&gt;&lt;br /&gt;Most machine vision cameras used in mocap and 3d scanning are grayscale in which their output is turned into a &lt;a href="http://en.wikipedia.org/wiki/Bi-level_image"&gt;&lt;span style="font-style: italic;"&gt;binary image&lt;/span&gt;&lt;/a&gt;.  A binary image is simply a high-contrast image that is only black and white with no gradient.  This makes the image easier to process for the software since it only deals with  white dots on a black background, but the other calculations it uses to discriminate between two white dots which come near to each other can be complex and costly to the performance.  By adding in the color value, the need to track each dot is made easier by giving each its own RGB value.&lt;br /&gt;&lt;br /&gt;Why bring this up?  The DARPA Grand Challenge is a great source for inspiration because of the real-world applications of scanning/mocap.  The Stanford University team's &lt;span style="font-style: italic;"&gt;Standley&lt;/span&gt; uses a hybrid system of laser scanning and a video overlay allowing it to use color to tell the difference between the road color and everything else.  This is a great confirmation that we're both on the right track when it comes to using color over binary alone.&lt;br /&gt;&lt;br /&gt;&lt;object width="512" height="296"&gt;&lt;param name="movie" value="http://www.hulu.com/embed/JS9IdugujG9_RZ7pYB2gvg"&gt;&lt;/param&gt;&lt;embed src="http://www.hulu.com/embed/JS9IdugujG9_RZ7pYB2gvg" type="application/x-shockwave-flash"  width="300" height="219"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-4795569394452447606?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/4795569394452447606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=4795569394452447606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4795569394452447606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4795569394452447606'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/09/video-based-vs-laser-based-tracking-of.html' title='Video-Based vs Laser-Based Tracking of Dynamic Environments'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-3109491022070460064</id><published>2008-09-14T10:33:00.001-07:00</published><updated>2008-09-14T17:36:52.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><category scheme='http://www.blogger.com/atom/ns#' term='shader'/><category scheme='http://www.blogger.com/atom/ns#' term='viewer'/><title type='text'>Sequence Viewer and Shader Progress (UPDATE)</title><content type='html'>rotoCap is really coming along as more pieces of code unlock multiple areas of development.  The past few weeks have seen a streamlining of file management, GUI revisions for better interactivity, and it's now ready to start processing images.&lt;br /&gt;&lt;br /&gt;Since the core tracking engine relies on an image plane to calculate movement, rotoCap needs to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;generate a shader with an animated texture&lt;/li&gt;&lt;li&gt;disconnect the animated texture from timeline dependency&lt;/li&gt;&lt;li&gt;connect animated texture to rotoCap control&lt;br /&gt;&lt;/li&gt;&lt;li&gt;apply the shader to an image plane&lt;/li&gt;&lt;li&gt;scale image plane the same aspect ratio as source image file&lt;br /&gt;&lt;/li&gt;&lt;li&gt;create a camera to lock onto the image plane perpendicularly&lt;br /&gt;&lt;/li&gt;&lt;li&gt;use the new camera's viewport as part of the rotoCap GUI&lt;/li&gt;&lt;li&gt;create playback widget for different framerates&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I considered embedding the images into the GUI, but thought the user should be able to pan, zoom into each image using the familiar Maya orthographic camera navigation.  A "Fit Image" button would also be added to reset any camera translation.&lt;br /&gt;&lt;br /&gt;Currently, the shader generator works great the first time the user loads up the image sequence into rotoCap but changing the image directory results in errors as the script tries to create new shaders connected to previous file nodes.  The tricky part at this time is how to query if a shader exists since the &lt;span style="font-style: italic;"&gt;shaderNode&lt;/span&gt; command does not have an &lt;span style="font-style: italic;"&gt;-exists&lt;/span&gt; flag to test.  To get around this I'm loading up all the shaders into an array and deleting the rotoCap-created shader network based on wildcard name-space search.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;UPDATE&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;The shader handling is fixed now.  The bug was due to old nodes conflicting with the newly generated nodes.  Each time the user changes the image sequence directory a process is called to delete all nodes generated by rotoCap from previous executions.  The nodes are filtered by a gmatch wildcard name-space execution, then deleted.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-3109491022070460064?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/3109491022070460064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=3109491022070460064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3109491022070460064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3109491022070460064'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/09/sequence-viewer-and-shader-progress.html' title='Sequence Viewer and Shader Progress (UPDATE)'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-8427255112719504357</id><published>2008-08-20T09:00:00.000-07:00</published><updated>2008-09-15T11:14:18.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Image Metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='Emily'/><category scheme='http://www.blogger.com/atom/ns#' term='SIGGRAPH'/><title type='text'>3D Scanning for Animation</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bLiX5d3rC6o&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/bLiX5d3rC6o&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;After attending SIGGRAPH this year and talking with Dr. Paul Debevec about the subject I am convinced 3D scanning will progress more and more into the realm of motion-capture where the fields will merge within 5 years.  With Image Metrics' release of &lt;span style="font-style: italic;"&gt;Emily, &lt;/span&gt;a 3D face tracked onto an actor's head, we see the current state of the synergy.  So far, the use of 3D scan data in animation has been to capture key poses, this still leaves simulations to drive the actual motion.  By capturing the full performance in 3D, the best of both worlds can be had by being able to use the animation uncut and or pulling key poses off choice portions.&lt;br /&gt;&lt;br /&gt;Are we there yet?  Not exactly.  It has been pointed out that &lt;span style="font-style: italic;"&gt;Emily&lt;/span&gt; was still animated by humans using the scan data to target a face rig.  But, it is a good running start for the industry's jump over the valley.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-8427255112719504357?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/8427255112719504357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=8427255112719504357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8427255112719504357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/8427255112719504357'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/08/3d-scanning-for-animation.html' title='3D Scanning for Animation'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-680239230871057543</id><published>2008-08-18T13:11:00.000-07:00</published><updated>2008-08-18T13:40:44.229-07:00</updated><title type='text'>File Handler Works!</title><content type='html'>This past weekend has been very productive.  The script is now automatically picking out the file extension and using that to filter out the other files which the user doesn't want (e.g. thumbs.db, OSX files, etc.).  This makes it faster for the user since they simply choose the first file of their image sequence and the script takes care of the rest. &lt;br /&gt;&lt;br /&gt;The next step will be to create the image viewer.  I see some trouble coming since Maya doesn't have a resize for the &lt;span style="font-style: italic;"&gt;image&lt;/span&gt; command.  One work around will be to load up the files as an animated texture and do screenshots of each frame with a perpendicular camera through the &lt;span style="font-style: italic;"&gt;saveImage&lt;/span&gt; command.  The thumbnailed images will be used for the GUI window while the full-resolution images will be used by the script for the actual processing.  The image dimensions also need to be queried so the height and width ratio can be applied correctly to the NURBS plane.  After doing some research it seems querying the &lt;span style="font-style: italic;"&gt;outSize &lt;/span&gt;of a node will work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-680239230871057543?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/680239230871057543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=680239230871057543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/680239230871057543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/680239230871057543'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/08/file-handler-works.html' title='File Handler Works!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-2397502107845448329</id><published>2008-08-09T11:13:00.000-07:00</published><updated>2008-08-09T11:20:22.949-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='getFileList'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='MEL'/><title type='text'>How to fix getFileList</title><content type='html'>When you use the MEL command &lt;span style="font-style: italic;"&gt;getFileList, &lt;/span&gt;make sure there is a trailing "/" on the folder string you pass to it.  Otherwise the command returns the folder string you passed to it initially.&lt;br /&gt;&lt;br /&gt;        string $imageDir = (dirname (`fileDialog`) + "/"); &lt;span style="color: rgb(255, 0, 0);"&gt;// Stroke must be added&lt;/span&gt;&lt;br /&gt;        string $fileList[] = `getFileList -folder $imageDir`;&lt;br /&gt;&lt;br /&gt;This was a frustrating bug and hopefully this will show up in search results when someone else has this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-2397502107845448329?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/2397502107845448329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=2397502107845448329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/2397502107845448329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/2397502107845448329'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/08/how-to-fix-getfilelist.html' title='How to fix getFileList'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-6455706278498799309</id><published>2008-08-05T17:06:00.000-07:00</published><updated>2008-08-05T17:13:18.319-07:00</updated><title type='text'>File Handler Progress!</title><content type='html'>After some frustrating times with fileBrowser.mel, I went back to using the fileDialog command to pass a path to the image sequence file handler so I'll only have to call up array elements. Theoretically this should save some processing cycles and makes it a little more cross-platform friendly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-6455706278498799309?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/6455706278498799309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=6455706278498799309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/6455706278498799309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/6455706278498799309'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/08/file-handler-progress.html' title='File Handler Progress!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-565436895923291939</id><published>2008-07-14T16:02:00.000-07:00</published><updated>2008-12-10T10:11:42.471-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='Radiohead'/><title type='text'>Radiohead &amp; 3D Scanning</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e0yP6jI3SJU/SHvdCsxnB2I/AAAAAAAAAA8/_WxEGN8ES4c/s1600-h/thomYorkMesh01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_e0yP6jI3SJU/SHvdCsxnB2I/AAAAAAAAAA8/_WxEGN8ES4c/s320/thomYorkMesh01.jpg" alt="" id="BLOGGER_PHOTO_ID_5223011231314937698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Thom York underwent a scanning session to capture his performance of &lt;span style="font-style: italic;"&gt;House of Cards&lt;/span&gt;.  The video was created using two different scanning methods, laser and structured light.  It's encouraging to see fine artists using technology instead of abhorring it.  In an exciting move, Radiohead released the raw data from the session as a CSV sequence which I was able to process into a polygonal mesh to reveal what Mr. York looked like during the capture session.  There is some surface warping due to the deliberate distortion of the process by shooting through a piece of glass or Lucite, but the results were interesting. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=8nTFjVm9sTQ&amp;amp;feature=user"&gt;House of Cards music video&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=cyQoTGdQywY&amp;amp;feature=user"&gt;Making of House of Cards&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-565436895923291939?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/565436895923291939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=565436895923291939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/565436895923291939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/565436895923291939'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/07/radiohead-3d-scanning.html' title='Radiohead &amp; 3D Scanning'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e0yP6jI3SJU/SHvdCsxnB2I/AAAAAAAAAA8/_WxEGN8ES4c/s72-c/thomYorkMesh01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-4932218106772300516</id><published>2008-07-13T15:29:00.000-07:00</published><updated>2008-07-13T15:40:02.844-07:00</updated><title type='text'>The Story So Far...</title><content type='html'>The core image processing script is functional, now it's time to get it functional for the user.  I've decided that the Pane Layout will be the best to hold the different program elements because of the resizable areas.  In the future I may make the image area it's own window but only if it doesn't impact the performance of the script by handling the cross-window chatter.&lt;br /&gt;&lt;br /&gt;The trickiest part so far has been the file-handling.  MEL has about 4 ways to handle file dialogs and each seems to have their strengths.  For now I only need to worry about storing directory paths.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-4932218106772300516?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/4932218106772300516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=4932218106772300516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4932218106772300516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/4932218106772300516'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/07/story-so-far.html' title='The Story So Far...'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814403382429029238.post-3605892516626529076</id><published>2008-07-13T14:30:00.000-07:00</published><updated>2008-07-13T15:41:48.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rotoCap'/><title type='text'>FIRST!</title><content type='html'>&lt;span class="style2"  style="font-family:arial;"&gt;Master of Fine Arts Thesis Project&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;strong  style="font-family:arial;"&gt; : &lt;/strong&gt;&lt;strong face="arial"&gt;&lt;span class="style3"&gt;&lt;em&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Creating an Optical Motion-Capture System from "off-the-shelf" Hardware and Software.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-family: arial;"&gt;What is Motion-Capture? &lt;/strong&gt;&lt;span style="font-family:arial;"&gt;Motion-capture (commonly known as "mocap") is a method of recording the movements of a real-world performance, usually a human. The movements are then applied to a computer model which mimics the actions of the original performance. The performer usually wears a special suit which has markers or sensors which are used to turn the movements into a numeric representation, easily understood by a computer.&lt;/span&gt;     &lt;p style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;a name="who"&gt;&lt;/a&gt;Who uses Mocap? &lt;/strong&gt;Both the entertainment industry and research entities use mocap. Many of today's video games and movies use mocap to create performances where realistic movement is desired. Researchers use mocap to study the movement of the body in detail. Since the performance is captured as data, it is infinitely repeatable and allows for greater scrutiny with less variables.&lt;/p&gt;     &lt;p style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;a name="why"&gt;&lt;/a&gt;Why  write your own?&lt;/strong&gt; Traditional drawbacks to a commercial system are its prohibitive cost and complexity, thus limiting motion capture to primarily larger studios and research entities. These barriers are on the verge of falling away due to the dropping cost of near-professional electronics and new methods of motion data capture by said electronics. Independent animators and small studios will be able to utilize motion capture as they have with other technologies which previously were unavailable to them such as 3D animation software itself and high-end workstations. &lt;/p&gt;     &lt;p style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;a name="how"&gt;&lt;/a&gt;How does it work? &lt;/strong&gt;The program is actually a script that runs within a 3D package called Maya. The user will record the performance using off-the-shelf video cameras and bring it into the script (which I've dubbed &lt;em&gt;&lt;strong&gt;rotoCap&lt;/strong&gt;&lt;/em&gt;). The video is analyzed frame by frame to synchronize the multiple data streams and to locate the markers placed on the performer at the time of the capture session. The markers are isolated in 3D space and used to drive the performance of a computer model.&lt;/p&gt;&lt;br /&gt;&lt;strong style="font-family: arial;"&gt;&lt;span class="style3"&gt;&lt;em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814403382429029238-3605892516626529076?l=ellis3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ellis3d.blogspot.com/feeds/3605892516626529076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814403382429029238&amp;postID=3605892516626529076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3605892516626529076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814403382429029238/posts/default/3605892516626529076'/><link rel='alternate' type='text/html' href='http://ellis3d.blogspot.com/2008/07/first.html' title='FIRST!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00554276566451886918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
