<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>3d &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Fri, 10 Apr 2026 08:32:14 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>3d &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[When Gaussian Splatting Meets 19th Century 3D Images]]></title>
		<link>https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/</link>
					<comments>https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 20 Mar 2025 12:34:05 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58893</guid>

					<description><![CDATA[Depending on which side of the English Channel / La Manche you sit on, photography was invented either by Englishman Henry Fox Talbot in 1835 or Frenchman Louis Daguerre in 1839.  By 1851, Englishman Sir David Brewster and Frenchman Jules Duboscq had perfected stereophotography.  It led to an explosion of creativity in 3D photography, with the London Stereoscopic and Photographic Company becoming …]]></description>
										<content:encoded><![CDATA[<p>Depending on which side of the English Channel / <i lang="fr">La Manche</i> you sit on, photography was invented either by Englishman <a href="https://talbot.bodleian.ox.ac.uk/talbot/biography/#Theconceptofphotography">Henry Fox Talbot in 1835</a> or Frenchman <a href="https://catalogue.bnf.fr/ark:/12148/cb46638173c">Louis Daguerre in 1839</a>.</p>

<p>By 1851, Englishman Sir David Brewster and Frenchman Jules Duboscq <a href="https://web.archive.org/web/20111206040331/http://sydney.edu.au/museums/collections/macleay/hist_photos/virtual_empire/origins.shtml">had perfected stereophotography</a>.  It led to an explosion of creativity in 3D photography, with the <a href="https://www.royalacademy.org.uk/art-artists/organisation/the-london-stereoscopic-and-photographic-company">London Stereoscopic and Photographic Company</a> becoming one of the most successful photographic companies of the era.</p>

<p>There are thousands of stereoscopic images hidden away in museum archives. For example, <a href="https://commons.wikimedia.org/wiki/File:Old_Crown_Birmingham_-_animation_from_stereoscopic_image.gif">here's one from Birmingham, UK</a>:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/Stereo.jpg" alt="Two very similar photos of a horse and card in a street." width="1200" height="667" class="aligncenter size-full wp-image-58897">

<p>You probably don't have a stereoscope attached to your computer, but the 3D depth effect can be simulated by animating the two images.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/Old_Crown_Birmingham_-_animation_from_stereoscopic_image.gif" alt="The two photos flick back and forth giving an impression of a 3D image." width="600" height="667" class="aligncenter size-full wp-image-58898">

<p>Fast forward to 2023 and the invention of <a href="https://arxiv.org/abs/2308.04079">Gaussian Splatting</a>. Essentially, using computers to work out 3D information when given multiple photos of a scene. It is magic - but relies on lots of photographs of a scene. Then, in 2024, <a href="https://github.com/btsmart/splatt3r">Splatt3r</a> was released. Give it two photos from an uncalibrated source, and it will attempt to reconstruct depth information from it.</p>

<p>Putting the above photo into <a href="https://splatt3r.active.vision/">the demo software</a> gives us this rather remarkable 3D model as rendered by <a href="https://superspl.at/editor">SuperSplat</a>.</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-58893-2" width="620" height="364" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/Goodbye-Horses.mp4?_=2"><a href="https://shkspr.mobi/blog/wp-content/uploads/2025/03/Goodbye-Horses.mp4">https://shkspr.mobi/blog/wp-content/uploads/2025/03/Goodbye-Horses.mp4</a></video></div><p></p>

<p>I think that's pretty impressive! Especially considering the low quality and low resolution of the images. How accurate is it? The pub is "The Old Crown" in Digbeth and is <a href="https://maps.app.goo.gl/kVvivgihDEKnLFRY6">viewable on Google Streetview</a>.</p>

<p><a href="https://maps.app.goo.gl/kVvivgihDEKnLFRY6"><img src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/old-crown.jpeg" alt="Old style pub on a modern street." width="900" height="600" class="aligncenter size-full wp-image-58920"></a></p>

<p>It's hard to get a perfect measurement - but I think that's pretty close.</p>

<h2 id="interactive-examples"><a href="https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/#interactive-examples">Interactive Examples</a></h2>

<p>Here's the image above.</p>

<iframe id="viewer" width="800" height="500" allow="fullscreen; xr-spatial-tracking" src="https://superspl.at/s?id=e0020f3f&amp;noanim"></iframe>

<p>Here are the <a href="https://newsroom.loc.gov/news/library-to-create-new-stereoscopic-photography-fellowship-and-collection-with-national-stereoscopic-/s/70f50c07-b655-4b95-9edd-39e01d170b88">Shoshone Falls, Idaho</a> - from a series of <a href="https://www.artic.edu/artworks/210786/shoshone-falls-snake-river-idaho-looking-through-the-timber-and-showing-the-main-fall-and-upper-or-lace-falls-no-49-from-the-series-geographical-explorations-and-surveys-west-of-the-100th-meridian">photos taken in 1874</a>.</p>

<iframe id="viewer" width="800" height="500" allow="fullscreen; xr-spatial-tracking" src="https://superspl.at/s?id=4c925403&amp;noanim"></iframe>

<p>This is <a href="https://www.loc.gov/resource/stereo.1s19748/">Li Hung Chang</a> from a stereograph taken in 1900.</p>

<iframe id="viewer" width="800" height="500" allow="fullscreen; xr-spatial-tracking" src="https://superspl.at/s?id=974f2576&amp;noanim"></iframe>

<p>Of course, it doesn't always produce great results. This is <a href="https://www.getty.edu/art/collection/object/108P6H">Roger Fenton's 1860 stereograph of the British Museum's Egyptian Room (Statue of Discobolus)</a>. Even with a high resolution photograph, the effect is sub-par. The depth works (although is exaggerated) but all the foreground details have been lost.</p>

<iframe id="viewer" width="800" height="500" allow="fullscreen; xr-spatial-tracking" src="https://superspl.at/s?id=3e13a3c4&amp;noanim"></iframe>

<h2 id="background"><a href="https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/#background">Background</a></h2>

<p>Regular readers will know that I played with something similar back in 2012 - <a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#reconstructing-depth-information">using similar software to recreate 3D scenes from Doctor Who</a>. I also released some code in 2018 <a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/">to do the same in Python</a>.</p>

<p>Both of those techniques worked on screenshots from modern 3D video. The images are crisp and clear - perfect for automatically making 3D models. But neither of those approaches worked well with old photographs. There was just too much noise for simple code to grab onto.</p>

<p>These modern Gaussian Splatting techniques are <em>incredible</em>. They seem to excel at detecting objects even in the most degraded images.</p>

<h2 id="next-steps"><a href="https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/#next-steps">Next Steps</a></h2>

<p>At the moment, it is a slightly manual effort to pre-process these images. They need to be cropped or stretched to squares, artefacts and blemishes need to be corrected, and some manual tweaking of the final model is inevitable.</p>

<p>But I'd love to see an automated process to allow the bulk transformations of these images into beautiful 3D models.  There are <a href="https://www.loc.gov/search/?fa=subject:stereographs">over 62,000 stereographs in the US Library of Congress</a> alone - and no doubt thousands more in archives around the world.</p>

<p>You can <a href="https://codeberg.org/edent/Gaussian_Splatting_Stereographs">download the images and models from my CodeBerg</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58893&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/03/when-gaussian-splatting-meets-19th-century-3d-images/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2025/03/Goodbye-Horses.mp4" length="4530552" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Would you go to the Job Centre or DMV in the Metaverse?]]></title>
		<link>https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/</link>
					<comments>https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 07 Sep 2022 11:34:31 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[metaverse]]></category>
		<category><![CDATA[Virtual Reality]]></category>
		<category><![CDATA[vr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=43451</guid>

					<description><![CDATA[I&#039;m just getting started with the Oculus Quest 2 from Facebook Meta. It is amazing.  OK, that&#039;s a lie. It&#039;s a pretty good tech demo of what one vision of the future could look like. But it is making a little bit of my brain itch.  What Government services could / should be run in the Metaverse?  Obviously, the answer is &#34;none&#34;.  Sure, you could create a virtual job centre, housing office, or DMV…]]></description>
										<content:encoded><![CDATA[<p>I'm just <a href="https://shkspr.mobi/blog/2022/08/review-meta-quest-2-first-impressions/">getting started with the Oculus Quest 2</a> from <del>Facebook</del> Meta. It is amazing.</p>

<p>OK, that's a lie. It's a pretty good tech demo of what one vision of the future could look like. But it is making a little bit of my brain itch.</p>

<p>What Government services<sup id="fnref:gov"><a href="https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/#fn:gov" class="footnote-ref" title="I work for a bit of the UK Government. This isn't an official blog from them. I don't make any decisions about these things. I bought the headset with my own money and didn't expense it. These are…" role="doc-noteref">0</a></sup> could / should be run in the Metaverse?</p>

<p>Obviously, the answer is "none".  Sure, you could create a virtual job centre, housing office, or DMV - but would you want to sit in a virtual waiting room for a couple of hours waiting for your name to be called? No. Even if the room was designed to look like a spaceship and the staffs' avatars were funky robots, it would be a pointless experience.</p>

<p>Or would it? One of the worst things about waiting on hold on the phone is the inability to see how fast a queue is moving. Would you like to see a visual representation of how long you had to wait?  Would it calm and reassure you if your case-worker looked like a friendly muppet rather than a disembodied voice?</p>

<p>(There's a side issue of whether VR headsets are likely to be owned by people going to a job centre. At the moment, a Quest 2 is about the same sort of price as a mid-tier smartphone - so the equipment isn't out of reach for all but the richest. Many people at the job centre were previously in employment and would have had enough disposable income to buy one.)</p>

<p>The other things which tickles my fancy is the idea of using humans' natural spatial awareness and memory.  One of the great things about browsing the Web in the Metaverse is the ability to physically place screens around you. No more alt-tabbing. Twitter is a small screen by your feet, the news is a big screen up and to the left, and so on. It quickly becomes really convenient to remember <em>where</em> tabs are in 3D space, rather than a one-dimensional browser tab bar.</p>

<iframe title="Reality Browser - This Augmented Reality Browser will blow your mind. Minority Report here we come!" width="620" height="349" src="https://www.youtube.com/embed/U1ydzFQ3T5E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>If you're applying for a Government service, and need to provide evidence, would it be helpful for you to have all your files laid out in front of you?</p>

<p>Remember, the <a href="https://futurism.com/the-byte/gen-z-kids-file-systems">youth of today don't understand how file systems work</a>. So having a large visualisation of their documents may be just what they need in order to present their evidence.</p>

<p>People who have played the amazing game "<a href="https://store.steampowered.com/app/239030/Papers_Please/">Papers Please</a>" will recognise just how difficult it is to organise lots of documents on a small screen.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/08/Mobile-MockupBigFace.jpg" alt="Lots of official papers cramped on a tiny phone screen." width="585" height="960" class="aligncenter size-full wp-image-43454">

<h2 id="is-this-sensible"><a href="https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/#is-this-sensible">Is this sensible?</a></h2>

<p>We shouldn't be recreating offline experiences - turning unlimited potential into a janky skeuomorph. Otherwise you end up with this abomination:</p>

<blockquote class="social-embed" id="social-embed-1478094074909540354" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/DigitalisHomo" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkQDAABXRUJQVlA4IDgDAAAwDgCdASowADAAPqlAnkmmI6MhNVqqqMAVCWwAsR7s/ASIqq2HosUI/bq8856Ot5e3n6zBNyuJHlhAsqUnOrjtWo3sR3sCY+QselWaXp1+TRmSv7d5h2h7Pm9IK3fmqdd441Kty0fkttJH93ZDQS1a3bOrBQ8BgGYyAAD1rExn0K5g9FZEs/M+aanK6OEYrpVN8Ht8gahmkU6iWMciOV8qoEJ5AM5WWlIawoWfQF556HdJGeSS1XvvVUR9oQP/zsdAV8TFwvzxELEhkq9SuN/Idp2Ocr2p62/2ufI/O3YMDjZEibp1LqabiUOOcqfLmlyu6aNPlfEyEMwtvALaOfmRoxA2nAFXOaslJsab9B3E7Twg9VBUtXhEOe7Td1tV5lj9N0pIoc/c+wKD9Hh/phjW4oK/5wqVHGhL3gjHvpjsnwKthprCISaXKaUoXLfv+pKv4iFAUBnhE1GNnX9YbGC3xyo6YW0tgouSr0GcDBf+sHPus//EM7UiNNoV+9i6ik7aHT1syDupzJB36tCEYv5EZxY0lnt0sPYE2DFwYR42Qg+GgRL6NdV68wdijx6h/0SwinFce8Tg4MOb+vcsoLjgQ78Ez2RJck0Fdmyjm8qFLDURTL1WX6Y8j7DMHCYHVFqiWXd73zz8/uhH2rUsHfYZiki11HAG/FYx6ugxsNuAoUO8fTwSvuB2MnkmdVAhf9CV0BX+Br2yf6HJaw/ZGdNd1b9ynUlTYD5NhdoyC1vfFlh13f8C/NOgVavS5lJB0PRrikgNN9oUD8c8Kvla4cOVJUDsrKVS6x00KgxEZSuXwSmGj9txllVvyopHe8mNC2HC0htFYNDaJU+shLvDAngqgTvKCZVMHnj/Ft9tZmksRBCih2ULWHb6nKn05InQRfKodiPOgft3W3yvchMkFMY8aduFJT3+u06DdRP3liBQR8N8hBJ5da1WSVReEi8+dt7sPkg0ZGtnf/Z5YytbnFiWoTE0tTDjJZy42+NoRp7KQ+AAqM8AVVRWbTH1u50Vaehb5RPqHngMuZquuN87hpHHAO7EvkWr9isPaT1R9YC9S7MRjCc6ZeKdn+r4szHhS/pP+Yvs19QAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Homo Digitalis</p>@DigitalisHomo</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">This is how Walmart envisions Shopping in the <a href="https://twitter.com/hashtag/Metaverse">#Metaverse</a>.<br><br>Thoughts? 💭 <a href="https://twitter.com/DigitalisHomo/status/1478094074909540354/video/1">pic.x.com/5l7khobse7</a><div class="social-embed-media-grid"><video class="social-embed-video" controls="" src="https://video.twimg.com/ext_tw_video/1478093975760392197/pu/vid/1280x720/27wWlkrJMDg1GaJm.mp4?tag=12" poster="data:image/webp;base64,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" width="550"></video></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/DigitalisHomo/status/1478094074909540354"><span aria-label="33880 likes" class="social-embed-meta">❤️ 33,880</span><span aria-label="7261 replies" class="social-embed-meta">💬 7,261</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2022-01-03T20:01:03.000Z" itemprop="datePublished">20:01 - Mon 03 January 2022</time></a></footer></blockquote>

<p>(OK, <a href="https://web.archive.org/web/20220828141550/https://mutualmobile.com/work/walmart">that's a 2017 tech demo rather than a real product</a>)</p>

<p>Queuing up to speak to an advisor or handing over documentation are probably the stupidest examples I could come up with.</p>

<p>But there's <em>something</em> there.</p>

<p>It's very easy to go from filling in a paper form to filling in a web form.</p>

<p>And it's easy to go from an in-person chat to a typed-chat or video-chat.</p>

<p>So what are the governmenty things which can go from "X" to "X-but-in-the-Metaverse"?</p>

<h2 id="a-few-ideas"><a href="https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/#a-few-ideas">A few ideas</a></h2>

<p>Here are a few random ideas which might lend themselves to a VR experience. Remember - I am not a VR expert, nor do I have the ability to put any of these ideas into practice.</p>

<ul>
<li><p>Does an inspector need to visit an abattoir, farm, or factory? Would it be easier to ship a robot to the location and have it controlled by inspectors in a remote location?</p></li>
<li><p>How do you test whether people know how to perform an emergency drill? Running an exercise in a Nuclear power station is expensive - so strap everyone in to a headset and have them play in a Digital Twin.</p></li>
<li><p>UK driving tests already have a <a href="https://www.gov.uk/theory-test/hazard-perception-test">video-based hazard perception test</a>. Could the entire driving test take place in VR?</p></li>
<li><p>If you are offered council housing, would you like to be able to view the property in VR before deciding if you wanted to move?</p></li>
<li><p>Would hustings and other public discussions benefit from being in the Metaverse? A remote video call is good - but being able to collaboratively look over a 3D model of proposed designs for a new shopping centre might be helpful.</p></li>
<li><p>Should a jury in a trial use the Metaverse to visualise where a suspect was found? Or to see a visualisation of a reconstruction of a crime scene?</p></li>
</ul>

<p>Some (most?) of these ideas are ridiculous. Some could be commonplace in the future. The Metaverse might explode like the Web or collapse like MySpace.  But I think it's a good idea for any organisation to play with new technology and explore ideas. You never know what the future will bring.</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:gov">
<p>I work for a bit of the UK Government. This isn't an official blog from them. I don't make any decisions about these things. I bought the headset with my own money and didn't expense it. These are the random musings of some bloke on the Internet.&nbsp;<a href="https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/#fnref:gov" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=43451&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/09/would-you-go-to-the-job-centre-or-dmv-in-the-metaverse/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		<enclosure url="https://video.twimg.com/ext_tw_video/1478093975760392197/pu/vid/1280x720/27wWlkrJMDg1GaJm.mp4?tag=12" length="19893505" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Où est L'Inconnue de la Seine en 3D?]]></title>
		<link>https://shkspr.mobi/blog/2021/09/ou-est-linconnue-de-la-seine-en-3d/</link>
					<comments>https://shkspr.mobi/blog/2021/09/ou-est-linconnue-de-la-seine-en-3d/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 13 Sep 2021 11:43:20 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d printing]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39969</guid>

					<description><![CDATA[Twitter can be amazing sometimes...  I was reading about &#34;L&#039;Inconnue de la Seine&#34;. The face of a young woman found drowned in the river Seine in the 1800s.  Her death mask was enormously popular - with copies of it appearing all over the world. Her smile was compared to the Mona Lisa and her face decorated the popular salons of the day.  Her death mask was even the basis for the first &#34;CPR…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/08/Linconnue_de_la_Seine_masque_mortuaire.jpg" alt="Black and white photo of the face of a young woman. Her eyes are closed and she is gently smiling." width="200" class="alignleft size-full wp-image-39970">

<p>Twitter can be amazing sometimes...</p>

<p>I was reading about "<span lang="fr"><a href="https://www.sciencealert.com/how-dead-girl-paris-ended-up-most-kissed-lips-in-history-l-inconnue-de-la-seine-resusci-anne-cpr-annie-death-mask">L'Inconnue de la Seine</a></span>". The face of a young woman found drowned in the river Seine in the 1800s.  Her death mask was enormously popular - with copies of it appearing all over the world. Her smile was compared to the Mona Lisa and her face decorated the popular salons of the day.</p>

<p>Her death mask was even the basis for the first "CPR Doll". Her death has helped save more lives than anyone can possibly count.</p>

<p>There are thousands of photos and drawings of the mask - but no 3D scans.</p>

<blockquote class="social-embed" id="social-embed-1425890203563069441" lang="fr" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Is there a freely available 3D model of "L'Inconnue de la Seine"?</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1425890203563069441"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-08-12T18:41:30.000Z" itemprop="datePublished">18:41 - Thu 12 August 2021</time></a></footer></blockquote>

<p>Twitter, being a <del>wretched hive of scum and villainy</del> machine for serendipity, soon found me someone who works somewhere that makes 3D scans of busts.</p>

<blockquote class="social-embed" id="social-embed-1426078070872682497" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-1425900343678967818" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/DEJPett" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRowCAABXRUJQVlA4IIACAACQDACdASowADAAPrVQn0ynJKKiKrVaqOAWiUAW9/XjYy5lwaCujuTtUjWVeA03yw6bknKkNUnvt79+LgLq3HAI+NSEvIayjJyeDISSsZeq+poV0yqc+TIQ46s0mUsnHF7Qe6crqj2HcZpAFk8AAP79wBdOP3jyHR3OLQfcEgnWp2VBzoygvD+JD/VADepBcA0rlxnzqOcvHpl81wC086GcAOvedf6eMs781HT4c2isgDxTF6SMnJ73AkpYLop/n3tw3Lfc9ZkKTNWgBe1M72za5kpTM1UGdgo/KiBIbcKQa4XRwHFFCYxzaXaLUFmLYiHO3/WS9QPWtqhq4+BcQcguFbbfb7o/6hkqMyQxmHzY32P4XypCqSUl24gwDghkgjz9iaYXhw5htfizSwAjNCDwbxGU5bst7NSf7Wz8+a0b/RL9/7mL3Ed7r08ge32gpH72Q0pnkxXZQ7dL40mquLqricN9bdf9ww4Zrm46XX4MoRuxfs7F27pOThJg66R+U4hxkkZlk3vDQf4izC7n7mPKksJnNtDEZcvMHqdNNVkQ3z7m5mTui66WKfmuklRqGAFj1fujMZTaJSfaXbgNgWdW91hXVTaXmp77iCcP8XjT3UptiB/VvX9BOPcv2bbDAjiIS8hyM3zDfZ9BG78EZGMjxhaRSMcLr4EiHSKEtgrK6K9l9N98yYaJa/SUl2MOEX6KRGQQ796K1d0R1QgctIy0PbZSCClv7tzbY4yektgRhVfMDL5chblHMs98hTWkshqd3F8Uk5CjB6BaMe0+FO3Vqd1mKJ7KMenmvOU3CtYwGPlTLuAbliSHxxygUId4b2g38tyNNQdC7StlRz9aOkAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Daniel Pett</p>@DEJPett</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/puntofisso/status/1425896914491482115">Replying to @puntofisso</a></small><a href="https://twitter.com/puntofisso">@puntofisso</a> <a href="https://twitter.com/edent">@edent</a> Not that I know of, but <a href="https://twitter.com/nebulousflynn">@nebulousflynn</a> or <a href="https://twitter.com/jnthnbck">@jnthnbck</a> may have come across one on travels.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/DEJPett/status/1425900343678967818"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-08-12T19:21:48.000Z" itemprop="datePublished">19:21 - Thu 12 August 2021</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/jnthnbck" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRoACAABXRUJQVlA4IHQCAABQDACdASowADAAPrVMmksnJCIhrjgLMOAWiWQAsR68z4s35AVhFmYUvOpnQyvnw4VzW8ZNLJW/fZKmRChFI+dk7qfb8kj+WavVlg0XhCwhs7MEUcP0VzosTK0fOU7OoWGj/9JxpSUazI8AAAD+5/+v+tRD5VawakE5nrL4z0uc4sZCO+Hu9z47rWVPB2eoAS1zm7EbPhmEAWS+ZY5IXRikfG27Kqmt/XFazRFDtwn0aoZGBb2vjGUfeD6LvHSZ+7RgzQvgTS658adzlOUi+c3GF30HVR46aY2l+zS+GXTQs4T/QeuLZY23dE7NCeLq+7wB2d1jB7+VOgmo1sL8wdBegYilLUAndOLU0Sta+LQRRjKb9wtQe5a/Bi0+4VByrVvpzWpl301xxlNfPwlVQ9Or+chFPqo5bDzKc9KiNvkUVUsjJqfooHDxWrliuszAZ9T5DiwOZ3w8IIDfwRAnC9b2+5hs6Hh2RQ3GvDxuO9ZEOJBr8mE/BfoK3xocLKG4NUgOlj5JZsn+h4nOCOeVfUjeSZ9BwL0OUYO4i7nzHPLpGDKSLLIFK1wAoCY8CgX0oOrQ6VLY7I8M/Hnrr3XChuu/s9tETW4kc66IhP4nHGq6CcTMCdVoyQCXJzbbmb7TcPuy9UrwEtCpuL59QRY8vclX2DY6B9iEQUNODZ2Xl9pJyybsOosn2bGqI2DWwMQ7wmj+FpVuSQ5bH9dnBcn2RysTuwkdDPghZlwHqZjAvY1+0gXD3Vcz4BlY+ET9YPUoTzsHJfoDbN3l9rupHI5zETltvVleGD31FOyhIJ/zLGTePXNxrRNTXuEPUa7RljdphgiHWAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Jonathan Beck</p>@jnthnbck</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/DEJPett/status/1425900343678967818">Replying to @DEJPett</a></small><a href="https://twitter.com/DEJPett">@DEJPett</a> <a href="https://twitter.com/puntofisso">@puntofisso</a> <a href="https://twitter.com/edent">@edent</a> <a href="https://twitter.com/nebulousflynn">@nebulousflynn</a> We worked on a series of death masks at <a href="https://twitter.com/TeviotPlace">@TeviotPlace</a>, all downloadable here <a href="https://www.myminifactory.com/users/AnatomicalMuseum">myminifactory.com/users/Anatomic…</a>. I’ll look into the whereabouts of this one, has been on the to-do list for a while.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/jnthnbck/status/1426078070872682497"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-08-13T07:08:02.000Z" itemprop="datePublished">07:08 - Fri 13 August 2021</time></a></footer></blockquote>

<p>But they didn't have <span lang="fr">L'Inconnue</span> in their collection.</p>

<p>Luckily, there was a museum nearby which had a copy of her face and, before the day was out, she'd been located!</p>

<blockquote class="social-embed" id="social-embed-1426186059952578564" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/jnthnbck" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRoACAABXRUJQVlA4IHQCAABQDACdASowADAAPrVMmksnJCIhrjgLMOAWiWQAsR68z4s35AVhFmYUvOpnQyvnw4VzW8ZNLJW/fZKmRChFI+dk7qfb8kj+WavVlg0XhCwhs7MEUcP0VzosTK0fOU7OoWGj/9JxpSUazI8AAAD+5/+v+tRD5VawakE5nrL4z0uc4sZCO+Hu9z47rWVPB2eoAS1zm7EbPhmEAWS+ZY5IXRikfG27Kqmt/XFazRFDtwn0aoZGBb2vjGUfeD6LvHSZ+7RgzQvgTS658adzlOUi+c3GF30HVR46aY2l+zS+GXTQs4T/QeuLZY23dE7NCeLq+7wB2d1jB7+VOgmo1sL8wdBegYilLUAndOLU0Sta+LQRRjKb9wtQe5a/Bi0+4VByrVvpzWpl301xxlNfPwlVQ9Or+chFPqo5bDzKc9KiNvkUVUsjJqfooHDxWrliuszAZ9T5DiwOZ3w8IIDfwRAnC9b2+5hs6Hh2RQ3GvDxuO9ZEOJBr8mE/BfoK3xocLKG4NUgOlj5JZsn+h4nOCOeVfUjeSZ9BwL0OUYO4i7nzHPLpGDKSLLIFK1wAoCY8CgX0oOrQ6VLY7I8M/Hnrr3XChuu/s9tETW4kc66IhP4nHGq6CcTMCdVoyQCXJzbbmb7TcPuy9UrwEtCpuL59QRY8vclX2DY6B9iEQUNODZ2Xl9pJyybsOosn2bGqI2DWwMQ7wmj+FpVuSQ5bH9dnBcn2RysTuwkdDPghZlwHqZjAvY1+0gXD3Vcz4BlY+ET9YPUoTzsHJfoDbN3l9rupHI5zETltvVleGD31FOyhIJ/zLGTePXNxrRNTXuEPUa7RljdphgiHWAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Jonathan Beck</p>@jnthnbck</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/StJohnsGate/status/1426170036000108544">Replying to @StJohnsGate</a></small><a href="https://twitter.com/StJohnsGate">@StJohnsGate</a> <a href="https://twitter.com/edent">@edent</a> <a href="https://twitter.com/DEJPett">@DEJPett</a> <a href="https://twitter.com/puntofisso">@puntofisso</a> <a href="https://twitter.com/nebulousflynn">@nebulousflynn</a> <a href="https://twitter.com/TeviotPlace">@TeviotPlace</a> Found her! <a href="https://twitter.com/jnthnbck/status/1426186059952578564/photo/1">pic.x.com/dhjcqp1hus</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/E8rUhZRX0AYUxBF.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/jnthnbck/status/1426186059952578564"><span aria-label="4 likes" class="social-embed-meta">❤️ 4</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-08-13T14:17:08.000Z" itemprop="datePublished">14:17 - Fri 13 August 2021</time></a></footer></blockquote>

<p>And promptly scanned!</p>

<blockquote class="social-embed" id="social-embed-1426209217866776577" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/jnthnbck" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRoACAABXRUJQVlA4IHQCAABQDACdASowADAAPrVMmksnJCIhrjgLMOAWiWQAsR68z4s35AVhFmYUvOpnQyvnw4VzW8ZNLJW/fZKmRChFI+dk7qfb8kj+WavVlg0XhCwhs7MEUcP0VzosTK0fOU7OoWGj/9JxpSUazI8AAAD+5/+v+tRD5VawakE5nrL4z0uc4sZCO+Hu9z47rWVPB2eoAS1zm7EbPhmEAWS+ZY5IXRikfG27Kqmt/XFazRFDtwn0aoZGBb2vjGUfeD6LvHSZ+7RgzQvgTS658adzlOUi+c3GF30HVR46aY2l+zS+GXTQs4T/QeuLZY23dE7NCeLq+7wB2d1jB7+VOgmo1sL8wdBegYilLUAndOLU0Sta+LQRRjKb9wtQe5a/Bi0+4VByrVvpzWpl301xxlNfPwlVQ9Or+chFPqo5bDzKc9KiNvkUVUsjJqfooHDxWrliuszAZ9T5DiwOZ3w8IIDfwRAnC9b2+5hs6Hh2RQ3GvDxuO9ZEOJBr8mE/BfoK3xocLKG4NUgOlj5JZsn+h4nOCOeVfUjeSZ9BwL0OUYO4i7nzHPLpGDKSLLIFK1wAoCY8CgX0oOrQ6VLY7I8M/Hnrr3XChuu/s9tETW4kc66IhP4nHGq6CcTMCdVoyQCXJzbbmb7TcPuy9UrwEtCpuL59QRY8vclX2DY6B9iEQUNODZ2Xl9pJyybsOosn2bGqI2DWwMQ7wmj+FpVuSQ5bH9dnBcn2RysTuwkdDPghZlwHqZjAvY1+0gXD3Vcz4BlY+ET9YPUoTzsHJfoDbN3l9rupHI5zETltvVleGD31FOyhIJ/zLGTePXNxrRNTXuEPUa7RljdphgiHWAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Jonathan Beck</p>@jnthnbck</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1426191306662027264">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> <a href="https://twitter.com/StJohnsGate">@StJohnsGate</a> <a href="https://twitter.com/DEJPett">@DEJPett</a> <a href="https://twitter.com/puntofisso">@puntofisso</a> <a href="https://twitter.com/nebulousflynn">@nebulousflynn</a> <a href="https://twitter.com/TeviotPlace">@TeviotPlace</a> Welcome to the digital world, mademoiselle inconnue!<br><br>Got to stress test a new browser based photogrammetry pipeline we've been working on. Expect more user friendly experiences soon!😉 <a href="https://twitter.com/jnthnbck/status/1426209217866776577/photo/1">pic.x.com/pwur0ysvry</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/E8rnikRXIAAy-Vn.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,UklGRqpGAABXRUJQVlA4IJ5GAADQKwGdASqoAjkBPrVUo02nJKMsJnXKwYAWiWNuvnEwzyOdpnJPwnOf7N9xf+PS1/t92Xw3kie69+j0q/3L0oujdzxHpu/yHpmdUh6MfnOetL/gcjgl8ed9fv5v918sq+v8N/h+af3gTvf4vgL+tf13oKPT/S+Yj7c/ivPA+986/37/Z+wJ5peEd+M/7vsC/0z/Y+sd/yeXv9t/5PsMdML0szmuu3MajQS617WYf+m9lfB5jNsYhnEaIQ9mWNoERO6izyG/LDuF6o0fgRrJU+grJ5qlknl25JiFlGN3THJ94X8aGnNvapAlbXhEuNrgEgLd8OH47y0Kzrzi3XbmM2OJt6SuHYmzzJ6raegNBeA8TacJ4kg1jQhTkTIinyuPXKgtJ/U7YVCum6e5AlgZALaUe3s/dGViXCLcoFg3IkGLMDhpBYv4khx15xch9ecWMDwlYvyVfaL4BKGU4/KMqwfiG0+B7X4u2Kc2QgA56FYi2d0YE1ohBiMHJryoxNGSpMtJhZAI0lk3NxQcaOzNJQJiyJxiBcNy7vyp2Q5l2I4YjM6CII682nL9uu3MajrMUryc18LDInEf61cUHQ7IR/2+hgRYbCDxJS7CJ9vaGsqMNqc3xzDlROO0M6bBELb8GgiYXTYlBTXhpsTXGX/tqeB4exrRkZ2jcVCHf2tM9YMz7y3/YgCZsjabT6b4OYvDVNg2lm9hx3v0gMXk+Cjb+gHyWxOysILyD1/DYpBiLFK81oVoGZXIXFyV+q38KI+6DLW3C9dQy3LQf9QnzJIzqp8onhWn6ZtS/3dc215KiiONO7K737+jwukZnDRY31rLLHgpcnEhPO97xha7awpRa62PqdfVBwUspTgfa8J9VPxtUNnLkzbYms2RqBKNB6YG6EhfPoENqyhmu6prQVXrOUxH2GTv3uHHXnFuvX5xInJ4ERXwHf8ErxVJSIw/Wa0IRMyB86IHVmZkEILlVtqQMzQdQH69eDgxpsaMxZynlutZoO46uWh2vBcCLPZQHaq0MpbF6lHoxwoGyyivbtq5g3rNyJqpzgq9R/XAoG7w6M3GNucfiFMCpQHg91YHTim4k1yTt125hYS36paytZ6K2x5dB1JN0+LLitpbo+t8IsG2pvK56ZA+UMqKhhr38tDDInXdozr/5kk3o1tnqqnMZxqsCgpDSWIPu50OcaV0TirzyZBVqY5BChftn/rKmi7kJR0sAZRcJTIOcJG2FuIpyCe8KU0UatAb2l3OyXpJq5VquL7LGCUfbk8MZ3DP4mdtFOCOblea0K1jHyHpxwnPU7ETgQuaqt4OdT0gJcHowCtKyyjavQP/nbIs+5cowe5NUT4i3zsIommgDeof9Vx1bTbEbidWlVHs1ZqH6IFDkUNWUdp6GI5tGFs+kHgTDKA1fLR5ArIRTZzSGzu5lK36XmwPPdPzzk/HcjhIAAB1D8sKNt0ZBnSiUBtP267cxqOOpp9J4NB9g57pj+514CxIn73u7GIXD9P+mbQGPTp7zDMZsHbvBJfZpWpJdXtbUelcf8Oi1zeAldHQhdI6dTiFQzKE3QHM44wCRS7ZHAc+FN7KlwTzpNMKcsY4i2jfnUSLjclDQ53z6yCKXLg3mtCs684tPOUxYUAKesw/igZXAwuVB+6fI2RQo/91uqnLB7mM3PXvoap+1RSLkJeWvN/11dzuT7WtwDeOaqpKAP++YMt6GTS+DAFTGO6u+MdS0FHab4nGSAKQyZeGqTEWPfzkr6wDWWB/JD1O5snGf96KlDOajOMkHIMaHfdXbLtZ1IwPR0CFHYdP81R9fJntdK+T6YHIc0AzW4PRX0SufTbXIFGo4ywRcKaIxhXYAhvRw5jKsfBsyvxYSSQD575qy3jKKSDGHdHrkV7ZOLv1GLBZ+iK96yDLDBprNwQodU9KdxtZbe3zRLI4ir3Uc/GkF+I8ZcA92YJSQ3BhS+/qUsP26k4fC5Kj4FFAqiAk2V/f1/+5XKZA8k6DjFfJ5/LpsYHNc2RCyhhDSpjajgzFDzWish6hDQywKyQNvvvuxGcLDkt6NfT1um/IZb5peBCPD0H2mQHmXigGqgW1PNlfcybVqWJDz+E+ULilCabWJ29dOWE8DDh7gQ8QFCVaMqlWzb3qCSphHqD6yVeYjVpRo/MDNEsV84684t125jUGnHt9zGtEmoii2sCWCrCgJ9NXPgkf6CLLjzSN6w9njgTO+7s7Cr/TOkoj7m+XngLUPYF0LbfXInDPbicy/bp/6UwKN7qzgCCcaVCMvevShsiMzJAh5trzbIRbaJvYFVhQANxggt+YLf5cRDT9PDpRw/arm2qRYDBwdKzvsKc7AnXnFuu3MahMhkIBc0p/FnXwdeRPpbL6BlGtGXEXDIlzQBsJ/Bqxhu7lPLLHDknzAY4z9WJPjWHJuc/RNwUZZGltEipnfX+bY/Cb2RuhsyKpDVDeXdqJLotPVEhi1vILgDb7DqbZQ3edFPt5eDfdAmHHLQrOvOLdduY1CGkXJ+MIf9YGZ3rWGTbto6bWh2JOoOgcHFHvD+f/AQKSPJZuswZJAAR1ufIejjl2mdWvb9kugByboSQFCK0tZPFkYHYUgRhK29w0eiLAJFN4CxjgbHD8FEFZvQD5fX+KOOvOLdduY8JXClilzSdGhspLfxsL8RTJbR3PxQCcoQkIWyztsIAa305egAxZTMNvx1syjtVax9fhqkmGOnyeg5cYbCpOzvPpoO7gGqjofVtqSoimc/QwkRmB43lL1HHXnFuu3MajKD0ynAXZRd94bmFSwq1nl1sZ8sVwnNQ8NDkWFsS7AXUTjLWNgc8g3ycZetypnYjS9CWeiINTbOKsNU7cBWn7eyw0yMlZah/ZgC/9jx3SKjt1HopPsLFFUGtCs684t125jTK5F66+8pcVerhcqrrunSfT19byGEyvRV5Z5vXKqtMsb/4YWJC8QXPi6U4U5dYIb9aED86pM4NiW/jlosFXy4snC4nHB56BSgCaodduY1HHXiNFqFCCF4aZ4ySwJJsokxI+R7iJGf4gR0THmM/yJOSGbzsfAEKX5NE0EUo3UumoZcbCZ1tT1qeuRIiE4be/50ftwE4i1XWLLtla6yUVPLqcyKwu1POLdduY1HHXlDUf4Eqg5P/NBs2AJD7C7MSuog93onnkHmUOwCXlAqaVmL0JirIezFhkfe8CIBdwGGD+jQ8wkP6X2VELwpXmtCpwAP79PLcWs/IBEpOMiQ0Xg3ajGDJL7jD+rZ2TgRVCDqoHvqCtd7haEMv59rHzehCbb5dusTNIm7NUb0n6SlGx7wANmQ5cNmZsvqqOvUe5VWb8uTVyTEhrKEO7YPU3E1aobFn68RSBMnr5brLuO1rOfKOl4rCB5ENg8sMKEBFWivHJw71zmEmPuqQ0n0hQ3/c0G+jGkAzLBry6AMIYcHdlmbDU4Y4px2lICLaeKKXtk+22fPhqd80NUFXAiQC3ArCP5mrTa3UQc+mx6yRTsp+euTpuLznHaOW9517qEWY1+GqqHVQ0U+y1JpkBQMXQENWKMvA/cTZriXIls42CiWsA3evc51jDO6leySl+GfeFe6p8vEs2vyUU3HnmuGfxPGa5Ybbe68UqLRx6tEpRZEOcfeBUIQGIzzsEfXmU+LVeNjUfMkCYB2tBS6S5YHDSBmLflrDgmB2gRSvMJD4sDRk5rrcsUoA0iyjyycMvS5J72wHh+6sWF1lHsxispv3yycDwvnvMVql1cTRgbXbNJXxkRxZHZGjPeAYtF/PTuEAxswBVK8NXjd0ccB1btPjGl0TAbMcyotdv8GSnhI/DAXI3PyfMxbYeHujlwLDzBcg8NUQgiNPXuQK38JEkKD1LDN93yMplUnqdKxOVqKs+aIStdt/WbkmAEQNjWAK2XgArEUW3ApykxPNgsl6OHDe7ufGqJTzskNy5A96YI6q5+4irc7hSV7AJF7gl2i0/3TkqX6+Tvhbh+2M57GcV4WuchVegMQOlwAbwR22igncxyZT12+4zt7MXqJGfvDoBVe6XPNQ8Q1EltKrBgTvAa3pisSIJcVM/f9A0EobawnN0mLwZgPEcXdgGiDrZPIIEClytc4V5VaQpTE0jaNnruyMnnvxLmN3bVT3i4j6S0ion5LTDaplt8gfXltlV09EHHaVPNaYPq1BqVSV/aG9Gj5c0OE35nNLFttNXeJbN6698PRnXyEKDfnICnJttSr3EbyBpJyCFpKpP6sUK7f2JBEsb5uQX9SpMlRcwsq/HwRhj0Pi+5VqamuHh/yUS59MgKpthuP+i/Nl6eRGhRL5E887G8BsAsr9Pjd2PjhLEJuO5ZFHA5+jywVRVHUDklOZ4qfZKiqJ9Y4zqo9OmiSMQ+FHM0mx4wk1mgv1UkuUTHZeE69H4IqkNVv8vfSySqENQmGW5lxFHPD8qid/aJNHmDYLyGwnhzsynwRm+ocz0iV2uuwjmF/TBm2M5UXnINswALJL9gIhX1rxOhfEt2ChrlEXn8m1aSUjWlyQuLSPmlfd4ypG3TLrLPohlYRAca3WDBWfpuxpUSaCceFGBtIRNXhCN8nxI25aqUhAbdd0D8OQ+87MCHDGwGBoUAT9z1dUFIbKYlqX8m9eQ1/LDIQJIGQT2lWr7jcwo33sj6T7z3nSkOSggfD3nEq5jNtrIS0fxm4BSnpb/v36fwOl6/B4fvIapBny05v9jYhiBv9znzov9YX5LGDjqbzT0xN3BXOneS4MQtZE5807gm+2Ptvm/zPD7jdsFFAkP9zQO/l/K/jNuzcWNkX/v0oJWx5qEOLwYeXWo0MDabBK2yp2L3k7Y0r3dRbIARZRKVVk3OyNE5AJTE9Gt4LRclpR65/bO3RO/N8v3o5KNRWZQbSZ4QJih+Jv8HpscTRIl7bKHerrjoASpD0w6MPnUOz41p+2wC5PwUGV8p0JcVH7ukI6tnpUh4xy4P8Dw8mrmWmuNZe8ICrqj4JoYQ5O1vT+63a3ogfGXpwa6sAzOSHkRTravC/6cHLNQldAqbGUY2T/9ldnB9+Z81/cq787I6UnbT0LV0u6tki96f+Q0skv+H407WeI+5d4N99st5kXyMvL0R0+XJIVYuS8QKHJIFbVbMZvcCpFxoesR37xERTgEQBeaf7rQsM4HcMFQqStahRmfozFSve2NiMhlychfinfa2YYmAdAEK18dO3q5QUC6cvpcmkdmynrqldoBiulx8QhP71f6+ns/HvQ7qVdobNJq6ulLpXEtS59YwQ/ex3+8C4UF/IMSYcCa8VV7TAJcTo+1btb+EoArylq4Q8yFhlE/jNbuy5NBYHCxRT04NPTpqYuqpYCdTNjoZzX0WYwjf6y4E2BJKw7WGzITN0EtS+b72HGZmxQTxECiN00CD0UJ9yisGIrp1PNJzfc9lB74uJGmQ63QWPmgaXVZ9TxWge8za24rV6zvRkiQn0Mpjd/QPyqFHNbCfHT6dw5F0eqDC5xz6l7p+ym1hR6AqCsFSmVdjVw8MzNGtPObycpAgSWVLVDY34Y7w+jLEdylekH8Czr/hwljJSnom5THYU0gDiHhdx2iDxlUbMQff7GP1nbqD6QYBDxRP+6ByB4ESMgctjpL2MBS01n7nY2+QaB2KIVM4wdG/6ZAE7DVU3Zmtx3v3YGOMDZQ93SgjH7EILBEZM8ujiyg344cinvzATDoaUlapSrhNaaGB0C6UmOQJSe0/5uLoI4SJ1b0O9vnKqhEspwZMmhXlgBEMn1i5dYPFmhdOH9WcNXMvwD/tXoKNz148+ey2DPKyHOoAYSnhcp/X2tYfAc72uKGauI1nPS6IjQR2I06ZzDE1Y9HGGS0XKUI9RH8nX6nXwd9wAb/0iZkJ2KSxHbZ82XgiIAI380gFyKTe4hpaA29hxcd/kscMtqWil3DY9yTxbJMGn8MTWehJabNF3Ysi8A+qWohYTEYE2nByk5UH6aaeWIBMn25J9PUZiZaal+2dmn6IwdlryZpFYXkcUCs3/dJ8C9UuyG6fQMCrnvtKl2i++1POK1jkE+h51leC+06JGydnb3RJ4LzsP74zKYOjC+y34PotupdJ3DXK3TwbPnpAniOA8qxeu5Cox36MYfn9mErHJVHNKpyxtX2bX27Zuaj+alNF3qNlTxtdJdHPHglb9pwPDkSuepd0Fc4OQCvFK+wt3CkqTHgCovi0lrJFg2gJREy8Kf/k8KgRaQgYflnK6+NTqnn+V1Q7vzuiJEDFijfw1wyeUgI7OVY94kMhx4Mym7uODdtzQYyYj3oTCF9MnqnXSZwDptJkyA7Dpo1wnyzZwv8w7OsJ1p41v6UpXXz5hGVQFAU46QckdjlJs5v4O8+17U1GLz/pKYngMt81rTAdNwfs8757pfjLTRk+G6o9A71PT8PL15gYKcxH4belvnRH+ubqVkC5Ds1Pdhagz1EK0W7gmW555UD/8GU47gJGul4Gh1vP/8tCzw6Uzc7WVIo8SQ1+Y47b05Lismb2BiMbwJQRmfLKnkGJhZGvVw8jtDS5eDxcUI7sEX1/XsGQxlfyJRTRrfGuY12rQ0/R8CsBUDypxbWbnhYQqljkZXLozjr0lc852lYkIbtEB5zDLGXNehlvgdg9OPIemm/ezIbmjYNl4V0W9MnwFWP1nTtpZKkwlPCSfgA4FOd8d2DXoubvb5mRcEwzA9Ar76gDCf8/lUBrNLbsB5bLcrnBvzfmJOfA8BjsgBTFZjxmeaZyNsWyV9fvdcG65eEc+svMxFc8Do67lwvCMcZOyU0bO7a+k3bWrxpqfnbyhN0cRudca02fwGrqPs/gqSjLEa3oPZje7kK/TI0Z0tgC5EIDhdM4N28ZPpPp14sisSSCIK0A8baDIA7xx0wfBj788qxYozrM8cH75I/OLofaA6ZOieuVNLXp0dPeyqvtsZgtCWOT20fIe2H3stDrUvFX44zlkiMYTbrZRXqqVei74+hAJjuYBejy3gHVpfPVRnaundDYQ0gzLc317trqa8dTvVJhgDrm59c9frkK9MzHi10UI5f/7AxeB5WOLQcBHdRXiE98Ja1biAo6DkzIbkCyzq0nDTHH9/l7apDC1JZnWEKXFq8z8huSOtAR+6n9GNtckuK3qqAfJ2D/DQ287Or8w1cexXlfYkyE4qhjBFgYMCyPeVZyMOHyujdnp/X0RYO3t+gEoE68oGqcH65ScS0s9AdZ5LGIHNE6m20DYTVJh1unBIS7X7hlFfAXGgk9fup53u77Iyl9xljq3kPL+N6jpUcgThBJpUhvG6gkShTCjTP9k4DpOaay3Ww3dgQWEBa3jSKsZ02TAKdYNz8oo9WXOO/408jv0okrEPCDSgnk5sGH1q22RDGGWVZmGdNL/7VCcXI5VZvwXp3P2Muwa7i0pxSgWMgF6AdRBHYxxjdbCUyqu7jqOpikGFMiG0HrdAnD1XAGPvfl8LfY7alz7eRmh6Jg68AdppWoAH9RI0kGjiDzIed140D2lmyc1wuOcUud447J7L/Tb552/ovYakBSXPvHV3eoxk5KLXOcp4LgsE5Qog8JCYdnPEggSh8PuFZGXAiUQsNaEL8ca6tS+eW2X65JvgFD4MG58jCppR0+/hb3DW+iQmkpo4pkLQ7d7KkeCW+DYfSUIQMdEBQJuY0XYSu1CJMCjFARk9euCw1sLisxMAlwUD7n8L1IlhqoZzEm2qjbqZ/YdSz3as6OmcixfBzbKpSx2dUMOkeZZO2FZYed4OY84kYDWfkj4vqNtCIcjnMeBx9TewTQPwUi3J2SeiAZe+hP/mj+DrbpMjAn1xZ+J+Fyb7tewJkkz4an0UYpdUJ7q1/Qn2ovqRfwXreAvX6fhZ4y5+Gv26tFvwv7pwkMrUUgsrVEIqXO94HlR8HbA5zUY4zX8vguuAR9OteEXbuCw8b5EdF3wxRLCpO3SWs+1f765ASAvJvhXsTwJ4dwh+pU8Q5JOiMNP4k5JZexIxlyZMHeEBfVR2GMaeBtc6PKGz9d0iorf5M4J73Ut6y0hIxsmmR6r+jU6M6G/V1Rx38GIRUn6IKj4Ko1e8qykSTt4yWSvJ4Pc4JwKQQ9//1yqDeKhl2aJbfEbg/Oh3T16ue3t1LETm7syEua66SNZ9SA70nL79aU/C6LH8YHlScYO6P7dbQHlfDeF9znB3WHH7tJf8fgvnWXVgK+6lqqp/gBBI50W8T4i5Gp0SJXKLXDaM0SVbdkfwVhXkhxw4ybh+t5xsbbORPcn/mHHtEJ5tlPu7OFnH0By0O628euT/ovRl5Bbs1L4gpsrWUdlSEVeqWBRPfak3cPK8SYqk3drgWRfCbakcS/tleIgxJR3IDF0ELyhDokPiJTwGd2s/De90mP9oU23oopAr3LQphui+WbTBDgJhuUTWhbqjnyKa3HWHeVMnpxJwn0fHEUiroxfgj+cfMErY00hFTX4km6QKIdDTuGqTqtGEdTCMJIcgMAMLQPwTdeKZ1K/v4GVDjRLiVUIP21X4xq6cRcgETQWCt5Qth6BrIPnNGoDZramsykOkjlw5SkxJfZAIsPSZJWfZQ4wRCDpNNcXQjNUS58OmQBuqGX5mJZp/ZevQXHGYYBk1mbapHDOedECDI/1cJOnwZguw/zfnG0JV9Ix7Mk1sT/5Bd1bGpPbQiSqNyJesyTqaxC1hDOli4SEhS/jpbmb8lIhHcA7+gEqeLuEQUnm0JwHrQUCmsCodqncRI+IMx39SGFjrjPpn+8NXrLkHgNbTsYIrc84WFQL0CcG++Mg2XdbnXcYNjBcMiiJeNHCblSqEzH6jXep+QPTsEAZlW2NpbSssATCr3M4+b6gGQ7G/d4v7u8K2NWFgAxWxzfn+xhUD3mXSYiRhHQHT2ApUmb/QO2xk0OS2p0vK11Tg7HyNP+SFash3Of0ZIzw1gpHFJvcgthC0Pa/oWir4TmIocM4YtY6vHsS37S3sS4F5ZE08f0SqHByCj9kMF2TmKap5cmZ41NEbspvgUlIWsjeUAwuF51/UTVQbzqaV9ZCrlvkr79YbFEhqvJjIN//bY8sBJ6nPHdWscIpwpvc8a5xqhcrsbSc1sjO0ah8pb31+xrgdNRfi5dzzuKfLGZiu+nujuYFRbd86odGZfYa6jkJqTXcKlTsw8GKBoOiOYSjFRZG3cOvz9aOXDfzCgIFT+182fHWZ1M9egsHQ9XhYKAkQ7ViXrYj1Rhnl58TLUXsF+qjjn8aW65ArueL2ybSTiB+wrckgJZYyre7B6VVz0Pj8aKLWbVaTgFJS9x3bELy1ehI+0KY4+HOrKyWFgSj5d4TYctgdzwCkT52ICkMALOSzjpp24X9KjbVN7lI6lUmYrl/9tKExxP1Qk1FntuUv3T3lV8bgAJ1+HeOxS3RnVmS/gprVwWhuwj1ieJ4JCX8BiAQM0CnaiDuVcnxvp77Gq9PH+JzESU+lKbQuuAN4/8OKNC1Qh1qF5z2tLHAEsF75rHLmf6LJXqTjTVSoonlH3g2R+Gch/uzcR2D8vmlpKYy6iTqxfhwC9A7ZmZCMth1wVA1ub77/CjIwhmLIwti6BksYYJg753EDgIEzpzvh80h0fsT9ApF6D9zqLFmk85v4/mTUX89S0FOlXse1Wj0kKmTwi/boa/J7cEcyUL891dR7ocTSgLvslkZOpvFrfBE33qvWPCyiDfNAkY1T8HVUPOTo2IVgB3MgINqAK9CqCU+8BEdV2epccw1333gmxa2LGWJkZXG996JmoCLoZOu+sCYdHF+Kq2QF7jApOniXPcx/tgTqOHZTEU0qtEF/yYKhU65JDysMUGYRwgxUBdObSouEDPAvM+liPAjhp+8nhJATh2xstBQbkfdNWvONMnLwzC+Yh3X07Z2bAFbA+tvmdx4jGFdpts5cYQbRs2EhhA452+GXHyznBPVy6qwnITe5dZV6ini45eQIQQ611Ar7Nm8lbZSRahCef2h1KRXMamMAKwRCAMCKeyTCGP9pc2G8nNzaoDJChfORYUZ0/IKuy/9hLj05S4kpBNLb7sSzOVfrHfZb9SS0gHBAqA/wNT4Yl8dKeauJqg097IBh0qEsy9aNnmup96pmugbDmb/f0sDwjY/e7OldJlHekL2yjLudOLeTxtnn4LzBmXN0mMcuwT0MIVwFfp4xByKmaCBNicUz9Uh8bjbl9D2DjRWg5pwlMKHstuVD7tQBY+iyuO8X45HBKrdXclK0++IRyMnKjz+zfJDYmS0AWB2AbzKcFiPEmFbOzpqtxEviUwPzbULuzfsKKBoiwao2YT9/ZsgHCbU+pXB3tfbs6EU9o7R8d4UjiORtFuk/JlZ+gy1UvuK4vSeH5dlwtpT/tOZgEf80Ja+b8ZwvY7SnQ958St+dgcdeeTft7j1r2qcRf0t/ueVQ+JB9jeDen0Wp5Y2UBrn+C+tMBDE4gYvWxN+a4nX2ox0G9qWVbY0j07FiM8VAcjDvqBTd9G/5CMelrQqvY/oPJIx2cM20biCnF5tYKvy4J3gOgWBaL1V0O7Zw1ch2uFzfLaa9LvtOSauGO9O0vRbbp6eMMChR+KHHBM9ByKgnLGtQX5/vMNp4lIJ345+wj0d3hu/L6i1LfTBTThdaPiWYnkHkJf5Hu4CpIvYYyLx6gCN1PSYy35R2sv2DNEB8s5hQInhUPVVIbBQeFLeiQYaLnn3kBFW3pDpS7tPQsEjvZzDCFolxEj8F36ntJ5YrG7QuGfojDnoWSC3X4GdxZM01a649me95oU+aDvVaND2MMM2RV9Vnnd8GwB97sLULxCPi4CIF8s/HNpSfj8q/0TF1XPopMw7O5xO4iJHcsbWFSDBYiu4JQNQJ+tdb67ejSGQIYtgE8vNlV8A0l1xNzShd20VqOtj4foXs7cJXefQDBwxmVRl7o0gDkTj/dSLC8XbRf93GmmJymv0mwT1aXuDTzHrrxDC46KPlEuubLaut8ttq/Or+TchJYR93RlgAyBCYbTLR6LM3Yy8a2ZmmDvGMkkzi5EJ3qLdoY/+wJnkSp/8CURYxeP8lTESU5Cwe5U8OIJ2Cwo9Bz6pkFpeAEQ4ARBwE1dHiByGnYsRQL6nNlQrM89CHaZZZUAXB+wqhGeQLOUjt3ao8T38/Wi2Hn1sQ+vvEf3nQVIRv9VHuZGtmAcnKGtPMHeKEAZSujbeqfGztS1N0FyQD81vLg7zF27J0uOtlKbqkz7Bg0mbLJWr+uWZ75XqlOwyELFKxu12zUjALeQQ51uW3BlKPB1NfB3/s7mMX0IUdtYJ0Y0Ks1f6WWgIPGV3IHaGld8xX4UIJMtdgMcYSJq9ysF1D+CrOYB4Hu6f37+Sc+3h2Wy+qX7tEXC2B4hsb37p20sPsdSR5l6tsjK9kY7zVXWX01msgmkTPEG9FNRidA7GZpj9kSxvDGNmfEaPdrMNowUX8USwoMM7ywbNKEmA5rw9uXQDhi4vpvLDpbNLo5LVHAjCXB1I3XFWVtEjO/51Vqhoyzk6rARUxv4//ZBIR909iKTBuCO5YkXnM38eb5j6fdBErN/1XH3t3ZzI86gOmJ8OwQkclc+0avCyAFB3JEMeZ2yZoPvL4qGB9wGoH3mznAI40Norjb9TkCeVPpufoYZl8fPULfqApG5uQExM8B3VmbV3bgDjyItqD8zT2TaruTC3/OlmBKoJieUk9TMXXQk4mHfye6yWBCM7xpn1pTXt6+V403AqwzMqAVP4KILEJ+YUFAOCICI5FoflQUeVDvv66v1zrpkxi1Z3/efp2ReT2CjtVX7B5hxlE+XYgkGanvL/6X5E02IV9e8jlzKSYXORNv4/UFt5COtO1r5V/BIJOjbi46wRE+bRmUaX0vNWMhy2Y9x7TwwcKMvZjd5ibKFpXiUdP+izfRUnnYBf/oY5xWX/YW9ylRXevssI+D2dBnXITwpm+dDSjdK1zOnPPhWliC9p7jJuIyWvgbCbMEZ1sa5qcOutjYWL4ewvdo5s5AT0HL1FhYarV5AiWPV7ix7f3sJLfCC00ycQMzakgLgC3q4UtoswCNQWh6LM1TDTFv0BZi4PZU5CbzUp2dsC3LnCEM8qLmA+5q7y6LQTLWCC5VbYpqmVC9zMwRe6c9XUob58k3t4Z6C1SODTAdlRrf1So2wh2DLuD2BRoRdobVheaXzjApTCkyEmxOd4Hi7qVFZDv9YSLr1CCwfSky0AQHi8BxcGvmQygchuI6QFfgR6PZnkN6BTiJPI36uuNzZqbCzA4IrBx1vwUgebpwp47En2VGawLnWEQopT7WAYXpnclgkc9nOhfPlX9Z2juHxW2RxBylzA5SVf2ofHVLWYTWjQI47YYa3VgMiIyAQMEQBUUBARplmqAZXw0mR4uLq05V0AYoIWYFUmPOF+m+UpeUpo5YvAKvCd+uFlfWTiJW57qw0dMAfKItNaHTYkoAD5buFweVZpquoJK4UE/00GuR6QwwO5G+VyGcLUvlLbTfUe9iMUDFomH2dsIlhV3ND7kXSd0e+DOoEATYhZoPZEvBaS+LZcHjQwDCnypflKgmbypv0tssvU+m03WXmUQmeTxUECnY+T8AtNys6LF4dbGB6rZfExq2Z7f988VMjMm7+4priBLs4i3YcLfcYnzBIcWFR6N7BC7OvnCmCWfqG1DCBswtL6vtab9i/7jPvHFa7kiXNEolQhLPcbBg4jWTHM0UXSmr3VNtjl2bfQRArdfZ9Fn6c7V6eG2uuZzQbOlg/HmAGWtBxMtvcUZCtbjQ/BvBrBVZqdF+r179ANYSPDmfjqNfJdwOkCEBiqyaUKmJuOvKvQ7UsjSawdG0y2KQbJLcZY1ZMXN6kLOoaI3umlxr4adpNMlMSA3eT5OYP7HdzUbmYiWvQ6iRNcTnA2tHsBXRXbUoahEWZ9gj+qUwfZH4UoTfw0xAZLiXkwXThpk0/dgqpyFk6OLPHKp1F315/96KiKilKu+E4ZE+gpfJQIu8Js4OlxupN+V4YpenU3p0jO31dA9aTwwid8XajC5vcwfQlZU7wU6ygJQ0qBK7IC23sIK8ySdXTo/1YJ3APDJE4TKcJyW7QLJw/D6IKe0e72nk68pXXeHWBeHjXViFbFH/yaQR22qUWNiNL4tCTVOATW2H/q9bL57EH6qBCNGhKcKvtIpHfhFTTI6/DE/ZCSp8QTesVblDSIN6Qia9F2EGrbY52hTb9PlZyWKC18HIHDx2Cd8EV9ZMeGY+KcDnNsbQcw9qz7Xf19tG789dnIMLHbaCPYqH/uuYjYhWxkF76KZoxQAobTbs5ZcukLdhhD6xjitvkalHx1N20sDQ6ZwApEuWZhZeR1iejwlXcOIwGqLBpH99+Ac4dNK8RMrJSYiZEMPJgWD7eYwbg3Cv24mA0/PslkDBBjRWmhSqO5Q2wkbBI7q0Fm28QCZhk5DXiMYqH2zfwYtISqDGbnCZxjp2nhWnHGmqsDS5QnE/vtPFdegMHG838nOf6AF/vER0d9c0CeckoyDBUoAAABjgEKyFNyXSICC0vrSYElOKaHMBj1rnEDXQgdHbXnuaU5Hkuh46f12ApzR85axDsjH9jIuE3gmJEfKn4g/niXfi+5LdJS9p5fclve0gAsixrpqj+h9VpJmEkXxfI/OVnSEfkcWUAb42ZihMYsZwPqowLYKub3veCRAlPvur5uCqT3d7jc8BRhQs8DDetyv64UVp73lp18UdJnSdSA12IU7HXles1HWXzGo7U60DqXS1583T7SrwCeq8lr3E/a70y5O9uQhUQ/1hASqf/fvS5zByv9bIWYcN2iyU1QP+l5uek9Q2cV8e0D0zhtG7Spe971OtTIljY5LRALBiaNDavD1cjZ+pbOuRpOeyLwS44KFQPZ42vlM0DLsu61zuVZLfpTcHCFptfEp8c3oWqZu/85wKl5FF52O3u2LmWfAKZpsslsvohPBFY5EWYCxe7vws4Y4TUm8AbDuaiI/SA8Y0AjK/EZCMaCHUhK+eEOoOZBlIEMtp1H2APgHys8IYNX0yLMy7SDZGS60AjQYuxXpHKqO9bOWnkVAIpacwAiB11VWnEtcJyGeTNH6B84dr7TwYze1NY+kDJwSx1CTdToqe/32IkZHxm5DKWctskPRYuUpQk4sz6XuEzcbdMjzWL7YKUg5BnFRdsIJzRyBN0xcP0EE6W4p1j5PGi6wkF3q5X5hHzXRkK8TVCmGPQY2aAvbOJqg15t3PReqV5Y2L3/jP58M63tnqxXXNGrd7td50eTph3nBcIAT5OFuUeqXuh8+PNJigy7PMdQaDdPzi9dSLG6xRNJcubW3vQ+AdzZ+RQFt6oxlsgE2AyNJecfH7eY+RpVuGcEMbLNp9si59KLaItGavmPC7rSooVxTRmaXXyeOOK7bdvaETxTGTSzypQLvq2lPKjqYVO949hMPSMFxFC0jiat1KqFTh+GEj5ZNAS6c8m2MBwqWddmdmvDIQDSBNfXf9ZmhiFFZkhCg2dLBqpNWYQKHVTdXISP7cNIXhqm64TtB/eRd/HCYX+aQpF61NJbKNoZnsGBjCoN3iWogoZ/NUbQPz1jsJzrVpoQ6BZ9JTgrNMvt7X2bDPm8PpmAzgb4lA/O9TBwjQPXP9C07zZ2/qPmOv8rh340HpF58Te+NGAM5VVvU5pXqcvKUOTzwqzFXHswSvuOhxvOlyJEojb42gcGXyGYdJJAh1FdLPsyrP7GBnw6TIbO+7CW2/y/TM5a0l3ZAvvrFOTJp57ZlDFUT5AkKPKpm53JE+zuUwJovINrTckEH5v+3YmP1k3FdV8sbr5Kx2ma2fVdkYKUdThtA1zOsc1Ebd+w+iq+D4CD6aXDBuv4bTCmxI4qRSu8a+ilnSysAwJ/91W9IlU0+uJ09WRZQlcGg8N380/6mJpcyiT4VAgvg1JLVBFai0NdVY8aFQFORlBXrlE8SEwSdPXoIMPyFRxkKpUF4nzBw/iqDXO6PDAJP5qYwxZkR3EJAPc0wxOHy8Rs5GseK8ru7nEE3mBQF34tldocavNVklr5zRPsWVVE8dBsFJbI7M+gcgLEANoITZyTubzksm4/R4I61hFvBM2PzUTwmydEY4Km0Q5T81mGurtBmKCJ12LGJlzQslTcvQHQTS107aq5Yk3vgsBLNz2a4XTJ/fdxcgGEw4OSdPpg8w9luhkt0mVXpxwQBxWfU3Y0TfKIGKuKV3PbIENsux4zrqyp2x/R6dfIr85PVt8g/ohchvbnm6+8S/SYeh6ggDfEunO9H6wj7cw4ccvM9J3yw8c7M21y0b4CpWqCGNMWaOZ0gGHAc83bJgN/TIAsV/7gZnJuQEyytqYzFdr7ko/0rScMWe2Lt9P14Y0ntGJz8Z9U3vrDfBQ2egGMDDlIFo8MBiE6+mAPx+OnVoy3tL7e4FG8lihhHdLxpN74zdqxYEBN6yOdW3kJeUoPxyuVtedMoCvEN1YHX5ulB1TsrjxuKeTuYTg5oojXMgFYhftotXMCmc2aovFgwpJEjsfcc0msyYyQ/1s0zzX8NxwbLVx++SzKxm3EOGXPZ2hou5sMivxcNoydsicrmSIzjdSR7YY8K5Z0qNgWgSjQ3Bi9336946J3RzF5lrOkus/4gacDL4Sm7t8NnYvsMfDD/vD3LoSCBHJoptv1klk/h/1PDvc/jpx+3f1ttA9PXyR984Yq7v1/FH3gbqb9rrM0/VpGKGNnrX7NYcdlSTAiN4gMZfuwRh7na7QK72H7EFgzKkUZAfJtWjlRNOjPkj9/GbAWhtpdjl3zSWFA1uVM2helHng1u33S1jgGhf7e9Il0YyoFV28hiW0baK7zt6MtoJ+ofgbE8IOj92WOfmS3n5auvXFezD/kON2m0l6gnutJP9gqHE4bMcwqW8yfoFEG2T50onut83Q6ofY/yhwOn00GZexlu8LE47ifq7Nm6RBLHHcnnr7u7jlj9LLG1FQVQSGuq4Rdz62nLGpyUJFuZvAT2ZdKNxyEFqK3PbSL8rCeukbIr7h7u2EKDUD2trpcFJIZO3oQifbKd3S/cwltEQ4AM0u3LFbrJPPwwO1ovPD4aFNDTp2++kbIV7vVjSIMZC/Oio5JoUIM+h0vRgkdD8AEAbCFOPYeyg4UJV3xyP6oVGHwtwXEy8MRRf4+9h9hxSknuD8GvkbHzKSAdnWn30y5atxJbg5WJlUH6xtP6lA6+e11GIix8+rXM5NYAyKrSZu6aK+B8wUV/4nyqx6sqAASF0N0eOITFZmWLwQLzFMpKo+jzWuAPThjMwLh/V4u3fgmKhZI7FrO+2BAgFiMNC8PXxEzzqeheo/zmbWnedEFbpE9RQg4xSEf+J7G7FIKnhnyWoUgtgoACpSLsrN/IOU0KQf8galnucQAAAADaWsjepisFz4GmyNz6FX+LTeuIMQ7Jw1QhxXd5oMg7r5kdV7X4RUMtcQsVltp9xx4hZhCw3CW8W8dLiVA/EjXif/L6F2sVIzCpyhxZ03nC4rK0U7OImJIzqtgjGxBk2zHnumvdmvVDWALsCePjerp/wdwyAfF/IY7tiYbyteQkq5vIDb2XjbS/VZbb/DtInp6l9O0WSD/GOaJqLpahnbKiCwqNf+c+fa15drxZFEvsEf6AvqS63/uvheKNO7fELt+WzxmfI9crCyY1FBJGxI3VKAKCVKj7MHDO1GUPzVHqwuma0OvEY4UXbiKAeK9GfgNqvNYcQwxPOLbpqoRi+OlQQAmGj/e5FcVQvwSIPX4OdyyOqVJpIH0PO3mlx4NNf8i/q/a5bRcYfYb3REpbrIlAeGrcJY+Gp5flIGtU8gWcCoKW/D2NqMpb/moCiz+mD/vXNCmcjv80Z0pGiYgd9pG0/DcXavgP2EKt7uZpEx2dZ9QI3Vn4i9ZYCChPbHZF5xVs4WKQr2harUcXmQG59C0yCmf2MEQQWoqx2gqpWG0mqKohtlm1SilhtozuPopMTTrBQd15QUgSXHtUBcLeUKdN5qovSbXokzapNGYZLz9KfhYnfSW6qtv3om9HzLyCW0RDiPasyBFjsrsfcsLCqSTRYFGhFo/hD6pY9aV0Sg9GngEIoTcvOU9szz6T8oQKJIRL4oECGrzIKwWG0kraNf4jd2LNWolXcKV5H4K+x6/hkqqml9b8rZFmtjepYCfgr6Rg0yKvfBxr41GQDh/i504G544emEhUUEYjC+70k0iz7NaKXeHQ1g4pp0IPq8uVRNUQKcixjjwcaj2kjOzkAL/DjFSM7MWOgpnAeMBNVj9IEWdyrFcdkJrYiQn9p4fJ3QYRbtObW8HQeI62jrKyVxKWUwwAAlHkjJeHrlcb27uDgpUWhBMk8iuq1xHRHjl2r8ofrIGth0bqVex2zTDpE0Nua1/1z4g/6TBu7YP97CHTQJbAsLYIat4RzwXph/JDxbRXqEISeVhDwRA1VmRZFDIJijv/qRiwfslYLCdPrQ9u6Ftj+Kig3QIdv59NU24/5yYHilf4/DR+osJAvx1XikTidm9ymZoNgcZLKHEIzKfSfSQgbeK0sizfz5rSB3Z0fRVd1mOj6XVBO7QHb1IRdEh2Kl9L21b6oYxPK73O2BpWPMZQeBm+W4tt+qrLo+Ub5b+xyCnjru/aEVPcQM//VaGw6z0aK31ZnCUuC+a43fiEu36SKWh5kZiq9drTvBdBsiHjoq35P/VeVVFqLe4ZvjDfvT8vGdcQ/OdOvesg4YblddYlTYGpBshDfQ0kE4Va8KKMmrOW6Bou/lSebrhHIOqrumZIisQgfwqhxftsv96o8BXnEZ86MDnkMRBhHJ9VZcEYtdBVaGLagGPDHTO3n+7A9KNyoaFUNy0Ago/zfrfrFKy2S06/rJeg7QHauwoIGx/J/wbDq679O0i0moevrMJfSS95TtNLWCJJsAkZjahRZHN6m8QGu4xqbtp9MliZ6fkAF3rAu1a3ptC9NxMkpzmyuUSwuIS6q/BDdRxwgYRkgfYYj0R5U64/lQCAdVVg8Yu5D1EQpHqI5nOqhI+WWj582B5lQdDYnXB/hRf0mwhk9OdLzCNSXHm+IOaLeSUYsonADn/mkHeMA5BBS3oAcSf6bfcNrOBpFP+9hULU1y21zaT8ddkZD7Vy96xmWjlndh1Fc2Hw2mL8Q8LsAvRDXQKLO0//x8ZSMgZmFWeQATpUvLuueUqqtu8rpuZ2ogLTbZGaJ9IkOdXoGjYSgsFUngbi79g/BrCzm9KZSHB0Vukmd/VVHAzLs7BmE5DPwUXwS55WzE1NV5bryxvDwGMiLiuYLMadP3AM6D893E4lLKIU/gcxehZVMvMta0M1aLoAkBH08NO7dsd5bzis8agTsMaXq2ujaY7MzvmaA7pYTDBtaWlGcMqlL0vOQmad5SO8ZsdscT/tUQg/S56GVwEs3jqCV9oY2047FbUAYK1YAaT27sAW4WD9TghKOBheZLm0wsJlh/E4yMGr5K9HagkYTloY9rgLEhuQV/7EAAAKmw8bZp1ITKP/RjqNscet7SUXoiVz9oZaGIcIdnwS8z7gIX+alPZH1533Z6cnaX+gWCUe0nsbDVkncdJnDKWc6C0iZxu+eHqJ4nBE4L5pczaaslBddCDoqGAzIJJ7fdHIkG/vxV6hGRwv+mk8aT586aYDBsK77FTSOEhVyDKV1COtfHyY3/OsygQRYoNQSnQ1wdNI8fZnoT0npZmCBusDrtp0Tqo0ErESb4NXzQi3XPz97t/tv8ag4Hev8K0eprwoCjpJByV62mI4n0tRtzcDbwg39vy1qDsPxhfKlR+6ZFbNIoEcW0xRu+CrC0za6E7yoNaDl0m3IkmMX3CS91q5Tu8tfJCeReqr+D6q7XoV1l0WE2dwySHZte04vJyUivfCOVLyVBhGvhpUDIfficEZf7ojq2ed149cRjke8X4/UDnqfgL7+JJU0xbpts7Zey8zA/cmClws7CnyKk6+hNe/g4K8rVwsUdRjgwXyNXXZvmSCouyFTviysO6o4jFbS77IJub3+qaK5AxiVxKUYUqRf0wed/ZxHw5kby7j/R2uYBIfimJauCNo5N1I8+KjPJub+LTpDf2grAPwN3lu4COfCQ3ZQ8iIywPBdus5Ky2VjR2QstH5Mb0HvXGG5ftPPt6Yw3MalOxxGpjRq9WFpVulSo7ZKEfZWipY/9RxJT8nvYobbaYFGgaeKlnQbehoXqWkuNNRmkNSS0S7jCNgPQzpHDTf3THVPeZxTdAB3aL3uv7xiEq20PHoG1FhQgANRvjUMwu1WudDxfxUbASl0XUVx48W4TZKzYLwoY0PeVwh4tD6gRFqVqQeOVHKsHcZ0ddUzEmnUU9jo5bgz+Kh/0hwHD3MTe+1kk8BZBFQgaLGX2vIcvx2/4Ww1aFZ1iCfbkvwaCOFnl7e+hi2KP0qXbINfOznps6Pak5lrALs7rLmCefGgq8+Nh1U3wayPm9mtbmo6eTQEpEepG5dbAJgdaU+S5UA8Bo3CVgyaZLY7IvAMm1FyIgTeAthwHa6hC9StDMdoKnOZkXB5+YThCdlEzC46HR1jcaCbfT89fCZu9UNSXpSnUYlGV/arBX3o3Hd4Y1QlXoO94zia+2qMjR0FQ03fYygwMAv5hzG7FQATKIPtZTmz/r1elgh3BFExK7EoniAAgrRM3zCtQMxvPtJlamhb8e8jjTTdl5cP98GiAPcjiLUBe5Xs/GciUSFluyYEPMxIvuSlGTKHQ/q0TAAAAmH0CeZY2DtH40foG4bSxlvg2UIGND3p4RXCM6htnyW9/M1MG950UdDFinGcP3kh19MXJ7EpAbpYhxYIPez9k3tCMLCub+SbGQKVHa0edXUmcFu+6ZvujH4Fknd7/OvTakxfhe+a9JDNsoLW/paXSCCQEd5qToU9wlWD3csc+m3SYK8dgaty6zcHW7xQTz+szp1iEtPS+4PBhk+GyIwaSsafknUmTbNt4/HwDar4CacCxrpKYEASJIwt2rJZeIgIurnqcpIBbLwM14AAN0TuOJjMF3JsYpG0ydp44zDjKfXDYZP8Ij0o6i8MQBpWZOtKgV15jkFnvyaxRYwrJUcptQmrBIMo3miPKgRILmoYJsbFvC/OLthNKVUeKxy7sZPFw8Lq3o73J7NTb4Y3BAoZmnim1uYqtUZjvj80Q3oD+GqKzyFmjIBVP5Gk6jDzhAnMe9xcmeuSIzlV1z70ePPWA9/aSuWyvCIhmdARphOfF1R/nG8TMwnSbKO/LGaAOztzI0xxg9C3VQAA9434ZoiWD4TuIm1bxAQGNeUN/pxe3QoJfx4TayZ9bdDqzmMrFjSRjlxaX/xVm6ImXZ0SL+woRxWJrGdUZIvwJQ0+ZU6gHErgzz8b1g2OiOR9583b9DoHxWAa9EjNTD8+MPiuIUTIuQ//yS87ACH/rTodnWgKOVMomrcSnfcUPmDDleeiWPVUP/oraVQoEseanbRAyZNCgzVCOCevMT3WHocRYTTE4Ztm4dDCy3F0bog0oTvQ4yq/CNCcIQwfYG5M+xi7N+X6VHkEUTZ1exaikcv7cm53RLhAuIpgWsTD1qwPZbve3X59Yu70eIuKonfcsYN0N/I4j0qeVsDe3xdykr4buvC/DkkgWnOb6a1bYTAxkv/gRBzUKHemN2e9doJ7s20q7OIgGEE+ya6JnYA15NEgULXKTPif5lHb6NX1dcMwmp5cJSFTF8yS18HdPB5kkJl4S3nv9K8OALTB9ueDys7C4LiVVAV84ht0icyn6UzMiNhLsGrlF6uBltelS99yRDQWYFNlG4uDS8O2yZP3/a0RAFFGyjk53GU4U+b1yoUx/fXorqXVzTc4egew7KPkjhejjDjL9xaKze8V93HRkCirsClsHPtfAzaM47ELQcAAAVTgXs9UKgBLzMDhXMm5+Ytu6dr4wBaqcotGKqAUdBqraWK7krUAGSQZjSXczTW6pdWPUXo83cWFOBtAM3+bR0VT7x+9Cg7yPkpcjZ776mUGZ+WiMCqb+MWf0ZbNivgvvh9lsDSW3ObfQNHMsLmuKugoUKVTCHm+zytMRZYrNALKDAlNYpp+VEhyPgI6cpJ0uQU7vhCaeUz9LpV9oL0kXfT8npkoknRyGJ33UZ1T/cwnPOXenpYsxCi05/3i2DXK97fXKAqgEms8ic4oEpF9eHD6f2f6zT7oqk4RtbvE1sfx0jezO/oFwZVM6ehpNkUDQV/xG0xhE4Jimdi9WphqU1O2b853MFjVCHiWsD1wixuN5a6p7sDbT+iodZq8oibgnv6RpBE8226L9Z6cUnXe44ZE8HaquUrQ0/9HujTmEH050pdWh96z0yG1CXfTBmt+By+FqfhOt2R5LesYMYa3MIrYO6e93MJS9Qpn8bfEMvbsUU6YN435aWtCg2wwgbYU/xPcK1mQ+TxMwL6FVMycPrA0Xhr4UCkcxyftMAyoYQk8LDgsT5sJ9kOzaTE9tgy21uhsZupWNPggWM4dy0Dv9kkO59sSV6Y2rolwMiR3dDTROAjn4NhvyYUVrU+EUEnTmoWbcfYB2iJ1dcpY9zwQhvNOOWFp4hY7HysRFhKvH2OQY8FszkFG2wbtWCFNI6rjvieYlJQmSyVNq4pEuuPOwYXrQVlkV7e0IEvaLFn1efg7Nty+Fq9u/gLuZN8WgnY7J3VwcoQPkNRZdDcb0mJf76+20NZ88eIMAo+y/HFmcuw1wbG2WwP1CK9v9xVp3yphYAAAFKbY1KOnlaiY4T4kCYZYGECsTy9vEbM3rYORJVj0JhXILioHXo1Fyk2ZDzRB50xekDurmqbFUJL8eVopFpItgKRdlm3BSqYouuyAq4zeevOURcvAsKVeS9Fzxp6GZ0VZpeVwWoSCJ1PuV7Bjs2r7heQ04Tf4Xu4hwTpzna6EtDAeQd5q5S5l1AgbD5fJjdm0Lf2IxySKaYRtWzfD8pjh8wOXKy1fBPs6faCk8KhwN6srRcx0Lm262g8uUtEEJWU20wRW5niXBJLuMC45CJmHHo83c15SQEX7/DSroJMgje7tx3cKolm8mn07D9da8ZpH0oSyywRSmZjh8/BkNye0gLyhur/Z3NX5x3faiyVYAWbfgUhdPqNvnHH+COfNGBJwyVJvCFWfd2enBnJZC87UWU18BnGlm7p4Ix5UYklqRK6qMVKqQQ5zdy5oywm/yXeLH89FoGhEjF/Oe/XAyOssuOgJtR8FyrgRsAkYVePL0WwmillfkqMM7FeYAIETcwCYGyjj0zelNTOs7eTrKzZqCJkBG4lEhYC4ffGZ7jfYV3dCOAa1KuG1WXe3JE8cLyPIAZ0L6GOo5AZbcoQxJmKYx6aFCVkf2JeqWM42DszNp75Sr6h9KYImsPn3kXsLuHbUr+/bZCCo0grQUS8RXF1w97bVgwRKEEvNhk0+PglJVuvAUkAKy3+ToCXLPRGZn/K4/tU/t923GFHleBQjQlWEXAqlE4KkUmno6VluWOhAftrgi2tDggLgDXt2VIIAAAoCPAHUs77A7WjVxBOXaNXKAPhJNcrQp0JAcIND/M4duk4ibUTEPMrQcegqn+01k0Bi5VMBJxv9ISrLpSpLZRXwp0b0K4EibJsODgu51qp9Iouzi03CneZdBkhWx5kwRt2bj60o7LkOwvvgHfpY3GhIsD6lerRvU57RHgCDmQD9eBIIeHp7A7g0xWr5wrxaW/oAwrIi0v0EU7nJJ4QwCaJDKpG0NgHopVpsPAO7r2lvCSFH0dTiODhIgv429VJtZOtqA+3UvqqTUpIzvMWaWtFFsXa6lgvsooDHWwx5LWlaQmQTzEq2AI/9KrtJyOaYfid22fiCTaW9QrJDWcJ6iz7New4tFxfs1XoI048+ZFfbq60cRsa92K1koAu81T4AUH2z1QN5eOpBYw+9cMXGFJXq9tL170WgQZ2+BO3BhDBwlpRnetCxavFLdpp067/Y591dUEOBwGvK4iOxsVt49rRpgmpjxy0TgIRM/duf2wHCimsbb0UclGj3CIZ7iAhrqNdqvGcq4a5H+LUQBlIkWe2HWriRlRGKeniPTHv+Nhim+rB2Ko8GC19hFJ3SYaHqvN7Yh47XS+NpREm0kKkDKnw7RDHNwlWS6WbN1uMaGfNRinoIFyIrW4zwqltJ7pJn8vIAAAlR0iKjkSUFQJdeNHKpmlBG8FWMjSFJXw0iC41LdCDFbjS4LhkycE1homC4KALivOxcdtL/1wQ2r0wflenwOdfKaIyOTdvQP7E4XYu/aIdqmPd1Qa4bNQIIBnLi+9iS1dXycSlsJuP+UnFeKtD7zIu9jAyim6UbRmEaSROI0+EyFyWimZBbGLe4rA3oC+wyOYd/kzXF5xo5cjD66FtdSZhg0UqBTZ9wy9AfT6dTyzW39MgUtZR4JDSDWil7rgSn6vgwA2GdkzZIkizTAfWwQGDVsWbMElAeKzfnazzt29u7aSgEzFdxGnRE+88uTsHAZueFzCFFxmMk/U4BSQlSX1IDYwj/7DRDfylsTexy5KRezpFYAWQ2dlw6mc1w9eIsOP3HL5rr7Nhn0t3JGaBJRDYXpSA03ZwgB+ze2rI4f+DW/O56JIJGEomxg4e5/lc6LlxWZWS1EmvZ8oESTpMj3ii1knTVIcJLFQzpBeQcPPcyWVOgxTjPfDUgf1xpesTS34NRHSFtExyemHXlOgbyuZbKrKv+Ghus/yCMXx31/Q44jR1USEirg7IuQQQC0rZZu4D13yWUp9yE/rxdgtFi9vNjcLzgx3rgKbrBFCKszRA4ArmkqrZNrpNxn0QlGBLS80svoVy9/4KI2Gx/PVC8wgj884XaLajxykT+5c4q3EAAAN9OxOiGVuLAAN2/plEhNem3kZ47DUG7cPofmvxQZC0foMuEGVSKALMmN0o/+VepTQv7zN3YFEAt13TuN9NLXilrQenEUOlcz22t3cbEM0ro7HQc8N5x2Nw9oDdnxeIVy401oJg4/zIbGBBcqt/XjG2pLvrCgR8vNdXs0AKI0o5I1co2YIotPHwCqVPWQUFqA4JXiNdzyOIxknEm4vlhfAJvdkbd5RIDb26cz0lt8CLwlWPaMwDC+wXReLafkf0/KMq02RS9g0eQAgK/stxjwpuukdn54Hzefoxsk2bPn80RCEJ/Er2n/fWdGwm81WsV6SUbv06BrxKVIaoBu8kox7IkKVmIxf7NUigQkjZqUnQAARCsjfsdu9okqSoECrp/YzpmsL+CXT8e+9O5/2XJDUtEBoIDCE9jSQMk3ooo08npIYjkASNgAAAAAAA="></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/jnthnbck/status/1426209217866776577"><span aria-label="2 likes" class="social-embed-meta">❤️ 2</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-08-13T15:49:09.000Z" itemprop="datePublished">15:49 - Fri 13 August 2021</time></a></footer></blockquote>

<p>A few days later, and...</p>

<iframe width="512" height="512" style="overflow:hidden;" src="https://www.myminifactory.com/object/viewer/612f7611a5e89/l-iconnue-de-la-seina.stl?embedded=1" frameborder="0" scrolling="no" allowtransparency=""></iframe>

<p>(Try dragging the object with your finger or mouse.)</p>

<p><a href="https://www.myminifactory.com/object/3d-print-l-inconnue-de-la-seine-183619">L'Inconnue de la Seine in 3D</a></p>

<p>Back in 2013, I asked "<a href="https://shkspr.mobi/blog/2013/09/should-wikipedia-have-3d-models-of-sculptures/">Should Wikipedia Have 3D Models of Sculptures?</a>" I speculated on how soon it would be before <a href="https://shkspr.mobi/blog/2016/08/reducing-the-filesize-of-complex-3d-obj-models/">Pirate Museums</a> of illicit and unauthorised scans appeared.</p>

<p>A modern mobile phone and a few minutes in a room with good lighting is all<sup id="fnref:1"><a href="https://shkspr.mobi/blog/2021/09/ou-est-linconnue-de-la-seine-en-3d/#fn:1" class="footnote-ref" title="OK, you need some decent software and the skills to tidy up the model." role="doc-noteref">0</a></sup> you need and - WHAM - you've got a 3D model.</p>

<p>Huge thanks to Jonathan Beck for the <a href="https://web.archive.org/web/20230608114815/https://www.myminifactory.com/scantheworld/">scanthe.world</a> project.</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:1">
<p>OK, you need some decent software and the skills to tidy up the model.&nbsp;<a href="https://shkspr.mobi/blog/2021/09/ou-est-linconnue-de-la-seine-en-3d/#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39969&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/09/ou-est-linconnue-de-la-seine-en-3d/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How to detect 3D video?]]></title>
		<link>https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/</link>
					<comments>https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 18 Apr 2018 17:06:53 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=29470</guid>

					<description><![CDATA[Here&#039;s an interesting conundrum. My TV can automatically detect when 3D video is being played and offers to switch into 3D mode - but how does the detection work?  This post will give you a few strategies for detecting 3D images using Python.  Firstly, some terminology.  3D videos are usually saved either as Side-By-Side images, or Over-Under images.  Colloquially known as H-SBS and H-OU.  Here&#039;s …]]></description>
										<content:encoded><![CDATA[<p>Here's an interesting conundrum. My TV can automatically detect when 3D video is being played and offers to switch into 3D mode - but how does the detection work?</p>

<p>This post will give you a few strategies for detecting 3D images using Python.</p>

<p>Firstly, some terminology.</p>

<p>3D videos are usually saved either as Side-By-Side images, or Over-Under images.  Colloquially known as H-SBS and H-OU.  Here's an example.</p>

<h3 id="sbs"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#sbs">SBS</a></h3>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/Finding_Nemo_HSBS.jpg" alt="Still from the movie Finding Nemo. The image is split side by side." width="960" height="540" class="aligncenter size-full wp-image-29475">

<h3 id="ou"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#ou">OU</a></h3>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/Kiss_Me_Kate_OU.jpg" alt="Still from the movie Kiss Me Kate. The image is stacked vertically." width="960" height="540" class="aligncenter size-full wp-image-29476">

<h2 id="metadata"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#metadata">Metadata?</a></h2>

<p>My first thought was that 3D video may contain metadata which the TV picks up on. This is <em>not</em> the case. If I display a still image from a USB stick, my TV offers to convert it.  Additionally, the TV <em>sometimes makes mistakes!</em>  If it sees a scene which has substantially similar content on each side, it will offer to convert it.</p>

<h2 id="detecting-the-split"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#detecting-the-split">Detecting the split</a></h2>

<p>There's a very obvious horizontal or vertical line in the images. It's an optical illusion caused by graphical differences between the two sides. A computer can see this line using edge detection.</p>

<pre><code class="language-python">from PIL import Image
from PIL import ImageFilter
Image.open("Finding_Nemo_01.png").convert("L").filter(ImageFilter.FIND_EDGES).show()
</code></pre>

<p>Here are the edge detected versions.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/fnedge-fs8.png" alt="Edge detect image on Finding Nemo. There is a faint vertical line." width="960" height="540" class="aligncenter size-full wp-image-29477">

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/kmkedge-fs8.png" alt="Edge detect image on Kiss Me Kate. There is a faint horizontal line." width="960" height="540" class="aligncenter size-full wp-image-29478">

<p>You can see the line, right? It's incredibly unlikely that a random still from a movie would have a line in exactly that position - especially over several frames.</p>

<p>I <em>think</em> this is what sometimes causes my TV to make mistakes.  When I play a split-screen game like Portal 2, the TV occasionally switched to 3D mode erroneously.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/Portal-2-Split-Screen.jpg" alt="Video game " portal="" 2".="" the="" screen="" is="" split="" vertically."="" width="600" height="338" class="aligncenter size-full wp-image-29481">

<h2 id="detecting"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#detecting">Detecting</a></h2>

<p>But... how does a computer "see" that line?  Especially when it isn't continuous?</p>

<p>We know where the line should be - either exactly halfway up or across - so we can look just at the specific pixels in those locations.</p>

<p>First, let's convert the image to monochrome. This means we just need to look at strong contenders for edges:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/fnmono-fs8.png" alt="Lots of white dots on a black background." width="960" height="540" class="aligncenter size-full wp-image-29482"></p>

<p>Converted with:</p>

<pre><code class="language-python">Image.open("Finding_Nemo_01.png").filter(ImageFilter.FIND_EDGES).convert("1").show()
</code></pre>

<p>We could count how many white pixels there are - but that's unreliable. Look at how noisy the image is.</p>

<p>Can we improve it? Sure! We need to turn of dithering when we convert it to mono.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/fnmonodither.png" alt="A screenshot from Finding Nemo. It is reduced to just a few white pixels ona  black background." width="960" height="540" class="aligncenter size-full wp-image-29492">

<pre><code class="language-python">Image.open("Finding_Nemo_01.png").filter(ImageFilter.FIND_EDGES).convert("1", dither=Image.NONE).show()
</code></pre>

<p>We can also shrink the image. This will bring some of the lines closer together, and make it slightly quicker to count the continuous white pixels.</p>

<pre><code class="language-python">filename = "samples/Finding_Nemo_01.png"
image         = Image.open(filename)
width, height = image.size

small         = image.resize((int(width/2), int(height/2)))
width, height = small.size

greyscale = small.convert("L")
edges     = greyscale.filter(ImageFilter.FIND_EDGES)
mono      = edges.convert("1", dither = Image.NONE)

mono.show()
</code></pre>

<h3 id="find-the-line"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#find-the-line">Find the line</a></h3>

<p>Converting a Pillow Image to an array is easy:</p>

<pre><code class="language-python">import numpy as np
pixels = np.asarray(mono)
</code></pre>

<p>But there's something annoying/confusing lurking there:</p>

<pre><code class="language-python">np.asarray(mono).shape
(1080, 1920)
</code></pre>

<p>Yup! It rotates the image around 90 degrees. No idea why!  We'll need to convert it to check the vertical line. More on that later.</p>

<p>When converting to a black and white image (note - not greyscale) the arrays are filled with bools. That is <code>True</code> and <code>False</code>.</p>

<p>To grab the horizontal line, we look halfway through the array.</p>

<pre><code class="language-python">ou_data   = pixels[int(height/2)]
</code></pre>

<p>To grab the vertical line, we rotate the image, then look halfway through the array</p>

<pre><code class="language-python">pixels    = (np.asarray(mono.rotate(-90, expand=True)))
sbs_data  = pixels[int(width/2)]
</code></pre>

<p>There are now two ways to determine if a line is present.</p>

<h3 id="total-number-of-pixels"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#total-number-of-pixels">Total number of pixels</a></h3>

<p>This is the easy way.  As you have seen from the images above, there are relatively few white pixels in any given column or row.</p>

<pre><code class="language-python">print("SBS total: " + str(np.sum(sbs_data)))
print("SBS mean: "  + str(np.mean(sbs_data)))
</code></pre>

<p>If more than, say, 25% of the pixels are lit up, we can assume that there is a straight line and this is a 3D image.</p>

<h3 id="continuous-pixels"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#continuous-pixels">Continuous pixels</a></h3>

<p>Some images are very noisy, so another strategy we can use is to count how many <em>continuous</em> white pixels there are along the centre horizontal line and along the centre vertical line.</p>

<p>I'm sure there's some fancy library for Run Length Encoding, but this simple loop is all we need.</p>

<pre><code class="language-python">def longest_line(boolean_array):
    counter = 0
    biggest = 0
    for i in boolean_array:
        if i == True:
            counter += 1
            if counter &gt; biggest:
                biggest = counter
        if i == False:
            counter = 0

    return biggest
</code></pre>

<h2 id="results"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#results">Results</a></h2>

<p>Running on the SBS image</p>

<pre><code class="language-_">OU total:   15
OU mean:     2%
OU Length:   2
SBS total: 159
SBS mean:   29%
SBS Length: 59
</code></pre>

<p>Running on the OU image
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/oumonodither.png" alt="White pixels splattered ona black background." width="960" height="540" class="aligncenter size-full wp-image-29494"></p>

<pre><code class="language-_">OU total:  113
OU mean:    12%
OU Length:  77
SBS total:   9
SBS mean:    2%
SBS Length:  3
</code></pre>

<h2 id="certainty"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#certainty">Certainty</a></h2>

<p>Based on my unscientific sampling, if more than 10% of the sampled line is continuous, that's a good indication that there is a split, and this is a still from a 3D movie.</p>

<p>In a video we can sample every frame and if, for example, more than 5 seconds worth of frames have a line - assume that it is a 3D film.</p>

<h2 id="image-similarity"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#image-similarity">Image Similarity</a></h2>

<p>The above techniques don't work for every 3D image though.</p>

<p>You will have noticed that both halves of the image are substantially similar.</p>

<p>There are <a href="https://stackoverflow.com/questions/189943/how-can-i-quantify-difference-between-two-images">many complex ways</a> to <a href="http://rosettacode.org/wiki/Percentage_difference_between_images#Python">detect image similarity</a>.  The simplest is <a href="https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/">calculating the Mean Square Error</a></p>

<pre><code class="language-python">def mse(imageA, imageB):
    err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
    err /= float(imageA.shape[0] * imageA.shape[1])
    return err
</code></pre>

<p>We can split the image both horizontally and vertically, then see which pair has the smallest error.</p>

<pre><code class="language-python">from PIL import Image
import numpy as np

original = Image.open("Finding_Nemo_01.png").convert('RGB')

#   # Get the dimensions of the image
width, height = original.size

#   # Split into left and right halves.  The left eye sees the right image.
right  = original.crop( (0,       0, width/2, height))
left   = original.crop( (width/2, 0, width,   height))

#   # Over/Under. Split into top and bottom halves. The right eye sees the top image.
top    = original.crop( (0,        0, width, height/2))
bottom = original.crop( (0, height/2, width,   height))

#   # Calculate the similarity of the left/right &amp; top/bottom.
left_right_similarity = mse(np.array(right), np.array(left))
top_bottom_similarity = mse(np.array(top),   np.array(bottom))

if (top_bottom_similarity &lt; left_right_similarity):
    #   # This is an Over/Under image
    print("Over-Under image detected")
else:
    print("Side-By-Side image detected")
</code></pre>

<p>A more robust way is</p>

<pre><code class="language-python">pairs = zip(right.getdata(), left.getdata())
dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))
ncomponents = right.size[0] * left.size[1] * 3
print ("Difference (percentage):" + str((dif / 255.0 * 100) / ncomponents))
</code></pre>

<p>With both, the lower the difference, the greater the similarity.</p>

<h2 id="speed"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#speed">Speed</a></h2>

<p>On my crappy laptop, the basic line detection algorithm takes less than a third of a second - a quarter of second is spent reading the image from disk.</p>

<p>To split the image and compare it takes a similarly short amount of time.  With sufficient hardware and code optimisation, 3D detection can be done in real time.</p>

<h2 id="conclusion"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#conclusion">Conclusion</a></h2>

<p>I don't <em>know</em> that's how my TV detects 3D, but I suspect it uses a similar process. A combination of edge detection and similarity comparison is a cheap and easy way to detect 3D features.</p>

<h2 id="putting-it-all-together"><a href="https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/#putting-it-all-together">Putting it all together</a></h2>

<pre><code class="language-python">from PIL import Image
from PIL import ImageFilter
import numpy as np

filename = "Finding_Nemo_01.png"

def longest_line(boolean_array):
    counter = 0
    biggest = 0
    for i in boolean_array:
        if i == True:
            counter += 1
            if counter &gt; biggest:
                biggest = counter
        if i == False:
            counter = 0

    return biggest

def mse(imageA, imageB):
    err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
    err /= float(imageA.shape[0] * imageA.shape[1])
    return err

def difference(imageA, imageB):
    pairs = zip(imageA.getdata(), imageB.getdata())
    dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))
    ncomponents = imageA.size[0] * imageB.size[1] * 3
    return ((dif / 255.0 * 100) / ncomponents)

image         = Image.open(filename).convert('RGB')
width, height = image.size

small         = image.resize((int(width/2), int(height/2)))
width, height = small.size

greyscale = small.convert("L")
edges     = greyscale.filter(ImageFilter.FIND_EDGES)
mono      = edges.convert("1", dither = Image.NONE)

mono.show()

pixels    = np.asarray(mono)
ou_data   = pixels[int(height/2)]
ou_length = longest_line(ou_data)

print("OU total: " + str(np.sum(ou_data)))
print("OU mean: "  + str(np.mean(ou_data)))
print("OU Length: "+ str(ou_length))

pixels    = (np.asarray(mono.rotate(-90, expand=True)))
sbs_data  = pixels[int(width/2)]
sbs_length= longest_line(sbs_data)

print("SBS total: " + str(np.sum(sbs_data)))
print("SBS mean: "  + str(np.mean(sbs_data)))
print("SBS Length: "+ str(sbs_length))

width, height = image.size
#   # Over/Under. Split into top and bottom halves. The right eye sees the top image.
top    = image.crop( (0,        0, width, height/2))
bottom = image.crop( (0, height/2, width,   height))
#   # Calculate the difference of the top/bottom
top_bottom_mse = mse(np.array(top),   np.array(bottom))
print("Top/Bottom: " + str(top_bottom_mse))
print ("Difference (percentage):" + str(difference(top,bottom)))


#   # Split into left and right halves.  The left eye sees the right image.
right  = image.crop( (0,       0, width/2, height))
left   = image.crop( (width/2, 0, width,   height))

#   # Calculate the difference of the left/right.
left_right_mse = mse(np.array(right), np.array(left))
print("Left/Right: " + str(left_right_mse))
print ("Difference (percentage):" + str(difference(right,left)))
</code></pre>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=29470&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2018/04/how-to-detect-3d-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Reconstructing 3D Models from The Last Jedi]]></title>
		<link>https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/</link>
					<comments>https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 10 Apr 2018 11:15:44 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Star Wars]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=29240</guid>

					<description><![CDATA[A quick tutorial in how to recover 3D information from your favourite 3D movies.  In this example, we&#039;ll be using Star Wars - The Last Jedi.  tl;dr? Here&#039;s the end result (this video is silent):  https://shkspr.mobi/blog/wp-content/uploads/2018/04/walker-text.mp4  Grab the code on GitHub.  Let&#039;s go!  Take a screenshot of your favourite scene.  Something with a clearly defined foreground and…]]></description>
										<content:encoded><![CDATA[<p>A quick tutorial in how to recover 3D information from your favourite 3D movies.</p>

<p>In this example, we'll be using <a href="https://amzn.to/2pZu15Z">Star Wars - The Last Jedi</a>.</p>

<p>tl;dr? Here's the end result (this video is silent):</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-12" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/walker-text.mp4?_=12"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/walker-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/walker-text.mp4</a></video></div><p></p>

<p><a href="https://github.com/edent/3D-Screenshot-to-3D-Model/">Grab the code on GitHub</a>.</p>

<h2 id="lets-go"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#lets-go">Let's go!</a></h2>

<p>Take a screenshot of your favourite scene.  Something with a clearly defined foreground and background.  The brighter the image the better the results.<br>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey.jpg" alt="A stereo image pair. A young woman stands in front of a stony building." class="aligncenter size-full wp-image-29265" width="960" height="400"><br>
Split the image in two:</p>

<pre><code class="language-_">mogrify -crop 50%x100% +repage screenshot.png
</code></pre>

<p>As you can see, 3D movies compress the image horizontally. The separated screenshots will need to be restored to their full width.</p>

<pre><code class="language-_">mogrify -resize 200%x100% screenshot-*.*
</code></pre>

<p>The next step involves a little trial-and-error. Generating a depth map can be done in several ways and it takes time to find the right settings for a scene.</p>

<p>Here's <a href="https://docs.opencv.org/3.4.1/dd/d53/tutorial_py_depthmap.html">a basic Python script which will quickly generate a depth map</a>.</p>

<pre><code class="language-_">import numpy as np
import cv2
from matplotlib import pyplot as plt

leftImage  = cv2.imread('screenshot-0.png',0)
rightImage = cv2.imread('screenshot-1.png',0)

stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(leftImage,rightImage)
plt.imshow(disparity,'gray')
plt.show()
</code></pre>

<p>Depending on the settings used for <code>numDisparities</code> and <code>blockSize</code>, the depth map will look something like one of these images.</p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/different-depth-maps.png" alt="Different depth maps of various accuracy" class="aligncenter size-full wp-image-29243" width="533" height="715"></p>

<p>In these examples, lighter pixels represent points closer to the camera, and darker pixels represent points further away.  Optionally, you can clean up the image in your favourite photo editor.</p>

<p>The next step is to create three-dimensional mesh based on that depth, and then paint one of the original colour images onto it.</p>

<p>I recommend the excellent <a href="https://github.com/daavoo/pyntcloud">pyntcloud</a> library.</p>

<p>In order to speed things up, I resampled the images to be 192*80 - the larger the image, the slower this process will be.</p>

<pre><code class="language-_">import pandas as pd
import numpy as np
from pyntcloud import PyntCloud
from PIL import Image
</code></pre>

<p>Get the colour image. Convert the RGB values to a DataFrame:</p>

<pre><code class="language-_">colourImg    = Image.open("colour-small.png")
colourPixels = colourImg.convert("RGB")
</code></pre>

<p>Add the RGB values to the DataFrame <a href="https://stackoverflow.com/questions/49649215/pandas-image-to-dataframe">with a little help from StackOverflow</a>.</p>

<pre><code class="language-_">colourArray  = np.array(colourPixels.getdata()).reshape((colourImg.height, colourImg.width) + (3,))
indicesArray = np.moveaxis(np.indices((colourImg.height, colourImg.width)), 0, 2)
imageArray   = np.dstack((indicesArray, colourArray)).reshape((-1,5))
df = pd.DataFrame(imageArray, columns=["x", "y", "red","green","blue"])
</code></pre>

<p>Open the depth-map as a greyscale image. Convert it into an array of depths. Add it to the DataFrame</p>

<pre><code class="language-_">&gt;depthImg = Image.open('depth-small.png').convert('L')
depthArray = np.array(depthImg.getdata())
df.insert(loc=2, column='z', value=depthArray)
</code></pre>

<p>Convert it to a Point Cloud and display it:</p>

<pre><code class="language-_">df[['x','y','z']] = df[['x','y','z']].astype(float)
df[['red','green','blue']] = df[['red','green','blue']].astype(np.uint)
cloud = PyntCloud(df)
cloud.plot()
</code></pre>

<h2 id="result"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#result">Result</a></h2>

<p>Here's the 192*80 image converted to 3D, and displayed in the browser:<br>
</p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-13" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-small-pointcloud-text.mp4?_=13"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-small-pointcloud-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-small-pointcloud-text.mp4</a></video></div><p></p>

<p>Wow! Even on a scaled down image, it's quite impressive. The 3D-ness is highly exaggerated - the depth is between 0-255.  You can either play around with image normalisation, or adjust the values of <code>z</code> by using:</p>

<pre><code class="language-_">df['z'] = df['z']*0.5
</code></pre>

<p>The code is relatively quick to run, this is the result on the full resolution image. The depth is less exaggerated here, although I've multiplied it by 5.</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-14" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-hq-text.mp4?_=14"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-hq-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-hq-text.mp4</a></video></div><p></p>

<h2 id="creating-meshes"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#creating-meshes">Creating Meshes</a></h2>

<p>For quick viewing, PyntCloud has a built in plotter suitable for running in Jupyter. If you don't have that, or want something higher quality, viewing 3D meshes is best done in <a href="http://www.meshlab.net/">MeshLab</a>.</p>

<p>PyntCloud can create meshes in the <a href="https://en.wikipedia.org/wiki/PLY_(file_format)">.ply format</a>:</p>

<pre><code class="language-_">cloud.to_file("hand.ply", also_save=["mesh","points"],as_text=True)
</code></pre>

<h2 id="better-depth-maps"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#better-depth-maps">Better Depth Maps</a></h2>

<p>The key to getting this right is an accurate depth mapping. That's hard without knowing the separation of the cameras, or being able to meaningfully calibrate them.</p>

<p>For example, from this image:<br>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand.jpg" alt="A stereo image pair. A hand reaches for some books." class="aligncenter size-full wp-image-29261" width="960" height="400"></p>

<p>We can calculate a basic depthmap:<br>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-depth-small.png" alt="A black and white image. The outline of a hand is bright white, the background fades the grey." class="aligncenter size-full wp-image-29255" width="800" height="333"></p>

<p>Which gives this 3D mesh:<br>
</p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-15" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-simple-text.mp4?_=15"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-simple-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-simple-text.mp4</a></video></div><p></p>

<p>If you use a more complex algorithm to generate a more detailed map, you can get some quite extreme results.</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-16" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-complex.mp4?_=16"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-complex.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-complex.mp4</a></video></div><p></p>

<h3 id="depthmap-code"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#depthmap-code">Depthmap Code</a></h3>

<p>I'm grateful to <a href="https://web.archive.org/web/20180410075642/https://timosam.com/python_opencv_depthimage">Timotheos Samartzidis for sharing his work</a>.</p>

<pre><code class="language-_">import cv2
import numpy as np
from sklearn.preprocessing import normalize

filename = "screenshot"

img_left  = cv2.imread(filename+'-1.png')
img_right = cv2.imread(filename+'-0.png')

window_size = 15

left_matcher = cv2.StereoSGBM_create(
    minDisparity=0,
    numDisparities=16,
    blockSize=5,
    P1=8 * 3 * window_size ** 2,
    P2=32 * 3 * window_size ** 2,
    # disp12MaxDiff=1,
    # uniquenessRatio=15,
    # speckleWindowSize=0,
    # speckleRange=2,
    # preFilterCap=63,
    # mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)

right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)

wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(80000)
wls_filter.setSigmaColor(1.2)

disparity_left  = left_matcher.compute(img_left, img_right)
disparity_right = right_matcher.compute(img_right, img_left)
disparity_left  = np.int16(disparity_left)
disparity_right = np.int16(disparity_right)
filteredImg     = wls_filter.filter(disparity_left, img_left, None, disparity_right)

depth_map = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
depth_map = np.uint8(depth_map)
depth_map = cv2.bitwise_not(depth_map) # Invert image. Optional depending on stereo pair
cv2.imwrite(filename+"-depth.png",depth_map)
</code></pre>

<p>As good as this code is, you may need to tune the parameters on your images to get something acceptable.</p>

<h2 id="more-models"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#more-models">More models!</a></h2>

<p>Here are a few of the interesting meshes I made from the movie.  Some are more accurate than others.</p>

<h3 id="snokes-head"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#snokes-head">Snoke's Head</a></h3>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-17" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snoke-text.mp4?_=17"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snoke-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/snoke-text.mp4</a></video></div><p></p>

<h3 id="throne-room-battle"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#throne-room-battle">Throne Room Battle</a></h3>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-18" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/throne-text.mp4?_=18"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/throne-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/throne-text.mp4</a></video></div><p></p>

<h3 id="v-4x-d-ski-speeders"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#v-4x-d-ski-speeders">V-4X-D Ski Speeders</a></h3>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-19" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snow-text.mp4?_=19"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snow-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/snow-text.mp4</a></video></div><p></p>

<h3 id="kylo-rens-tie-fighter-guns"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#kylo-rens-tie-fighter-guns">Kylo Ren's TIE Fighter Guns</a></h3>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-29240-20" width="620" height="318" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/tie-text.mp4?_=20"><a href="https://shkspr.mobi/blog/wp-content/uploads/2018/04/tie-text.mp4">https://shkspr.mobi/blog/wp-content/uploads/2018/04/tie-text.mp4</a></video></div><p></p>

<h2 id="is-tlj-really-3d"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#is-tlj-really-3d">Is TLJ <em>really</em> 3D?</a></h2>

<p><a href="https://www.bustle.com/p/is-the-last-jedi-in-3d-worth-it-theres-a-better-way-to-upgrade-your-experience-7549762">Nope</a>! The movie was filmed with regular cameras and converted in post-production.</p>

<p>As <a href="https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/">I've discussed before</a>, The Force Awakens has some scenes which have some reasonable 3D, but it wasn't a great conversion. I think TLJ is done much better - but I wish the CGI was properly rendered in 3D.</p>

<p>Much of the 3D-ness is one or two foreground elements floating against a background. If you want <em>real</em> 3D models, you need something shot and edited for 3D - for example this <a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/">Doctor Who 3D special</a>:</p>

<p><iframe title="Converting Stereoscopic Images from HSBS Movies into 3D Models" width="620" height="465" src="https://www.youtube.com/embed/YGJ4qdoAfAw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<h2 id="further-reading"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#further-reading">Further Reading</a></h2>

<p>Getting this working took me all around the interwibbles - here are a few resources that I used.</p>

<ul>
<li><a href="https://web.archive.org/web/20180405183853/http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_calibration/py_calibration.html">Callibration of stereo cameras</a></li>
<li><a href="https://web.archive.org/web/20200925010505/https://rdmilligan.wordpress.com/2016/05/15/epipolar-geometry-and-depth-map-from-stereo-images/">Epipolar Geometry and Depth Map from stereo images</a></li>
<li><a href="https://rdmilligan.wordpress.com/2016/05/23/disparity-of-stereo-images-with-python-and-opencv/">Disparity of stereo images with Python and OpenCV</a></li>
<li><a href="https://erget.wordpress.com/2014/05/02/producing-3d-point-clouds-from-stereo-photos-tuning-the-block-matcher-for-best-results/">Optimizing point cloud production from stereo photos by tuning the block matcher</a></li>
<li><a href="https://albertarmea.com/post/opencv-stereo-camera/">Calculating a depth map from a stereo camera with OpenCV</a></li>
<li><a href="https://github.com/adrelino/ppf-reconstruction">3D Object Reconstruction using Point Pair Features</a></li>
<li><a href="https://web.archive.org/web/20200925010509/https://svncvpr.in.tum.de/redmine/projects/cvpr-ros-pkg/repository/entry/trunk/rgbd_benchmark/rgbd_benchmark_tools/scripts/generate_pointcloud.py">Dr. Jürgen Sturm's "Generate Pointcloud"</a></li>
</ul>

<h2 id="copyright"><a href="https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/#copyright">Copyright</a></h2>

<p>Star Wars: The Last Jedi is copyright Lucasfilm Ltd.<br>
These 6 screenshots fall under the <a href="https://www.gov.uk/guidance/exceptions-to-copyright">UK's limited exceptions to copyright</a>.<br>
Any code I have written is available under the BSD License and is <a href="https://github.com/edent/3D-Screenshot-to-3D-Model/">available on GitHub</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=29240&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2018/04/reconstructing-3d-models-from-the-last-jedi/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/walker-text.mp4" length="2283290" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-small-pointcloud-text.mp4" length="2534113" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/rey-hq-text.mp4" length="3773259" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-simple-text.mp4" length="1318009" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/hand-complex.mp4" length="4720974" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snoke-text.mp4" length="1552649" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/throne-text.mp4" length="4189882" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/snow-text.mp4" length="3335439" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2018/04/tie-text.mp4" length="2889951" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Review: Svpro 3D Camera - for Android and Raspberry Pi]]></title>
		<link>https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/</link>
					<comments>https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 14 Jun 2017 11:28:41 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Sponsored Post]]></category>
		<category><![CDATA[vr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=25355</guid>

					<description><![CDATA[I&#039;ve been sent a 3D camera addon to review - the Svpro SV-2560X3D-001 is a £65 stereo camera designed for Android.  It will also work with a Raspberry Pi!  It looks a little like a Microsoft Kinect - a single bar with two embedded cameras.  The camera resolution is 720p on each lens.    It clips on easily to a phone via a padded screw clamp. You need to install a dedicate 3D camera app in order …]]></description>
										<content:encoded><![CDATA[<p>I've been sent a 3D camera addon to review - <a href="https://web.archive.org/web/20170612153841/https://www.trendsloving.com/">the Svpro SV-2560X3D-001 is a £65 stereo camera designed for Android</a>.  It will also work with a Raspberry Pi!</p>

<p>It looks a little like a Microsoft Kinect - a single bar with two embedded cameras.  The camera resolution is 720p on each lens.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/3D-camera-clipped-to-a-phone-sat-in-a-tripod.jpg" alt="3D camera clipped to a phone, sat in a tripod" width="1024" height="768" class="aligncenter size-full wp-image-25381">

<p>It clips on easily to a phone via a padded screw clamp. You need to install a dedicate 3D camera app in order to make it work. In the box you get the camera, two USB-OTG cables, a tripod and clamp, and a carrying pouch.</p>

<p>Let's take it for a spin!</p>

<h2 id="sample-shots"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#sample-shots">Sample shots</a></h2>

<h3 id="video"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#video">Video</a></h3>

<p>As you can see, the 3D effect is prominent.</p>

<iframe title="3D donkey" width="620" height="349" src="https://www.youtube.com/embed/1Z2wP2Izbk8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>Video quality is 2560x720. Framerate is variable depending on how fast your phone is. My Nexus 6 managed just 16fps, my S6 got to the slightly better 25fps.</p>

<iframe title="3D Driving" width="620" height="349" src="https://www.youtube.com/embed/mV2wWAwQhRU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>Because the cameras are independent, their exposure and white balance aren't linked. This also means that occasionally one camera may drop a frame or exhibit tearing - while the other side remains unaffected.</p>

<iframe title="3D River" width="620" height="349" src="https://www.youtube.com/embed/C8OapdWOhVY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>The cameras work best in bright light. Too much motion and the JPEG encoding can't keep up. You can stream raw YUYV video off the device - but you need to either lower the framerate or resolution if you want the USB bandwidth to be sufficient.</p>

<p>Audio is <code>aac, 44100 Hz, mono, fltp, 67 kb/s</code>
You don't get stereo sound, which is a little bit of a disappointment.  There are no microphones in the unit - audio comes from your phone's mic.  I've removed the audio from the above videos</p>

<p>3D metadata isn't embedded - this is needed <a href="https://support.google.com/youtube/answer/7278886?hl=en-GB">for sites like YouTube to recognise them as 3D videos</a>.</p>

<h4 id="tv-playback"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#tv-playback">TV Playback</a></h4>

<p>I uploaded a sample video to YouTube - which has native 3D support. I was able to stream the video to my <a href="https://shkspr.mobi/blog/2012/09/review-panasonic-tx-l37et5b/">smart TV</a> and watch it using 3D glasses.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/A-smart-TV-is-playing-a-3D-video-on-YouTube.jpg" alt="A smart TV is playing a 3D video on YouTube" width="1024" height="640" class="aligncenter size-full wp-image-25372">

<h3 id="photo"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#photo">Photo</a></h3>

<p>The Svpro app doesn't let you take photos! A bizarre omission. I cheated and used the phone's screenshot tool to capture these.  Click for full size.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2017/06/3D-shot-of-Terence-Eden.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/3D-shot-of-Terence-Eden.jpg" alt="3D shot of Terence Eden" width="2560" height="720" class="aligncenter size-full wp-image-25368"></a></p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2017/06/3D-photo-of-a-river.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/3D-photo-of-a-river.jpg" alt="3D photo of a river" width="2560" height="720" class="aligncenter size-full wp-image-25383"></a></p>

<h3 id="app"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#app">App</a></h3>

<p>Android doesn't natively support external cameras - so you need to <a href="https://apkpure.com/vr-3d-camera/cc.svpro.vr3dcamera">download the Svpro app</a>.  It's basic - you can record video and play video. That's it!</p>

<p>No photo capabilities, no resolution or quality settings, no framerate control, no video editing or upload to YouTube.</p>

<p>Worse, the app in the Google Play Store doesn't support Android 7.0 - you need to download it directly from <a href="http://www.svpro.cc/app/">http://www.svpro.cc/app/</a>.</p>

<p>I found that the app would not keep the screen on while I was recording.  You may need to adjust your phone's display settings if you want to keep the screen active.</p>

<p>On the positive side, it doesn't ask for crazy permissions - although you will need to grant it USB access.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/Screenshot-of-an-Android-app-asking-for-USB-permissions.png" alt="Screenshot of an Android app asking for USB permissions" width="741" height="392" class="aligncenter size-full wp-image-25361">

<p>There are other apps on the play store which you can use, which show how good the Svpro app <em>could</em> be.  For example, this is <a href="https://play.google.com/store/apps/details?id=com.shenyaocn.android.usbdualcamera">USB Dual Camera</a>:
<a href="https://play.google.com/store/apps/details?id=com.shenyaocn.android.usbdualcamera"><img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/Screenshot-of-an-Android-app-displaying-two-cameras-and-a-host-of-options.png" alt="Screenshot of an Android app displaying two cameras and a host of options" width="739" height="401" class="aligncenter size-full wp-image-25366"></a></p>

<p>That's not a perfect app, but it gives you an idea of the potential.</p>

<p>The Svpro app also seems quite slow - which sometimes leads to disappointing video results.</p>

<h2 id="raspberry-pi-linux-support"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#raspberry-pi-linux-support">Raspberry Pi Linux support</a></h2>

<p>Although this camera isn't advertised as working on Linux, it <em>is</em> a USB camera - and it works brilliantly!</p>

<p>Running <code>lsusb</code> gives us:</p>

<pre><code class="language-_">Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 005: ID 0ac8:9902 Z-Star Microelectronics Corp.
Bus 001 Device 006: ID 0ac8:9901 Z-Star Microelectronics Corp.
</code></pre>

<p>So this is a USB hub with two cameras attached to it!  It shows up as <code>/dev/video0</code> and <code>/dev/video1</code> - and both cameras work <em>perfectly!</em></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/Screenshot-of-Ubuntu-showing-left-and-right-images-from-3D-camera.jpg" alt="Screenshot of Ubuntu showing left and right images from 3D camera" width="1281" height="558" class="aligncenter size-full wp-image-25363">

<p>It supports <code>YUV 4:2:2 (YUYV)</code> and <code>MJPG</code> for video capture and, pleasingly, each camera is 1280*720 native. No interpolation!</p>

<p>The Raspberry Pi website has <a href="https://www.raspberrypi.com/documentation/computers/camera_software.html#use-a-usb-webcam">a quick tutorial on capturing images</a>.</p>

<p>You can capture the MJPG directly from the camera. This is the quickest and most efficient way to get 25fps video out of the device - although the filesize is rather large (5MB per second).</p>

<pre><code>avconv -f video4linux2 -input_format mjpeg -i /dev/video0 -t 00:00:05 -c:v copy output.mkv
</code></pre>

<p>That will only capture from <em>one</em> of the twin cameras. How do we get both?  Here's a lazy way to capture dual USB cameras simultaneously.</p>

<pre><code>avconv -f video4linux2 -input_format mjpeg -i /dev/video0 -t 00:00:05 -c:v copy outputL.mkv &amp; avconv -f video4linux2 -input_format mjpeg -i /dev/video1 -t 00:00:05 -c:v copy outputR.mkv
</code></pre>

<p>That worked on my Pi 2 Model B - I'll write a blog post soon explaining other ways to do this.</p>

<h2 id="technology"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#technology">Technology</a></h2>

<p>At the start of the decade, my mate Ket was building his own 3D cameras.  Literally two cameras wired together and mounted next to each other.</p>

<p><a href="https://www.slideshare.net/spiritquest/3d-stereotalk/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/how-to-build-your-own-3d-digital-camera-rig-3-638.jpg" alt="Some self-build 3D cameras. " width="638" height="495" class="aligncenter size-full wp-image-25358"></a></p>

<p>It's incredible to think how quickly technology has progressed. For £65 you get a lightweight (50g) and tiny (92mm * 20mm * 20mm) camera pairing. The distance between the cameras is almost identical to the distance between my pupils. The view angle on each lens is 100°.  Perfect for stereoscopic viewing.</p>

<p>But pushing all that video over a USB cable is tough. A more practical design may be to place the video processing within the unit - rather than relying on the USB bandwidth and phone speed being sufficient.</p>

<h2 id="downsides"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#downsides">Downsides</a></h2>

<p>There are a few little niggles with the Svpro.</p>

<ul>
<li>For phones, it is Android only. At the moment the USB OTG functionality only works with Android. So you iPhone users are out of luck.</li>
<li>Dedicated Android app needed. An app like this needs to be polished, professional, and a joy to use. It isn't.</li>
<li>720p is fine for a cheap camera - and matches the resolution of most 3D displays - but a bigger resolution would be welcome.</li>
<li>Framerate should be higher - although this is partially a limitation of the speed of the USB transfer and of your phone.</li>
<li>No binaural sound.  Audio is recorded from your phone's microphone, so there's no stereo effect.</li>
</ul>

<p>Those are minor problems. The only other issue I found was that on <em>some</em> devices, it would capture BGR video - the red and blue channels swapped around.  Which gave this weird effect:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/06/Screenshot-of-a-video-with-weird-inverted-colours.jpg" alt="Screenshot of a video with weird inverted colours" width="720" height="405" class="aligncenter size-full wp-image-25370">No idea why - I reported it to Svpro and they're looking into it.</p>

<p>To correct it using Linux requires <a href="https://superuser.com/questions/1058371/red-and-green-color-channels-are-swapped-in-ffmpeg-rendered-video"><code>ffmpeg</code>'s filter <code>colorchannelmixer</code></a></p>

<pre><code>ffmpeg -i in.mp4 -vf colorchannelmixer=rr=0:rb=1:br=1:bb=0 -acodec copy out.mp4
</code></pre>

<p>Recording from the Pi didn't exhibit these problems.</p>

<h2 id="buy-it"><a href="https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/#buy-it">Buy it</a></h2>

<p>If you want to get started with a <a href="https://web.archive.org/web/20170612153841/https://www.trendsloving.com/">3D VR Camera</a> - for playback on a Google Cardboard or other VR headset - this is a pretty good device.  The app is basic, but the video quality is satisfactory if your phone is fast enough. The 3D effect is perfect.  It's also a handy way to add stereo-vision to a Raspberry Pi robotics project.</p>

<ul>
<li>The 3D camera is available on Amazon UK for £65.</li>
<li>You can also get it <a href="https://web.archive.org/web/20170612153841/https://www.trendsloving.com/">direct from the manufacturer for around $80</a>.</li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=25355&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2017/06/review-svpro-3d-camera-for-android-and-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How 3D is Star Wars The Force Awakens?]]></title>
		<link>https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/</link>
					<comments>https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 13 Nov 2016 10:29:20 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[Star Wars]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23587</guid>

					<description><![CDATA[This blog post looks at the 3D conversion process for The Force Awakens.  Where it succeeds and where it falls short.           Last year I managed to blag tickets to the premiere of The Force Awakens - in 2D.  The next day, we saw it again in 3D.  I&#039;ve never been a huge fan of 3D films and, despite owning a 3D TV, think the format is a bit of a gimmick.  But the 3D Star Wars was something else!  …]]></description>
										<content:encoded><![CDATA[<p>This blog post looks at the 3D conversion process for The Force Awakens.  Where it succeeds and where it falls short.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/bb8.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/bb8.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/bb8.mp4" type="video/mp4">
</video>

<p>Last year I managed to blag tickets to the <a href="https://shkspr.mobi/blog/2016/01/review-the-force-awakens-premiere/">premiere of The Force Awakens</a> - in 2D.  The next day, we saw it again in 3D.  I've <a href="https://shkspr.mobi/blog/2010/12/tron-legacy-a-review/">never been a huge fan of 3D films</a> and, despite owning a 3D TV, think the format is a bit of a gimmick.</p>

<p>But the 3D Star Wars was something else!  Most of the scenes really didn't benefit - but some of the special effects just <em>popped</em> out of the screen.</p>

<p>The first thing to note is that <a href="https://www.bustle.com/articles/129817-the-force-awakens-in-3d-is-a-first-for-a-star-wars-movie-but-is-it">SWTFA <em>was not</em> filmed with 3D cameras</a>.  The film was converted to 3D in post-production.</p>

<p>A few years ago I documented a <a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/">process to convert 3D movies into animated GIFs</a>.  I'm going to use this technique to show you just how fake some of the 3D is.</p>

<p>Take a look at the famous opening crawl.  This has been created entirely digitally - you can see the star field moving in parallax to the text.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/crawl.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/crawl.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/crawl.mp4" type="video/mp4">
</video>

<p>When viewed through 3D glasses, this gives the impression of the text floating in front of the stars.</p>

<p>SWTFA successfully mixes live action and computer-generated special effects.  In this shot, the actors have been filmed on a regular 2D camera and the "blaster shot" has been composited on afterwards.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/blaster.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/blaster.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/blaster.mp4" type="video/mp4">
</video>

<p>As with much of the conversion, the frame is split into three distinct depths.</p>

<ol>
<li>Popping out of the frame is the laser bolt.</li>
<li>In the middle we have Poe and the Stormtroopers.</li>
<li>Everything else is background.</li>
</ol>

<p>Take a look at the troopers in the background - notice how they don't move <em>in relation</em> to each other - or the buildings behind them.  If this were a true 3D scene, we'd expect to see some relative movement, but there is none.</p>

<p>Another sign of 3D conversion is the way lights reflect off a surface.  Take a look at any normal reflective surface close to you. Wink your eyes alternately.  Notice how the reflections on the surface jump around quite dramatically?  Now look back at the foreground Stormtroopers.  The reflections on their armour stay completely still.</p>

<p>I had naively thought that <em>all</em> the computer-generated special effects would have been rendered in 3D - but I'm not convinced that's true.  Here we see some TIE fighters pursuing the Millennium Falcon.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/falcon.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/falcon.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/falcon.mp4" type="video/mp4">
</video>

<p>Here, the 3D effect is <em>noticeably worse!</em>  There is a fighter at the front of the screen - literally everything else is in the background.  The position of the Falcon relative to the crashed Star Destroyer is static.  The debris on the left of the screen <em>should</em> moving relative to the background, but it isn't.</p>

<p>In fact, looking at the TIE in the foreground - it looks like a 2D image floating above the rest of the scene. There's no discernible depth to it.</p>

<p>You can see this in some of the other shots. Here's Rey exploring the abandoned Star Destroyer.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/interior.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/interior.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/interior.mp4" type="video/mp4">
</video>

<p>The front floats above the background. Despite this being - I assume - an entirely CGI shot, it is little better than a South-Park-style paper-cut animation. Even worse, take a look at the right hand side of the image. A large blank gap where the image has just been squashed.</p>

<p>This happens constantly throughout the film.  Here's what looks like an scene with huge depth - at first glance:</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/squash.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/squash.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/squash.mp4" type="video/mp4">
</video>

<p>Look at both the left <em>and</em> right side. They've been artificially shunted inwards, leaving huge gaps!</p>

<p>That isn't to say there are some great 3D moments in the film.  The character of Maz Kanata is entirely computer generated - and she looks <em>amazing!</em></p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/maz.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/maz.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/maz.mp4" type="video/mp4">
</video>

<p>But, for every shot like that, you get this hot mess.</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/skewered.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/skewered.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/skewered.mp4" type="video/mp4">
</video>

<p>The angle of the sparks seem to change radically from foreground to background. The Lightsabre seems almost curved.  There's no depth to the main character.  And what the hell is happening on the right hand side? It looks like the picture has been squashed.</p>

<h2 id="thoughts"><a href="https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/#thoughts">Thoughts</a></h2>

<p>At first, I was disappointed with this conversion.  This wasn't the fully immersive 3D world I'd been promised!</p>

<p>But then I remembered how much fun it was to <em>watch</em> the movie.  After 5 minutes of a normal 3D flick the depth becomes about as entertaining as technicolor; it fades away. Or, even worse, it becomes a distraction as your eyes keep trying to catch up with what the brain thinks it is seeing.</p>

<p>But SWTFA keeps popping out of the screen without being obnoxious.  Most of the action sequences have an exaggerated foreground object standing out from a flattened background.</p>

<p>There are a few notable exceptions - like the BB-8 shot at the top of this page and my personal favourite:</p>

<video autoplay="" controls="" loop="" preload="">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/phasma.ogv" type="video/ogg">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/phasma.webm" type="video/webm">
 <source src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/phasma.mp4" type="video/mp4">
</video>

<p>The hologram blurs as it exits the front of the picture. Finn's head seems to move beautifully behind the rest of the technical read-outs. This is one of the few shots which looks like it was filmed in 3D and <em>also</em> had 3D CGI applied.</p>

<p>And, yet, for all that - I still love the film. It's a fun romp and the 3D, while not perfect, certainly helps <em>some</em> of the scenes.</p>

<hr>

<h2 id="technical-notes"><a href="https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/#technical-notes">Technical Notes</a></h2>

<p>Here's how to create these animated gifs out of a 3D movie.  These are mostly notes to myself!</p>

<p>ImageMagick can split an Over/Under movie into Left and Right images using:</p>

<pre><code>mogrify -crop 100%x50% +repage 3D.png
</code></pre>

<p>For Side-by-Side you'll need to use:</p>

<pre><code>mogrify -crop 50%x100% +repage 3D.png
</code></pre>

<p>This produces two files - <code>3D-0.png</code> and <code>3D-1.png</code></p>

<p>You can, optionally, trim out the black borders with:</p>

<pre><code>convert 3D-0.png -crop 1920x398+0+70 +repage 3D-0.png
</code></pre>

<p>(Substitute the correct resolution for your particular file.</p>

<p>Stretch the image back to full height using:</p>

<pre><code>mogrify -resize 100%x200% 3D-0.png
</code></pre>

<p>You can make an animated GIF using:</p>

<pre><code>convert +dither -delay 25x100 -loop 0 +repage 3D-0.png 3D-1.png 3D.gif
</code></pre>

<p>Or, you can make a movie using</p>

<pre><code>avconv -r 1 -i 3D-%d.png 3D.ogv
</code></pre>

<p>This can be transcoded to <code>webm</code> and <code>mp4</code> as needed</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23587&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Reducing the filesize of complex 3D .OBJ models]]></title>
		<link>https://shkspr.mobi/blog/2016/08/reducing-the-filesize-of-complex-3d-obj-models/</link>
					<comments>https://shkspr.mobi/blog/2016/08/reducing-the-filesize-of-complex-3d-obj-models/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 01 Aug 2016 11:46:49 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23143</guid>

					<description><![CDATA[Loading large 3D Models in the browser is extremely resource intensive.  2D images are trivial to resize and resample with negligible loss of perceived quality.  3D resizing is complex.  As part of my &#34;Pirate Museum&#34; I wanted to display 3D scans of statues using WebVR.  The only problem is, these files are huge.  Take The Dancing Faun - at full resolution, that&#039;s around 230MB.  Even on fast…]]></description>
										<content:encoded><![CDATA[<p>Loading large 3D Models in the browser is <em>extremely</em> resource intensive.  2D images are trivial to resize and resample with negligible loss of perceived quality.  3D resizing is complex.</p>

<p>As part of my "<a href="https://github.com/edent/PirateMuseum/">Pirate Museum</a>" I wanted to display 3D scans of statues using <a href="https://aframe.io/">WebVR</a>.  The only problem is, these files are <em>huge</em>.</p>

<p>Take <a href="http://www.thingiverse.com/thing:196048">The Dancing Faun</a> - at full resolution, that's around 230MB.  Even on fast broadband that's a pain to download - and even on a fast computer it is slow to render. Once you add several models like that to a scene, everything grinds to a halt.</p>

<p>I wanted a simple way to turn a complex model into something simple - but still recognisable.</p>

<p>On the left you can see the face of the full sized model - on the right is it after being shrunk.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Reducing-model-complexity-.jpg" alt="Reducing model complexity." width="1024" height="502" class="aligncenter size-full wp-image-23145">

<p>A surprising level of detail remains - and the filesize is a miniscule 1MB.  Small enough for a floppy disk!</p>

<p>To do this, I used <a href="http://meshlab.sourceforge.net/">MeshLab</a> - the Open Source 3D modelling software.  Meshlab has a great GUI - but it can be slow to work with, especially if you're trying to change lots of models at once.</p>

<p>The first step is to <a href="https://support.shapeways.com/hc/en-nl/articles/17001740700060-Polygon-Reduction-with-MeshLab">create a filter script in the Meshlab GUI</a>.  This is what I settled on, a script to reduce any model to 32,000 faces.</p>

<pre><code class="language-xml">&lt;!DOCTYPE FilterScript&gt;
&lt;FilterScript&gt;
 &lt;filter name="Quadric Edge Collapse Decimation"&gt;
  &lt;Param type="RichInt"   value="32000" name="TargetFaceNum"/&gt;
  &lt;Param type="RichFloat" value="0"     name="TargetPerc"/&gt;
  &lt;Param type="RichFloat" value="1"     name="QualityThr"/&gt;
  &lt;Param type="RichBool"  value="true"  name="PreserveBoundary"/&gt;
  &lt;Param type="RichFloat" value="1"     name="BoundaryWeight"/&gt;
  &lt;Param type="RichBool"  value="true"  name="PreserveNormal"/&gt;
  &lt;Param type="RichBool"  value="false" name="PreserveTopology"/&gt;
  &lt;Param type="RichBool"  value="true"  name="OptimalPlacement"/&gt;
  &lt;Param type="RichBool"  value="true"  name="PlanarQuadric"/&gt;
  &lt;Param type="RichBool"  value="false" name="QualityWeight"/&gt;
  &lt;Param type="RichBool"  value="true"  name="AutoClean"/&gt;
  &lt;Param type="RichBool"  value="false" name="Selected"/&gt;
 &lt;/filter&gt;
&lt;/FilterScript&gt;
</code></pre>

<p>The files is then saved as <code>32k.mlx</code>.</p>

<p>I followed <a href="https://web.archive.org/web/20160826033420/http://www.andrewhazelden.com/blog/2012/04/automate-your-meshlab-workflow-with-mlx-filter-scripts/">Andrew Hazelden's blog post</a> to run the script using Meshlab server.</p>

<p><code>meshlabserver -i original.obj -o small.obj -s 32k.mlx</code></p>

<p>After a few moments - depending on the speed of your kit and size of model - a reduced size version will be spat out.</p>

<p>It is important to note that the MeshLab work only changes the <em>quality</em> of the model - not its apparent size in 3D space.</p>

<p>Models can be permanently scaled using <a href="https://github.com/tapio/obj-magic/">Obj-Magic</a>.  For example, to scale a model to be half its physical size, run:
<code>./obj-magic -s 0.5 -o half.obj original.obj</code></p>

<p>Finally, we have the issue of rotating models in 3D space.  Some models are oriented in surprising ways.  This can be done with <code>obj-magic</code> if you already know how you want the model to be rotated.  I found it easier to use <a href="https://www.blender.org/">Blender</a> on some of the models to rotate them and re-centre them.</p>

<p>Blender is notoriously complicated - all you need to do is import the .obj. Select it in the right hand panel. Then select the Cube / Object menu.  In there you'll find the controls to shrink and rotate the object.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Blender-.png" alt="A screen from Blender showing a rotated 3D model" width="858" height="530" class="aligncenter size-full wp-image-23148">

<p>Once done, select "Export" then "Wavefront (.obj)".</p>

<p>So, with that you can easily shrink 3D models to a more compact file size.</p>

<p>You can <a href="https://edent.github.io/PirateMuseum">visit my Pirate Museum</a> to experience the models.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23143&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/08/reducing-the-filesize-of-complex-3d-obj-models/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Help! How do I extract 3D objects from PDFs?]]></title>
		<link>https://shkspr.mobi/blog/2016/02/help-how-do-i-extract-3d-objects-from-pdfs/</link>
					<comments>https://shkspr.mobi/blog/2016/02/help-how-do-i-extract-3d-objects-from-pdfs/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 02 Feb 2016 14:52:03 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[u3d]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=22382</guid>

					<description><![CDATA[You know how the Democratic People&#039;s Republic of Korea is neither democratic, nor particularly for the people, nor a republic?  Yeah, so it turns out the &#34;Universal 3D&#34; format is pretty far from Universal!  A little backstory... The Europeana Carare Project has some gorgeous 3D scans of ancient monuments and heritage sites.  The only problem is that the 3D files are trapped inside PDFs.  Yup -…]]></description>
										<content:encoded><![CDATA[<p>You know how the Democratic People's Republic of Korea is neither democratic, nor particularly for the people, nor a republic?  Yeah, so it turns out the "Universal 3D" format is pretty far from Universal!</p>

<p>A little backstory... The <a href="https://carare.eu/en/training/3d-and-virtual-reality/">Europeana Carare Project has some gorgeous 3D scans of ancient monuments and heritage sites</a>.  The only problem is that the 3D files are trapped inside PDFs.  Yup - did you know the PDF spec supported 3D models? Me neither.</p>

<p>The only way to view these is with the Official Adobe Viewer (<a href="http://ubuntuhandbook.org/index.php/2014/10/install-adobe-reader-ubuntu-14-10/">install it on Linux following these instructions</a>).</p>

<p>This is what it looks like:</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-22382-22" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.mp4?_=22"><source type="video/webm" src="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.webm?_=22"><source type="video/ogg" src="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D-Objects-in-PDF.ogv?_=22"><a href="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.mp4">https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.mp4</a></video></div><p></p>

<p>Nifty, right?</p>

<p>So, <a href="http://superuser.com/questions/758379/extract-u3d-object-from-pdf/1034179">how do we extract that 3D file</a>?</p>

<ol>
    <li><a href="http://blog.didierstevens.com/programs/pdf-tools/">Download and install the Pythong PDF Parser</a></li>
    <li>Search for the 3D object:<br><code>./pdf-parser.py -t /3D input.pdf </code></li>
    <li>You'll get a response like this:<br><pre lang="bash">obj 48 0
 Type: /3D
 Referencing: 58 0 R, 59 0 R
 Contains stream

  &lt;&lt;
    /AN 58 0 R
    /Length 6066066
    /Subtype /PRC
    /Type /3D
    /VA 59 0 R
  &gt;&gt;
</pre></li>
    <li>The Object ID (in this case 48) is what we need to extract.</li>
    <li><code>./pdf-parser.py -o 48 -d output.u3d input.pdf</code></li>
</ol>

<p>You can <a href="https://shkspr.mobi/blog/wp-content/uploads/2016/02/output.u3d.zip" rel="">download the U3D file</a>.</p>

<p>Unfortunately, <em>nothing</em> opens it.  I've tried <a href="http://sourceforge.net/p/meshlab/discussion/499532/thread/da02c8bc/">Meshlab</a>, <a href="https://www.blender.org/forum/viewtopic.php?t=17757">Blender</a>, <a href="https://github.com/FreeCAD/FreeCAD">FreeCAD</a>, <a href="http://3doc.i3dconverter.com/">i3D Converter</a>, online service <a href="https://web.archive.org/web/20160203075714/https://www.babel3d.com/">Babel3D</a>, and even Unity 3D on a Windows box.</p>

<p>Nothing!  Not a single application would recognise it - let alone convert it.</p>

<p>There is a <a href="https://github.com/ningfei/u3d">U3D library on GitHub</a> - but I'm not skilled enough to integrate it into anything.</p>

<p>I've found <a href="https://web.archive.org/web/20161121095041/https://play.google.com/store/apps/details?id=com.afanche.android.U3DViewRS">an Android app which claims to convert U3D files</a> - but it has no downloads, no reviews, and costs £6!</p>

<p>So, gentle reader, if you know of a way to extract and view 3D models from PDFs, <strong>please</strong> let me know!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=22382&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/02/help-how-do-i-extract-3d-objects-from-pdfs/feed/</wfw:commentRss>
			<slash:comments>23</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.mp4" length="4109537" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D_Objects_in_PDF.webm" length="2237750" type="video/webm" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2016/02/3D-Objects-in-PDF.ogv" length="4952088" type="video/ogg" />

			</item>
		<item>
		<title><![CDATA[Creating Animated Gifs from 3D Movies (HSBS to Gif)]]></title>
		<link>https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/</link>
					<comments>https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 29 Nov 2013 12:08:45 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[Doctor Who]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=9201</guid>

					<description><![CDATA[A few days ago, I posted this animated gif that I&#039;d created from the 3D Doctor Who Special.   I created that gif manually, but I wondered if it was possible to create such an animation in an automated fashion.  Turns out, it&#039;s pretty easy!  This relies on ImageMagick - which is a powerful image manipulation tool.  All of these scripts work on Ubuntu - and they should work on any GNU/Linux disto…]]></description>
										<content:encoded><![CDATA[<p>A few days ago, <a href="https://shkspr.mobi/blog/2013/11/bbc-iplayer-and-3d/" title="BBC iPlayer and 3D">I posted this animated gif that I'd created from the 3D Doctor Who Special</a>.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fex.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fex.gif" alt="Doctor Who 3D Fex" width="800" height="450" class="aligncenter size-full wp-image-9184"></a></p>

<p>I created that gif manually, but I wondered if it was possible to create such an animation in an automated fashion.  Turns out, it's pretty easy!  This relies on <a href="http://www.imagemagick.org/">ImageMagick</a> - which is a powerful image manipulation tool.  All of these scripts work on Ubuntu - and they should work on any GNU/Linux disto as well as Windows and Mac.</p>

<h2 id="get-your-image"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#get-your-image">Get Your Image</a></h2>

<p>I just pressed "Print Screen" while watching a Half-Side-by-Side (HSBS) movie in full screen. You can use mplayer or VLC to capture the image if you wish.</p>

<p>For mplayer, you can run this simple command to grab a single frame at the 20 minute and 5 seconds mark</p>

<pre>mplayer video.avi -frames 1 -vo jpeg -nosound -ss 20:05</pre>

<p>You should end up with an image like this - which we'll call "2D.jpg".
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez.jpg" alt="Doctor Who 3D Fez" width="800" height="450" class="aligncenter size-full wp-image-9185"></a></p>

<h2 id="split-the-image"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#split-the-image">Split the Image</a></h2>

<p>We want the left and right image separated.</p>

<pre>mogrify -crop 50%x100% 2D.jpg
</pre>

<p>This will result in two files: 2D-0.jpg and 2D-1.jpg.</p>

<p><strong>Warning:</strong> this will <em>destroy</em> your original image. Make sure you have a backup.</p>

<h2 id="stretch"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#stretch">Stretch</a></h2>

<p>HSBS means that the aspect ratio of each image is squashed.  We want to stretch each one back to full width.</p>

<pre>mogrify -resize 200%x100% 2D-0.jpg
mogrify -resize 200%x100% 2D-1.jpg</pre>

<p>The two JPGs files are replaced by images with the correct aspect ratio.</p>

<p>The split and stretch commands can be amalgamated into:</p>

<pre>mogrify -resize 200%x100% -crop 50%x100% 2D.jpg</pre>

<h2 id="animated-it"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#animated-it">Animated It!</a></h2>

<p>ImageMagick makes it really easy to create gifs - in this case, we want a 250ms delay between each frame.</p>

<pre>convert -delay 25x100 -loop 0 2D-0.jpg 2D-1.jpg movie.gif</pre>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/movie.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/movie.gif" alt="High quality animated 3D Doctor Who" width="800" height="450" class="aligncenter size-full wp-image-9206"></a>
Or, if there are only the two JPGs in the directory:</p>

<pre>convert -delay 25x100 -loop 0 *.jpg movie.gif</pre>

<p>You can knock the file size down by about a quarter using dithering.  Although the resulting image won't look so good.</p>

<pre>convert +dither +map -delay 25x100 -loop 0 *.jpg movie.gif</pre>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/movie1map.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/movie1map.gif" alt="movie1map" width="800" height="450" class="aligncenter size-full wp-image-9204"></a></p>

<h2 id="examples"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#examples">Examples</a></h2>

<p>A few interesting examples.</p>

<p>Here, again from Doctor Who, it's possible to see a marked difference between foreground and background.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/jump.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/jump.gif" alt="jump" width="800" height="450" class="aligncenter size-full wp-image-9208"></a></p>

<p>In this example, I've take two sequential frames from The Great Gatsby, The shot is a slow zoom in.  By combining the left and right of both frames, we get an interesting 3D effect.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Great-Gatsby-4-Frame.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Great-Gatsby-4-Frame.gif" alt="Great Gatsby 4 Frame" width="800" height="340" class="aligncenter size-full wp-image-9210"></a></p>

<h2 id="reconstructing-depth-information"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#reconstructing-depth-information">Reconstructing Depth Information</a></h2>

<p>How easy is it, I wonder, to turn a stereoscopic image into a 3D model.
I used <a href="https://web.archive.org/web/20131219035434/http://agisoft.ru/products/stereoscan">Stereoscan from AgiSoft</a> (Linux, Mac, Windows) to turn this:
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Painting.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Painting.gif" alt="Oil Painting in 3D" width="800" height="450" class="aligncenter size-full wp-image-9212"></a>
Into:</p>

<iframe title="Converting Stereoscopic Images from HSBS Movies into 3D Models" width="620" height="465" src="https://www.youtube.com/embed/YGJ4qdoAfAw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<h2 id="doctor-who-geek-side-note"><a href="https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/#doctor-who-geek-side-note">Doctor Who Geek Side Note</a></h2>

<p>Interestingly (well... to geeks like me) the shot of Capaldi's eyes is <em>not</em> in 3D.  I can only assume they filmed his cameo separately.  There are a few other shots which aren't in 3D - those of the old Doctors (including Eccleston) and the original title sequence.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=9201&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/11/creating-animated-gifs-from-3d-movies-hsbs-to-gif/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[BBC iPlayer and 3D]]></title>
		<link>https://shkspr.mobi/blog/2013/11/bbc-iplayer-and-3d/</link>
					<comments>https://shkspr.mobi/blog/2013/11/bbc-iplayer-and-3d/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 28 Nov 2013 08:00:11 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[iplayer]]></category>
		<category><![CDATA[tv]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=9183</guid>

					<description><![CDATA[I loved the latest episode of Doctor Who.  What made it even better was the fantastic use of 3D.  It had just enough &#34;wow&#34; moments to make the use of technology worthwhile - without totally overdoing it.  I watched the episode live at home on my Panasonic TX-L37ET5B.  After the broadcast, I wanted to watch it again.  That&#039;s where the problems started.  First, a quick lesson on how 3D TV…]]></description>
										<content:encoded><![CDATA[<p>I loved the latest episode of Doctor Who.  What made it even better was the fantastic use of 3D.  It had just enough "wow" moments to make the use of technology worthwhile - without totally overdoing it.</p>

<p>I watched the episode live at home on my <a href="https://shkspr.mobi/blog/2012/09/review-panasonic-tx-l37et5b/">Panasonic TX-L37ET5B</a>.</p>

<p>After the broadcast, I wanted to watch it again.  That's where the problems started.</p>

<p>First, a quick lesson on how 3D TV broadcasts work.  Generally speaking, most 3D TV is Half-Side-By-Side.  That means the left and right image are horizontally compressed and combined into a single image.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez.jpg" alt="Doctor Who 3D Fez" width="800" height="450" class="aligncenter size-full wp-image-9185"></a></p>

<p>The TV automatically detects that the image is split-screen and then turns the image into 3D. It displays the left image so it can only be seen by the left eye, and the right by the right.  If we apply that to the above image, we get this 3D effect.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fex.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fex.gif" alt="Doctor Who 3D Fex" width="800" height="450" class="aligncenter size-full wp-image-9184"></a></p>

<p>So far, so good!  The BBC have the <a href="https://www.bbc.co.uk/programmes/p01m25zg">3D version of Day of the Doctor on iPlayer</a> - and my TV has an iPlayer app.  The only problem is that the iPlayer app on the Panasonic doesn't trigger the TV's automatic 3D detection.  Even when I force the TV to 3D mode, it persists in showing the original picture. I've no idea if this is a fault with Panasonic's coding, or with the BBC's.</p>

<p>Well, my phone can access the iPlayer - and it can output its screen over HDMI.  How well would it work?  The answer, not well!</p>

<p>Here's a screenshot from my Android phone from the same scene.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez-DOG.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez-DOG.jpg" alt="Doctor Who 3D Fez DOG" width="800" height="450" class="aligncenter size-full wp-image-9188"></a></p>

<p>You'll notice two things with it.  Firstly the image quality is dreadful.  The image resolution is 832*468 and the bitrate appears to be very poor.</p>

<p>Secondly, there's a bloody great BBC logo in the top left!  The BBC have known for ages that <a href="https://web.archive.org/web/20131127141747/http://www.bbc.co.uk/blogs/aboutthebbc/posts/digital_on_screen_graphics_res">Digital Onscreen Graphics (DOGs) are annoying for their viewers</a> - but still they persist!</p>

<p>The problem with this on 3D content becomes readily apparent.  The DOG is stretched and appears to flicker in and out to the viewer.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez-DOG.gif"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/11/Doctor-Who-3D-Fez-DOG.gif" alt="Doctor Who 3D Fez DOG" width="800" height="450" class="aligncenter size-large wp-image-9189"></a></p>

<p>In addition, all iPlayer audio content is only in stereo - not the lovely surround sound of the original broadcast.</p>

<p>So, I can have iPlayer through the TV which won't display in 3D, I can have it through my phone in low quality with a ridiculous DOG, or I can find a kindly soul on the Internet offering Doctor Who in 1080p 3D with surround sound via a dodgy download.</p>

<p>I bet they don't have these problems on <a href="https://tvtropes.org/pmwiki/pmwiki.php/JustForFun/InspectorSpacetime">Inspector Spacetime</a>!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=9183&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/11/bbc-iplayer-and-3d/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Should Wikipedia Have 3D Models of Sculptures?]]></title>
		<link>https://shkspr.mobi/blog/2013/09/should-wikipedia-have-3d-models-of-sculptures/</link>
					<comments>https://shkspr.mobi/blog/2013/09/should-wikipedia-have-3d-models-of-sculptures/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 08 Sep 2013 07:00:29 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d printing]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[copyright]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8728</guid>

					<description><![CDATA[I was wandering round The Henry Moore Foundation last Friday - thanks to the delightful wedding of my good friends Mike and Nikki.  Looking at the abstract statues and carvings, I was struck not only by their beauty, but by how easy they would be to reproduce with a 3D printer.  Ok - ok! I&#039;m a little obsessed since building a RepRapPro for work - but hear me out.  Wikipedia has been collecting…]]></description>
										<content:encoded><![CDATA[<p><a title="David Sands [CC-BY-SA-2.0 (https://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File%3AReclining_Figure_at_Yorkshire_Sculpture_Park_-_geograph.org.uk_-_519117.jpg"><img width="512" alt="Reclining Figure at Yorkshire Sculpture Park - geograph.org.uk - 519117" src="//upload.wikimedia.org/wikipedia/commons/a/a9/Reclining_Figure_at_Yorkshire_Sculpture_Park_-_geograph.org.uk_-_519117.jpg"></a>
I was wandering round <a href="https://www.henry-moore.org/">The Henry Moore Foundation</a> last Friday - thanks to the delightful wedding of my good friends Mike and Nikki.</p>

<p>Looking at the abstract statues and carvings, I was struck not only by their beauty, but by how easy they would be to reproduce with a 3D printer.  Ok - ok! I'm a little obsessed since building a RepRapPro for work - but hear me out.</p>

<p>Wikipedia has been collecting high-resolution scans of famous works of art - although <a href="https://en.wikipedia.org/wiki/National_Portrait_Gallery_and_Wikimedia_Foundation_copyright_dispute">not without controversy</a> - and providing them for free to the public.  For example, you can download a <a href="https://upload.wikimedia.org/wikipedia/commons/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg">90MB image of the Mona Lisa at 7,479px * 11,146px</a>, detailed enough for just about any purpose.</p>

<p>The controversy with Wikipedia and the National Portrait Gallery was of volunteers downloading ultra-high resolution scans which had been created by the museum and were not originally intended to be set free.</p>

<p>Now we have a situation where many museums are actively laser scanning their artefacts - the <a href="https://humanorigins.si.edu/evidence/3d-collection">Smithsonian have a great 3D collection</a>.  It's very easy to grab the Smithsonian's 3D scan of the <a href="https://web.archive.org/web/20131121054932/https://humanorigins.si.edu/evidence/3d-collection/willendorf-venus">Willendorf Venus</a>; just check the source code of that page.  Some time later, the 3D file can be converted to an STL and <a href="https://www.thingiverse.com/thing:17601">shared freely</a> for anyone to view and download.</p>

<p>And, if galleries aren't scanning their own sculptures, what happens when Wikipedia volunteers start taking 3D photos of famous works of art?  It wouldn't be the hardest thing in the world to sneak a Kinnect and laptop into a gallery and surreptitiously create a 3D mesh.  Or, even, just take lots of photos at different angles and use software to determine the dimensions.</p>

<p>And that's exactly some enterprising chap has done.  With nothing more than an iPhone and used the <a href="https://web.archive.org/web/20130913214555/http://www.123dapp.com/catch">123D Catch</a> software, it takes less than five minutes to make a <a href="https://www.thingiverse.com/thing:36415">3D model of Moore's "Old Flo"</a>.</p>

<p>That 3D file could easily be embedded into Wikipedia in much the same way that high-resolution photographs are today.  This would allow visitors to experience an object in 3D in their browser.  See, for example, how <a href="https://github.com/blog/1465-stl-file-viewing">GitHub manages this</a>.</p>

<img src="https://f.cloud.github.com/assets/2546/353521/dc31ab20-a083-11e2-9308-5e4eed82e512.gif" alt="3D Viewer">

<p>With an ancient sculpture, I think that's acceptable.  The 3D scan is a series of facts about an object.  It's a slavish copy of a work of antiquity - no more deserving of copyright than a photocopy of a Shakespeare folio.</p>

<p>But what about <a href="https://en.wikipedia.org/wiki/Henry_Moore">Henry Moore</a>?  Most of his art was created in the second half of the 20th century, and he died in 1986. In most parts of the world, his copyright persists for at least another 20 years.</p>

<p>I'd love to see interactive 3D models of his work embedded in Wikipedia - but is it legal or moral for people to create such items?</p>

<p>I'm not a copyright expert.  I feel uncomfortable that the 3D scan of "Old Flo" has been unilaterally released by the scanner as Creative Commons - Attribution - Share Alike.  The scan is undoubtedly its own work - but just as taking a photo of a portrait doesn't necessarily create a new and copyrightable piece of work, I'm not sure that a straight scan of a sculpture somehow releases the object from the bonds of copyright.</p>

<p>Today, we are exactly where we were with MP3s in 1998.  Converting art to .stl files is a niche sport for dedicated fans, it requires expensive hardware to reproduce the original art, and the quality isn't that great.</p>

<p>15 years later and our laws have barely caught up with the fact that people can reproduce movies and music in nano-seconds.</p>

<p>How will our copyright laws react when high quality models of sculptures are freely shared on underground art exchanges?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/09/3D-Moore.jpg" alt="3D Moore" width="600" height="586" class="aligncenter size-full wp-image-8730">
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8728&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/09/should-wikipedia-have-3d-models-of-sculptures/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[3D Printing A Fossil]]></title>
		<link>https://shkspr.mobi/blog/2013/08/3d-printing-a-fossil/</link>
					<comments>https://shkspr.mobi/blog/2013/08/3d-printing-a-fossil/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 31 Aug 2013 08:00:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d printing]]></category>
		<category><![CDATA[fossil]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8710</guid>

					<description><![CDATA[Earlier this week I tried my hand at printing fossils.  The print didn&#039;t perfectly, but it was quite encouraging.  Museum Victoria - an Australian institution - has released a 3D scanned trilobite on Thingiverse.  I trimmed the model - to make the bed shallower and the sides neater - and hit print.  I&#039;m pretty impressed with the results:          My remixed model is also available on Thingiverse…]]></description>
										<content:encoded><![CDATA[<p>Earlier this week <a href="https://shkspr.mobi/blog/2013/08/3d-printing-fossils/">I tried my hand at printing fossils</a>.  The print didn't perfectly, but it was quite encouraging.</p>

<p>Museum Victoria - an Australian institution - has released a <a href="http://www.thingiverse.com/thing:91832">3D scanned trilobite on Thingiverse</a>.</p>

<p>I trimmed the model - to make the bed shallower and the sides neater - and hit print.  I'm pretty impressed with the results:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/3D-trilobite-1.jpg" alt="3D trilobite 1" width="600" height="583" class="aligncenter size-full wp-image-8714">

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/3D-trilobite-2.jpg" alt="3D trilobite 2" width="600" height="664" class="aligncenter size-full wp-image-8713">

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/3D-trilobite-3.jpg" alt="3D trilobite 3" width="600" height="450" class="aligncenter size-full wp-image-8712">

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/3D-trilobite-4.jpg" alt="3D trilobite 4" width="600" height="450" class="aligncenter size-full wp-image-8711">

<p>My <a href="http://www.thingiverse.com/thing:143050">remixed model is also available on Thingiverse</a> if you'd like to have a go at printing your very own fossil.</p>

<p>I'm impressed with the fidelity of the print. It came out much better than I expected. You can really see a lot of the detail.  I think it could be an excellent way to introduce people to fossils, to really give them a chance to examin them and feel them - even if they can't get to a museum.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8710&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/08/3d-printing-a-fossil/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[3D Printing Fossils]]></title>
		<link>https://shkspr.mobi/blog/2013/08/3d-printing-fossils/</link>
					<comments>https://shkspr.mobi/blog/2013/08/3d-printing-fossils/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 27 Aug 2013 14:26:27 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d printing]]></category>
		<category><![CDATA[fossils]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8682</guid>

					<description><![CDATA[I&#039;ve just discovered the amazing 3D Fossils site of the British Geological Survey.  The GB3D Type Fossils Online project, funded by JISC, aims to develop a single database of the type specimens, held in British collections, of macrofossil species and subspecies found in the UK, including links to photographs (including &#039;anaglyph&#039; stereo pairs) and a selection of 3D digital models.    What that…]]></description>
										<content:encoded><![CDATA[<p>I've just discovered the <a href="http://www.3d-fossils.ac.uk/home.html">amazing 3D Fossils site of the British Geological Survey</a>.</p>

<blockquote><p>The GB3D Type Fossils Online project, funded by <a href="http://www.jisc.ac.uk/">JISC</a>, aims to develop a single database of the type specimens, held in British collections, of macrofossil species and subspecies found in the UK, including links to photographs (including 'anaglyph' stereo pairs) and a selection of 3D digital models.</p></blockquote>

<iframe title="3D fossil images: GB/3D fossil types project" width="620" height="349" src="https://www.youtube.com/embed/bXhhmS-HGEI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>What that means is that they have <em>thousands</em> of British fossils available as freely downloadable 3D models!  Even better, all the models are <a href="http://www.3d-fossils.ac.uk/about.html#licencing">Creative Commons</a> (Attribution-NonCommercial-ShareAlike 3).</p>

<p>So, I decided to experiment with printing out a Fossil on <a href="https://shkspr.mobi/blog/2013/10/3d-printing-at-over-the-air/">the 3D Printer I built for my employer</a>.</p>

<p>I chose a model more-or-less at random - an <a href="http://www.3d-fossils.ac.uk/fossilType.cfm?typSampleId=562295">Ammonite from Dorset</a>.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/Fossile-Screenshot.jpg" alt="Fossile Screenshot" width="600" height="396" class="aligncenter size-full wp-image-8683"></p>

<p>I used <a href="http://www.netfabb.com/">netFabb for Linux</a> to slice the model along the Z-Axis.  This ensured it had a smooth, flat foundation.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/Sliced-3D-Fossil.jpg" alt="Sliced 3D Fossil" width="495" height="187" class="aligncenter size-full wp-image-8684"></p>

<p>The resolution of this particular scan was quite low - and is taken from a plaster cast of the original small fossil - but even still, I'm impressed with how well the print turned out.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/Printed-Fossil.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/Printed-Fossil.jpg" alt="Printed Fossil" width="800" height="587" class="aligncenter size-full wp-image-8685"></a></p>

<p>The printer got a little skew-whiff towards the end of the print, so I finished it early. Even so - it's easy to see how well some of the features have printed out.</p>

<p>Now I need to find some larger, and more interesting things to extrude!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8682&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/08/3d-printing-fossils/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review: The Art of the Brick]]></title>
		<link>https://shkspr.mobi/blog/2013/08/review-the-art-of-the-brick/</link>
					<comments>https://shkspr.mobi/blog/2013/08/review-the-art-of-the-brick/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 06 Aug 2013 11:00:59 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[lego]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8548</guid>

					<description><![CDATA[While we were in New York City, we went to see Nathan Sawaya&#039;s The Art of The Brick.  The artist uses Lego as his medium, and the art he produces is breathtaking.    The mixture of 2D and 3D is incredible.   But there are aspects of the exhibition which left me with questions about the nature of art and creativeness.  Take, for example, these statues (click to embiggen).    They are magnificent…]]></description>
										<content:encoded><![CDATA[<p>While we were in New York City, we went to see <a href="http://brickartist.com/">Nathan Sawaya's The Art of The Brick</a>.</p>

<p>The artist uses Lego as his medium, and the art he produces is breathtaking.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.30.40-2.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.30.40-2-1024x768.jpg" alt="2013-07-24 16.30.40-2" width="1024" height="768" class="aligncenter size-large wp-image-8556"></a></p>

<p>The mixture of 2D and 3D is incredible.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.15.48-1.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.15.48-1.jpg" alt="2013-07-24 16.15.48-1" width="816" height="612" class="aligncenter size-full wp-image-8549"></a></p>

<p>But there are aspects of the exhibition which left me with questions about the nature of art and creativeness.  Take, for example, these statues (click to embiggen).</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.22.40.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.22.40-768x1024.jpg" alt="2013-07-24 16.22.40" width="768" height="1024" class="aligncenter size-large wp-image-8554"></a></p>

<p>They are magnificent to behold, and they are stunning "in the flesh", yet - to me - they seem like slavish copies.  Perhaps it's the jagged nature of Lego, or perhaps it's the familiarity of such famous artwork, or perhaps it's in the nature of Lego that anything created with it looks like it came from a kit - but they really feel <em>inauthentic</em> to me.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.20.30.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.20.30-768x1024.jpg" alt="2013-07-24 16.20.30" width="768" height="1024" class="aligncenter size-large wp-image-8553"></a></p>

<p>It feels like the artist has simply taken an existing 3D image and reproduced it bit-by-bit brick-by-brick.  In effect, it's not creating a piece of art, it's building from a plan.</p>

<p>An excellent example of this is with the 2D art.</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.17.08.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.17.08-1024x768.jpg" alt="2013-07-24 16.17.08" width="1024" height="768" class="aligncenter size-large wp-image-8551"></a></p>

<p>It really looks like a 2D image has been downloaded from Wikipedia, then run through a PhotoShop filter, then pieced together.  It just doesn't feel like the craftsmanship of an artist.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.17.28.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.17.28-1024x768.jpg" alt="2013-07-24 16.17.28" width="1024" height="768" class="aligncenter size-large wp-image-8552"></a>
I took <a href="http://en.wikipedia.org/wiki/Self-portraits_by_Rembrandt">Rembrandt's self portrait of 1657</a>, shrank it, brightened it, and made it full sized again.  There's a very low level of difference between mine and the brick version.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/rembrant-block.jpg" alt="rembrant block" width="600" height="560" class="aligncenter size-full wp-image-8565"></p>

<p>What strikes me, is that there is some amazing art within the exhibition.  So much original, conceptual, and beautiful art.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.26.41.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.26.41-768x1024.jpg" alt="2013-07-24 16.26.41" width="768" height="1024" class="aligncenter size-large wp-image-8555"></a></p>

<p>There are moments which brought forth incredible emotions within me.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.31.05.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.31.05-768x1024.jpg" alt="2013-07-24 16.31.05" width="768" height="1024" class="aligncenter size-large wp-image-8557"></a></p>

<p>And others which left me utterly cold at the seemingly automated nature of production.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.16.42.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/2013-07-24-16.16.42-1024x768.jpg" alt="2013-07-24 16.16.42" width="1024" height="768" class="aligncenter size-large wp-image-8550"></a></p>

<p>Should art be difficult?  There is a skill level required to produce, say, an oil painting - even if you are just copying the work of an old master.  Perhaps Nathan Sawaya is copying existing art by eye - using his skill to convert paintings to bricks.  I just can't escape the feeling that some - not all - of the pieces don't meet my rather woolly criteria for art.</p>

<p><a href="https://web.archive.org/web/20130806172005/http://www.discoverytsx.com/exhibitions/art-of-the-brick">The Art of the Brick</a> is currently in Discovery Times Square and is well worth a look if you're in town.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8548&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/08/review-the-art-of-the-brick/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[3D Printed Coins]]></title>
		<link>https://shkspr.mobi/blog/2013/08/3d-printed-coins/</link>
					<comments>https://shkspr.mobi/blog/2013/08/3d-printed-coins/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 05 Aug 2013 07:30:19 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d printing]]></category>
		<category><![CDATA[openscad]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8534</guid>

					<description><![CDATA[It goes without saying that counterfeiting coins is illegal.  Sir Isaac Newton when he was Master of the Mint, had people hanged or tortured for illegally producing coins.  So, don&#039;t do it, ok!  That said, coins are very useful as calibrators for 3D printers.  They come in various shapes, sizes, and thickness.  More importantly, it&#039;s really easy to compare a 3D printed coin with one in your…]]></description>
										<content:encoded><![CDATA[<p>It goes without saying that counterfeiting coins is illegal.  Sir Isaac Newton when he was Master of the Mint, had people hanged or tortured for illegally producing coins.  So, don't do it, ok!</p>

<p>That said, coins are very useful as calibrators for 3D printers.  They come in various shapes, sizes, and thickness.  More importantly, it's really easy to compare a 3D printed coin with one in your pocket.  Or, even, just by looking at them.</p>

<p>I've spent the last few days creating a basic set of 3D coins - based on the UK's currency.
<a href="http://www.thingiverse.com/thing:127705"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/08/3D-Coins-MeshLab-fs8.png" alt="3D Coins MeshLab" width="537" height="443" class="aligncenter size-full wp-image-8543"></a></p>

<p>The <a href="https://www.royalmint.com/discover/uk-coins/coin-design-and-specifications/">Royal Mint maintains openly available specifications for all UK coins</a>.  Predictably, they don't have the coins in a readily available 3D format :-)</p>

<p>The faces and designs of the coins are also not available.  Using a high resolution photo of the designs could be used to generate a height map suitable for printing - but I'll leave that for version 2!</p>

<p>One interesting thing to note, the 20p and 50p are not heptagons and pentagons as many people think.  They are <a href="https://en.wikipedia.org/wiki/Reuleaux_triangle">Reuleaux Polygons</a>.  The mathematics behind them is a little to taxing for a hungover Sunday morning, so I used <a href="http://www.thingiverse.com/thing:25152">Dan Newman's freely available OpenSCAD template from Thingiverse</a>.</p>

<p>You can <a href="http://www.thingiverse.com/thing:127705">download the UK coins STL file from Thingiverse</a> or <a href="https://github.com/edent/3D-UK-Money">fork the coins on GitHub</a>.  Hopefully, in the next week or so I'll print them out on the <a href="https://web.archive.org/web/20130823231603/https://thelab.o2.com/2013/07/3d-printer-day-2/">new 3D printer I've been building</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8534&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/08/3d-printed-coins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Armadillo Roll - Open GL Game for Android]]></title>
		<link>https://shkspr.mobi/blog/2009/07/armadillo-roll-open-gl-game-for-android/</link>
					<comments>https://shkspr.mobi/blog/2009/07/armadillo-roll-open-gl-game-for-android/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 28 Jul 2009 12:23:51 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=318</guid>

					<description><![CDATA[Feast your eyes on these beauties.  Amarillo Roll is a 3D game in the same style as Super Monkey Ball.  You tip your phone to move the armadillo around the course.  The graphics are stunning. Reminiscent of early Xbox games. The one thing the photos don&#039;t do is convey the speed of gameplay - it&#039;s fast!    The game is a tech demo from Qualcomm.  You can download Armadillo Roll directly from the…]]></description>
										<content:encoded><![CDATA[<p>Feast your eyes on these beauties.</p>

<p>Amarillo Roll is a 3D game in the same style as Super Monkey Ball.  You tip your phone to move the armadillo around the course.  The graphics are stunning. Reminiscent of early Xbox games. The one thing the photos don't do is convey the speed of gameplay - it's fast!</p>

<p><a href="https://web.archive.org/web/20090801002244/http://shkspr.mobi/blog/index.php/2009/07/armadillo-roll-open-gl-game-for-android/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2009/07/Screenshots-of-Armadillo-Roll.png" alt="Screenshots of Armadillo Roll." width="630" height="711" class="aligncenter size-full wp-image-47521"></a></p>

<p>The game is a tech demo from Qualcomm.  You can <a href="https://web.archive.org/web/20140818151506/https://play.google.com/store/apps/details?id=com.qualcomm.qx.dillo">download Armadillo Roll directly from the Marketplace to your phone</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=318&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2009/07/armadillo-roll-open-gl-game-for-android/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
