<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Zonja Capalini</title>
	<atom:link href="http://zonjacapalini.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zonjacapalini.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 17 Jan 2012 15:14:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='zonjacapalini.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Zonja Capalini</title>
		<link>http://zonjacapalini.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://zonjacapalini.wordpress.com/osd.xml" title="Zonja Capalini" />
	<atom:link rel='hub' href='http://zonjacapalini.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Condensation Land: A status report</title>
		<link>http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 14:48:41 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[Condensation Land]]></category>
		<category><![CDATA[OpenSim]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=805</guid>
		<description><![CDATA[{EAV_BLOG_VER:3fdb12a10a5100bd} Introduction Recently, the page about performance in the Opensim wiki has been extensively updated, and this prompted me to gather some data for Condensation Land, a mini virtual world powered by Opensim which I administer, to be able to add this data to the page. Condensation Land is special in the sense that while [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=805&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>{EAV_BLOG_VER:3fdb12a10a5100bd}</p>
<h2>Introduction</h2>
<p style="text-align:justify;"><a href="https://lists.berlios.de/pipermail/opensim-dev/2010-August/009256.html">Recently</a>, the page about <a href="http://opensimulator.org/wiki/Performance">performance</a> in the <a href="http://opensimulator.org/wiki/Main_Page">Opensim wiki</a> has been extensively updated, and this prompted me to gather some data for <a href="http://blog.condensationland.com/about/">Condensation Land</a>, a mini virtual world <a href="https://lists.berlios.de/pipermail/opensim-dev/2010-August/009206.html">powered by Opensim</a> which I administer, to be able to add this data to the page. Condensation Land is special in the sense that while it&#8217;s a quite small, home-based, world, at the same time it hosts a relatively big number of prims and scripts, and I thought that adding that data to the page might end up being useful to somebody.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0840 - Temple 1 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4907307718/"><img src="http://farm5.static.flickr.com/4137/4907307718_be494ab7fd.jpg" alt="0840 - Temple 1" width="500" height="392" /></a><p class="wp-caption-text">Temple, an island by Omurtag Milev in Condensation Land</p></div>
<p style="text-align:justify;">When collecting the data I had to visit all the islands, one by one, and this made me remember the story of Condensation Land, how it all started, the things we did there, the people who have contributed wonderful stuff to be displayed, and I thought I&#8217;d write a blog post listing and commenting detailedly the technical data I had gathered, and at the same time giving an account of the history of the mini-world.</p>
<p style="text-align:justify;"><span id="more-805"></span></p>
<h2>History</h2>
<p style="text-align:justify;">Condensation Land started as an experiment in looking for alternatives to Second Life after <a href="http://zonjacapalini.wordpress.com/2008/11/06/we-believe-this-is-fair/">the OpenSpace fiasco</a>. The initial six months of this process are explained in detail <a href="http://zonjacapalini.wordpress.com/2009/04/30/the-openspace-fiasco-six-months-later/">here</a>. Shortly after writing <a href="http://zonjacapalini.wordpress.com/2009/04/30/the-openspace-fiasco-six-months-later/">this article</a>, the company I was working for <a href="http://zonjacapalini.wordpress.com/2010/02/21/sl-vs-webex-the-myth-of-second-life-as-a-platform-for-education/">decided that virtual world technology was not adequate for their needs and started using WebEx</a>. The initial founders of Condensation Land (<a href="http://maxping.org/virtual-life/other/interview-of-ludmilla-writer.aspx">Ludmilla Writer</a>, <a href="http://www.flickr.com/photos/favio_piek/">Favio Piek</a> and myself) decided to keep Condensation Land as an experiment and a playground, and to invite people to show their content in the mini-world.</p>
<h2>Technical status</h2>
<p style="text-align:justify;">Condensation Land is a mini virtual world powered by Opensim. We are using <a href="http://github.com/diva/d2/downloads">r13558</a> of <a href="http://github.com/diva/d2">the Diva distribution (D2)</a>; the <a href="http://www.metaverseink.com/blog/?p=37">Wifi</a> page can be accessed <a href="http://condensationland.com:9000/wifi">here</a>. Condensation Land has a WordPress <a href="http://blog.condensationland.com/">blog</a>, used mainly to keep users informed of new releases and content additions, and <a href="http://www.flickr.com/groups/1002355@N24/">a Flickr group</a>.</p>
<h3>The physical machine</h3>
<p style="text-align:justify;">The whole Condensation Land virtual world runs on a non-dedicated home machine with Windows XP SP3, 3 GB of RAM, and two SATA ST3400620AS HD&#8217;s of 372 GB each. The first HD (C:) hosts the operating system and the swapfile, while the second HD (D:) is dedicated to Opensim and MySQL. Apart from keeping the system updated and running the disk defragmenter every so often, the machine requires almost no maintenance.</p>
<p style="text-align:justify;">Networking is provided by JazzTel (a spanish ISP) in the form of a symmetrical 2 Mb SDSL line; the machine has an external IP address and can thus be used for HyperGrid teleports, accesed from anywhere, etc. This line costs around € 200/mo, which is more or less US$ 250/mo.</p>
<h3>World setup</h3>
<p style="text-align:justify;">Condensation Land (loginuri: http://condensationland.com:9000) comprises 11 regions, of which 10 are public. The region with most prims is Condensation Land, with 10,278 prims, and the region with more active scripts is Angelico Miguelis, with 706 active scripts. The whole world uses 38,065 prims and 1,934 active scripts, as detailed in the following table.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:none;border-width:1px;">+---------------------------+--------+---------+
| <strong>Region</strong>                    | <strong>Prims</strong>  | <strong>Scripts</strong> |
+---------------------------+--------+---------+
| Angelico Miguelis         | 10,024 |     706 |
| Conceptior                |  6,280 |     531 |
| Condensation Beach        |  2,455 |      46 |
| Condensation Land         | 10,278 |      97 |
| Condensation North        |  1,610 |     122 |
| Condensation South        |  1,908 |       7 |
| Condensation SouthWest    |    992 |      77 |
| Shoshisn                  |    555 |     163 |
| Temple                    |  3,239 |     139 |
| Tralfamadore              |    427 |      29 |
| (private region)          |    297 |      17 |
+---------------------------+--------+---------+
| <strong>Total</strong>                     | <strong>38,065</strong> |   <strong>1,934</strong> |
+---------------------------+--------+---------+</pre>
<p style="text-align:justify;">MyWorld.ini sets CombineContiguousRegions to false to avoid the use of megaregions. The bin\library directory contains the default IARs shipped with D2, plus the large objects library downloadable from the D2 downloads page, plus some small animation IARs created by myself with freebie anims found elsewhere. I&#8217;ve not had time to set up default avatars for male, female and neutral preferences.</p>
<h3>Performance</h3>
<p style="text-align:justify;"><span style="font-weight:normal;font-size:13px;">Opensim.exe is pretty stable. and oscilates between 0% and 10% of CPU usage (even when idle, there are a lot of scripted objects, and object status has to be saved frequently), and uses between 167 MB when idle to 512 MB with one avatar and 1 GB of RAM with some few avatars. MySQL.exe consistently uses 250-300MB of RAM, and MySQL b</span>ackups (in .sql format) occupy 3.51 GB, 1.32 GB when zipped.</p>
<p style="text-align:justify;">The following video shows a party with four avatars in the Condensation Land region:</p>
<p style="text-align:justify;"><span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/"><img src="http://img.youtube.com/vi/N0z9C0ouAlQ/2.jpg" alt="" /></a></span></p>
<h2>Content evolution</h2>
<p>After <a href="http://zonjacapalini.wordpress.com/2009/04/30/the-openspace-fiasco-six-months-later/">20090430</a>, I added <a href="http://zonjacapalini.wordpress.com/2009/07/20/2889-working-with-very-large-linksets-in-opensim/">a 2,889-prims Klein bottle</a>,</p>
<span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/"><img src="http://img.youtube.com/vi/bh_jrzglvrM/2.jpg" alt="" /></a></span>
<p style="text-align:justify;">and an exhibition called <a href="http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/">Mirror Worlds</a> featuring pictures from <a href="http://www.flickr.com/photos/florencebabenco/">Florence Babenco</a>, <a href="http://www.flickr.com/photos/ludmilla_writer/">Ludmilla Writer</a>, <a href="http://www.flickr.com/photos/mikilseptem/">Mikil Tiki</a>, <a href="http://www.flickr.com/photos/monika_finchy/">Monika Finchy</a>, <a href="http://www.flickr.com/photos/sennacoronet/">Senna</a> (SennaSpirit Coronet), <a href="http://www.flickr.com/photos/shoshisn/">Shoshisn Shilova</a> and <a href="http://www.flickr.com/photos/zonja/">myself</a>, and sculptures by <a href="http://www.flickr.com/photos/shoshisn/">Shoshisn Shilova</a>.</p>
<span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/"><img src="http://img.youtube.com/vi/4Kd379rT6Sw/2.jpg" alt="" /></a></span>
<p style="text-align:justify;">After that, a very nice thing happened: <em>people started to contribute their own stuff</em> to be shown at Condensation Land! :-)</p>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/40839520@N07/">Breen Whitman</a> donated a fantastic building called &#8220;Eastern Gaswork&#8221;, <a href="http://blog.condensationland.com/2009/10/25/check-the-wonderful-new-building-by-breen-whitman-located-in-the-se-part-of-condensation-south/">which I placed in Condensation South</a>;</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0741 - Breen Whitman's 'Eastern Gasworks' building - Outside view by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4248221483/"><img src="http://farm5.static.flickr.com/4009/4248221483_f45dff31f2.jpg" alt="0741 - Breen Whitman's 'Eastern Gasworks' building - Outside view" width="500" height="393" /></a><p class="wp-caption-text">Breen Whitman&#039;s &#039;Eastern Gasworks&#039;</p></div>
<p style="text-align:left;"><a href="http://www.flickr.com/photos/shoshisn/">Shoshisn Shilova</a> got an island (called &#8220;Shoshisn&#8221;) and <a href="http://www.flickr.com/photos/mikilseptem/">Mikil Tiki</a> got another island (called &#8220;Tralfamadore &#8211; La Mikilina&#8221;);</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0773 - Our world is growing by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4313717516/"><img src="http://farm3.static.flickr.com/2687/4313717516_43b1bde848.jpg" alt="0773 - Our world is growing" width="500" height="333" /></a><p class="wp-caption-text">Condensation Land world map after adding &quot;Shoshisn&quot; and &quot;Tralfamadore&quot;</p></div>
<p style="text-align:justify;">and finally Omurtag Milev added <a href="http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/">three awesome islands called Temple, Conceptior and AngelicoMiguelis</a>,</p>
<p style="text-align:justify;"><span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/"><img src="http://img.youtube.com/vi/ygRvFo7dRi0/2.jpg" alt="" /></a></span></p>
<p style="text-align:justify;">which you should absolutely visit (or, at least, look at the videos and pictures <a href="http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/">here</a>).</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0837 - New, fantastic islands by Omurtag Milev by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4903977699/"><img src="http://farm5.static.flickr.com/4102/4903977699_eaf2c7958c.jpg" alt="0837 - New, fantastic islands by Omurtag Milev" width="500" height="304" /></a><p class="wp-caption-text">Condensation Land world map after the addition of Omurtag&#039;s islands</p></div>
<p style="text-align:justify;">Condensation Land now has ten regions, instead of the initial five, and a lot of new wonderful places to visit! :-)</p>
<h2>Conclusion</h2>
<p style="text-align:justify;">Condensation Land is a non-for-profit, home-based, virtual world maintained in my free time (and in the free time of the respective region owners). Obviously, since we don&#8217;t get any money from it, it&#8217;s a work of love. It&#8217;s also a proof-of-concept: of what can be done with simply some free time, a lot of passion for the technology, and some very talented friends :-) I won&#8217;t say that caring for Condensation is always nice and easy &#8212; being the administrator of even such a small world as Condensation takes quite a lot of work: users forget their passwords; upgrades don&#8217;t always work; we had a serious case of inventory messup, where tons of spurious folders were created and which I had to clean manually using SQL; sometimes electricity fails for so long that the UPS dies (yes, this happens in Barcelona in 2010) and the machine has to be physically restarted; and so on. But the feeling of having all this wonderful stuff in a machine of yours, and of being able to share it with the world, is more than enough to compensate for all of it :-)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/805/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=805&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/08/25/condensation-land-a-status-report/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4137/4907307718_be494ab7fd.jpg" medium="image">
			<media:title type="html">0840 - Temple 1</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4009/4248221483_f45dff31f2.jpg" medium="image">
			<media:title type="html">0741 - Breen Whitman&#039;s &#039;Eastern Gasworks&#039; building - Outside view</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2687/4313717516_43b1bde848.jpg" medium="image">
			<media:title type="html">0773 - Our world is growing</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4102/4903977699_eaf2c7958c.jpg" medium="image">
			<media:title type="html">0837 - New, fantastic islands by Omurtag Milev</media:title>
		</media:content>
	</item>
		<item>
		<title>Three islands by Omurtag Milev</title>
		<link>http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:34:10 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[Condensation Land]]></category>
		<category><![CDATA[AngelicoMiguelis]]></category>
		<category><![CDATA[Conceptior]]></category>
		<category><![CDATA[Condensation]]></category>
		<category><![CDATA[Omurtag]]></category>
		<category><![CDATA[Omurtag Milev]]></category>
		<category><![CDATA[SL Exodus]]></category>
		<category><![CDATA[Temple]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=791</guid>
		<description><![CDATA[I&#8217;m proud to announce that we have three new islands in Condensation Land: Temple (secondlife://condensationland.com:9000:Temple), AngelicoMiguelis (secondlife://condensationland.com:9000:AngelicoMiguelis) and Conceptior (secondlife://condensationland.com:9000:Conceptior). All three islands were created by the incredibly talented Omurtag Milev (blog, Flickr). Omurtag has had several islands in Second Life, he&#8217;s been the curator of several exhibitions, and he&#8217;s more creative than I can adequately describe [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=791&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a title="0837 - New, fantastic islands by Omurtag Milev by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4903977699/"><img class="aligncenter" src="http://farm5.static.flickr.com/4102/4903977699_eaf2c7958c.jpg" alt="0837 - New, fantastic islands by Omurtag Milev" width="500" height="304" /></a></p>
<p style="text-align:left;">I&#8217;m proud to announce that we have three new islands in <a href="http://blog.condensationland.com/about/">Condensation Land</a>: <strong>Temple</strong> (secondlife://condensationland.com:9000:Temple), <strong>AngelicoMiguelis </strong>(secondlife://condensationland.com:9000:AngelicoMiguelis) and <strong>Conceptior </strong>(secondlife://condensationland.com:9000:Conceptior).</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0840 - Temple 1 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4907307718/"><img src="http://farm5.static.flickr.com/4137/4907307718_be494ab7fd.jpg" alt="0840 - Temple 1" width="500" height="392" /></a><p class="wp-caption-text">Temple</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0849 - Conceptior 2 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4923169246/"><img src="http://farm5.static.flickr.com/4081/4923169246_15dbbdf9c2.jpg" alt="0849 - Conceptior 2" width="500" height="392" /></a><p class="wp-caption-text">Conceptior</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0845 - AngelicoMiguelis 1 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4923139148/"><img src="http://farm5.static.flickr.com/4139/4923139148_197717aa8b.jpg" alt="0845 - AngelicoMiguelis 1" width="500" height="392" /></a><p class="wp-caption-text">Angelico Miguelis</p></div>
<p style="text-align:center;">
<p style="text-align:justify;"><span id="more-791"></span></p>
<p style="text-align:justify;">All three islands were created by the incredibly talented <strong>Omurtag Milev</strong> (<a href="http://www.boriozimondo.com/blogoms/blogomssleatops.html">blog</a>, <a href="http://www.flickr.com/photos/purejam/">Flickr</a>). Omurtag has had several islands in Second Life, he&#8217;s been the curator of several exhibitions, and he&#8217;s more creative than I can adequately describe in words &#8212; therefore, I will leave you with two videos showing these islands, and with the recommendation to visit them, via Hypergrid 1.5 or using your local avatar, if you have one.</p>
<span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/"><img src="http://img.youtube.com/vi/ygRvFo7dRi0/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/"><img src="http://img.youtube.com/vi/035sUga4KoY/2.jpg" alt="" /></a></span>
<p>So much for the idea that virtual worlds powered by Opensim are wastelands :-)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/791/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=791&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/08/24/three-islands-by-omurtag-milev-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4102/4903977699_eaf2c7958c.jpg" medium="image">
			<media:title type="html">0837 - New, fantastic islands by Omurtag Milev</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4137/4907307718_be494ab7fd.jpg" medium="image">
			<media:title type="html">0840 - Temple 1</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4081/4923169246_15dbbdf9c2.jpg" medium="image">
			<media:title type="html">0849 - Conceptior 2</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4139/4923139148_197717aa8b.jpg" medium="image">
			<media:title type="html">0845 - AngelicoMiguelis 1</media:title>
		</media:content>
	</item>
		<item>
		<title>SL vs. WebEx: The myth of Second Life as a platform for education [Update 2]</title>
		<link>http://zonjacapalini.wordpress.com/2010/02/21/sl-vs-webex-the-myth-of-second-life-as-a-platform-for-education/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/02/21/sl-vs-webex-the-myth-of-second-life-as-a-platform-for-education/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:10:24 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Product Comparison]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[WebEx]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=753</guid>
		<description><![CDATA[Surprisingly, Opensim fares quite better than SL in that respect [See the list of updates at the end of the article] Introduction A Google Buzz by Mo Hax alerted me of the existence of an article in PC Pro containing yet another interview to M Linden. M explains there that SL is being used for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=753&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Surprisingly, Opensim fares quite better than SL in that respect</h3>
<p>[See the list of updates at the end of the article]</p>
<h2>Introduction</h2>
<p style="text-align:justify;">A <a href="http://www.google.com/buzz/imohax/gjBqGQM14kq/CEO-of-Second-Life-again-makes-point-it-isnt-about">Google Buzz by Mo Hax</a> alerted me of the existence of <a href="http://www.pcpro.co.uk/news/355681/linden-lab-boss-sex-isnt-the-key-to-second-life">an article in PC Pro</a> containing yet another interview to M Linden. M explains there that SL is being used for &#8220;meetings&#8221;, as a &#8220;virtual collaboration tool&#8221;, and that it provides &#8220;incredible savings&#8221;. This is not new. If you google for &#8220;Second Life Education&#8221;, the second hit leads you to &#8220;<a href="http://secondlifegrid.net/slfe/education-use-virtual-world">How Education Enterprises Use Virtual Worlds</a>&#8220;, a page by LL detailing how great is SL for educators. Similarly, the Second Life Blogs are full of references to SL as a tool for educators. For example, in a one year old article, <a href="https://blogs.secondlife.com/community/workinginworld/blog/2009/02">As Seen on CNBC: New IBM Case Study Showcases Value of Meeting Inworld</a>, Amanda Linden compares Second Life to <a href="http://www.webex.com/">Webex</a> and says that Second Life &#8220;creates a [more] immersive experience&#8221;.</p>
<p style="text-align:justify;">Does really &#8220;immersion&#8221; provide an advantage for online meetings? Is &#8220;immersion&#8221; something that can be asked of somebody, a student or an employee, for example? What is the cost of being able to offer &#8220;immersion&#8221;, and how does it relate to the supposed benefits? Are Second Life/Opensim and other tools, like Webex, comparable? If yes, how do Second Life and Opensim fare when compared to them?</p>
<p style="text-align:justify;">In this post I will try to address these questions. To do so, I will use two strategies: on the one hand, I will make a product comparison between SL, Opensim and Webex, comparing features, price, quality of technical support, etc: on the other hand, I will resort to my own experience: I have been working for companies that have used Second Life and Opensim for education and meetings for more than two years, and I&#8217;ll share some of the things I have observed.<span id="more-753"></span></p>
<h2>Product comparison</h2>
<h2>1. Features</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">                       | Second Life | Opensim+Skype | WebEx
<hr />  Voice                | Builtin     | Builtin(Skype)| Builtin
  Slide shows          | Complicated | Complicated   | Builtin
  Whiteboards          | --          | --            | Builtin
  App/Desktop sharing  | --          | --            | Builtin
  Real-time video      | Third-party | Third-party   | Builtin
  Mixing it all        | Bad         | Better        | Builtin</pre>
<p style="text-align:justify;">The needs for educators and for people wanting to hold online meetings are quite similar and very clear. First of all, they need some form of <strong>voice conferencing system</strong>. In most cases, there is a need to present <strong>slideshows </strong>(ideally, Powerpoint presentations); a form of <strong>shared black- or whiteboard</strong> is also very useful; the possibility of <strong>sharing an application or the full desktop</strong> comes also very handy; and having some form of <strong>real-time video streaming</strong> is also very desirable, so that &#8220;remote&#8221; people can see the teacher or the person who&#8217;s currently speaking.</p>
<p style="text-align:justify;">For our feature comparison we will use three scenarios: Second Life, an Opensim grid with voice over Skype, and WebEx.</p>
<h3>Voice</h3>
<p style="text-align:justify;">Voice is a built-in feature of both Second Life and WebEx, and can be implemented using Skype in Opensim grids (there&#8217;s also an Opensim solution for voice, Freeswitch, but I haven&#8217;t used it and I can&#8217;t comment about it). Both Skype and WebEx have excellent dynamic noise and coupling cancellation algorithms &#8212; many participants won&#8217;t need to mute their microphone while not speaking because of these algorithms. On the other hand, Second Life voice algorithms are much more sensitive to noise and coupling, and this implies that everybody has to be very careful to mute their microphone when not speaking, and that you&#8217;ll have coupling problems in mixed reality scenarios in the RL end of the meeting.</p>
<h3>Slideshows</h3>
<p style="text-align:justify;">Slideshows are directly supported in WebEx &#8212; you can directly share a Powerpoint presentation, or, if you are using a different application for your presentation, you can share that application. In Second Life/Opensim, on the other hand, even such a simple task is painful and unreliable. You can capture all your slides as images, for example using a screen capture program, upload these images (which costs some additional money in Second Life, but not in most Opensim grids), and then build a slide presentation tool (or buy one) and put all the textures inside the tool. The textures get rescaled to a maximum of 1024&#215;1024, which can be a nuisance in some cases, and when you change textures there&#8217;s a good chance that some of the clients don&#8217;t load the texture in time, so that they see a gray screen or a partially rezzed texture (there are some ways to overcome this problem, but they imply extra work and they vary between releases).</p>
<p style="text-align:justify;">Another possibility is to create some web pages that contain your presentation, and either write a small program that interacts with the parcel media to show these pages in a screen or manually change the displayed page. In all cases, you have to play with the texture so that it fits the screen and your presentation is not cut or has ugly extra margins, which is tedious and wastes some time.</p>
<p style="text-align:justify;">It should be noted here that while Second Life forces you to choose between showing a web-based presentation or a video stream, this is not the case with Opensim: you can use the <a href="http://opensimulator.org/wiki/Dynamic_textures">OsSetDynamicTextureURL </a>function to load a presentation from the web into a prim while still showing video via the parcel media.</p>
<h3>Whiteboards</h3>
<p style="text-align:justify;">WebEx has a built-in whiteboard, and you can decide with whom to share it. Of course it&#8217;s not very comfortable to use, but no softwate whiteboard is. In Second Life or Opensim there is simply no way to implement a whiteboard.</p>
<h3>Application or desktop sharing</h3>
<p style="text-align:justify;">WebEx has builtin support for application and desktop sharing &#8212; if in the middle of a class or a meeting you realize you&#8217;d like to show a web page to your attendees, for example, you can open that page in a web browser and share the browser, so that everybody can see the page. Second Life or Opensim do not implement any form of application or desktop sharing. There have been some experiments done with a plugin for VNC, but it&#8217;s not still something usable by the general public. Much before the tests with Second Life, RealXtend (an Opensim derivative) allowed <a href="http://www.cybertechnews.org/?p=1343">VNC sharing on a prim</a>.</p>
<h3>Real-time video streaming</h3>
<p style="text-align:justify;">WebEx has built-in support for up to six simultaneous video streams. Image quality depends a lot on bandwidth and is generally webcam-like, but the synchronization with audio is perfect, and you experience no delay. Second Life or Opensim do not act as stream broadcasters, so that you have to buy a separate solution for video streaming (like Veodia) that meets the specifications of streams for Second Life (for example, if your streaming provider sends Windows Media or Flash streams you&#8217;re out of luck). Then you have to configure Second Life so that the parcel media displays the streamed video, which is not complicated in itself but requires some skills (while the WebEx solution works out of the box). Of course you can only have one video stream, not six like in WebEx.</p>
<h3>Mixing it all</h3>
<p style="text-align:justify;">Of course in a real class of meeting you&#8217;ll want to mix all these elements dynamically following the needs of the meeting. For example, you may want to switch from your presentation to a whiteboard or a web page, and then get back to your presentation; or you might want to enlarge the video signal of somebody who&#8217;s making a long speech and then get back to your slideshow, etc. With WebEx all of this is very simple and can be performed with some few clicks; with Second Life, some things can not be done, and others are painful and disruptive to the meeting or class. For example, you can interrupt a web-based presentation and connect a video channel instead, but this takes some programming or complicated manual intervention, during which the class is interrupted, and then you have to wait for the video to buffer &#8212; very disruptive.</p>
<p style="text-align:justify;">Opensim and its derivatives fare slightly better that Second Life in that respect: as noted, Opensim allows to texture a prim from a URL, which SL does not, and this can allow for simultaneous web-based presentations and video streams; RealXtend implements some support for VNC desktop sharing and also allows to have several video streams in the same parcel, etc.</p>
<h2>2. Costs</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">                       | Second Life   |  WebEx
                       | Min    Avg    |  Min    Avg
<hr />                       | ------ ------ | ------ ------
  Setup fee            |  1,000  1,000 |      0    300
  Avatar setup         |      0    481 |    N/A    N/A
  Streaming video/mo   |      0     84 |      0      0
  Monthly fees (1 sim) |    295    295 |     42     81
  Monthly cost (-setup)|    295    379 |     42     81
  Yearly cost  (+setup)|  <strong>4,540  6,029</strong> |    <strong>504  1,272</strong></pre>
<p style="text-align:justify;font-size:80%;">[Legend: This is a cost comparison for 25 avatars. We have estimated an average of L$ 5000 per avatar to make them look decent. We have converted L$ to US$ assuming a 260 conversion rate. Streaming video costs are calculated assuming a yearly cost of US$ 1000. All numbers are expressed in US$ and rounded to the nearest integer.]</p>
<p style="text-align:justify;">All considered, it&#8217;s clear that Second Life/Opensim cannot be compared to WebEx in terms of features and ease of use. Let&#8217;s examine now costs.</p>
<h3>Second Life</h3>
<p style="text-align:justify;">To be able to have complete control of your experience, you&#8217;ll need a private island &#8212; if you rent a homestead from a land baron, you risk having your land confiscated at any time without reason or warning and lose all your work and money, and you&#8217;ll not be able to do anything about it; things like this are happening every day in Second Life. A full sim has a setup fee of US$ 1000 and a monthly fee of US$ 295. Then you&#8217;ll have to invest money in buying the tools you need or develop them yourself. If you want your executives, employees, students etc to look good, you have to spend between L$ 5000 to L$ 10000 per user, and lose time buying clothes, skins, hair, etc &#8212; this can be a lot of time if you don&#8217;t want to end up with an army of clones. Finally, if you need video, you have to shop for a suitable streaming video provider and pay for the service, which can cost you around US$ 1000 per year.</p>
<h3>Opensim</h3>
<p style="text-align:justify;">Opensim in itself is not a service, as Second Life and WebEx are, and this the reason why I have not included Opensim in the above comparison (it does not make sense to speak of &#8220;the cost of Opensim&#8221;, but of the cost of a determinate solution using Opensim, and there&#8217;s no sensible way to determine what&#8217;s &#8220;minimum&#8221; or &#8220;average&#8221; in this context). Opensim software is in itself is free, and, therefore, depending on your existing infrastructure, costs may start at US$ 0, and add as you need to hire services from third parties (i.e., video, a hosting provider, etc).</p>
<h3>WebEx</h3>
<p style="text-align:justify;">WebEx has a small one-time setup fee (something like €200 in Spain, this should be around US$ 300 &#8212; I&#8217;m not sure this applies to the USA), and a monthly cost of US$ 42 (we pay more in Spain, € 54, which should something like US$ 81).</p>
<h3><strong>3. Support</strong></h3>
<p style="text-align:justify;">Webex offers email-based and phone-based technical support. If a user has problems with her connection, you can send them to WebEx support and they help them. With WebEx, you have a <strong>single point of support</strong>, and it works acceptably well.</p>
<p style="text-align:justify;">On the other hand, although technical support people from Second Life are very polite, helpful and nice (at least at the concierge level), getting effective support there is always a mess, and in some cases plainly impossible. Since <strong>Linden Lab only sells you &#8220;the platform&#8221; and you have to buy your tools elsewhere</strong> (for example, a scripted screen for presentations), if that tool fails you can&#8217;t call the Lindens for help &#8212; <strong>you have to contact the author of the tool</strong> instead. Most merchants in SL are fine people and are very helpful, but in case they are not, you don&#8217;t have a place to complain. The same is true when you want to solve a problem with video streaming: the Lindens can&#8217;t help, because they are only selling &#8220;the platform&#8221;; the video provider will say that you have a problem with your ISP, and your ISP that you have a problem with your streaming provider. To summarize, <strong>in a typical setup you may have 10-20 points of support</strong>, and this is clearly a mess and not efective at all.</p>
<p style="text-align:justify;">I can&#8217;t comment on the level of support for Opensim hosting providers, since I have never tried one. Anyway, if you are using Opensim you&#8217;re supposed to have a good technical level, since Opensim is alpha software. And the Opensim community is very enthusiastic and helpful. In any case, at the moment Opensim is not for amateurs.</p>
<h2>Immersion</h2>
<h2>A theoretical approach</h2>
<p style="text-align:justify;">We saw that Second Life/Opensim do not compare to WebEx in terms or features or ease of use, and we have just seen that it doesn&#8217;t compare either in terms of costs or support. Since many people insist on the interest and even superiority of Second Life as a platform for meetings and education, and this superiority cannot be attributed to the features, ease of use, costs or support, there must exist a different factor which is exclusive to Second Life/Opensim (or where Second Life/Opensim excels) and which compensates for the inferiority of the product in other areas. But the only candidate for such a factor is <strong>immersion</strong>.</p>
<p style="text-align:justify;">Contrary to &#8220;features&#8221;, &#8220;cost&#8221; or &#8220;support&#8221;, which are <strong>objective qualities of a product</strong>, &#8220;immersion&#8221; is a <strong>psychological quality of experience</strong>, and therefore a subjective factor and ultimately something which cannot be attributed to a product, but to the way users experience it &#8212; and this will vary wildly from one user to another, as such is the prerrogative of everything subjective. Defining &#8220;immersion&#8221;, as with everything subjective, is difficult. If you ask somebody who <strong>has</strong> experienced immersion whether they know how to define it, they will reply &#8220;yes, for sure&#8221; &#8212; but when actually confronted to the task of defining it, they will begin to hesitate &#8212; this is due to a very common fact: mistaking the certainty of having experienced something with one&#8217;s ability to define what one has experienced.</p>
<p style="text-align:justify;">Thus, we will not attempt to define <strong>what immersion is</strong> &#8212; this would be a task for an essay, not a blog post. What we will do is to look at <strong>how the term is used</strong>, what are its most usual synonyms, and proceed from there &#8212; this will be enough for the purposes of this post.</p>
<p style="text-align:justify;">&#8220;Immersion&#8221; is usually used as &#8220;the feeling of being there&#8221;. When used in this way, the argument of those defending immersion runs as follows: products like WebEx (or even more sophisticated teleconferencing systems) don&#8217;t provide the feeling of &#8220;actually being there&#8221;, because you are permanently confronted to a screen which gives you, at most, an abstraction of what&#8217;s going on &#8220;in the other side&#8221; &#8212; immersion, however, makes you feel &#8220;present&#8221; in that other side, and therefore somehow abolishes the separation between &#8220;your place&#8221; and &#8220;the other side&#8221;. The argument starts to falter when you ask why that feeling of &#8220;presence&#8221; or &#8220;immersion&#8221; should be benefical for attending a meetings or a class. Indeed here <strong>the argument mistakes &#8220;being there&#8221; in the physical sense for &#8220;being there&#8221; in the intellectual sense</strong>. What is needed for a successful meeting or class is <strong>not</strong> &#8220;the feeling of being there&#8221;, which is something psychological and ultimately cannot be evaluated, but <strong>the actual fact of being involved in the conversation and participating in it</strong>, which is something objective, can be evaluated, and <strong>does not depend on &#8220;feeling that you are there&#8221;</strong>. In fact, the actual surroundings are of no importance when you are actually involved in a conversation &#8212; this explains why some people close their eyes when concentrating: surroundings are distracting, a nuisance &#8212; be them &#8220;there&#8221; or &#8220;here&#8221;.</p>
<h2>Actual experiences</h2>
<p style="text-align:justify;">&#8220;Immersion&#8221; is therefore a state of the mind. It always involves some dose of <strong>roleplaying</strong>: you have to <strong>pretend</strong> that you are your avatar, you have to act <strong>as if</strong> the other avatars actually &#8220;are&#8221; other people, you have to behave as if &#8220;you&#8221; are sitting when your avatar &#8220;sits&#8221;, &#8220;you&#8221; are actually shaking hands to other people when your avatar shakes hands with another avatar, and so on.</p>
<p style="text-align:justify;">The fact is that <strong>not everybody experiences immersion</strong>. See for example what Eric Krangel, reporter for Reuters in Second Life, had to say <a href="http://www.businessinsider.com/2008/11/why-reuters-left-second-life-and-how-linden-lab-can-fix-it">in an interview for the Silicon Valley Insider</a>: <em>&#8220;As part of walking my &#8216;beat,&#8217; I&#8217;d get invited by sources to virtual nightclubs, where I&#8217;d right-click the dancefloor to send my avatar gyrating as I sat at home at my computer. It was about as fun as watching paint dry.&#8221; </em>You could argue that Mr. Krangel was somehow immersion-impaired, and that Reuters could well have chosen somebody with better feelings towards the product &#8212; but the fact is that my experiences with other people are very similar to Mr. Krangel&#8217;s experiences.</p>
<p style="text-align:justify;">Now I hear the legions of immersionist fanatics starting to organize a lynch mob in which I would be the unwilling star. Stop it. I&#8217;m an immersive avatar, I enjoyed immersion since my first second in Second Life, I have an active and wonderful social life in Second Life, and I&#8217;m myself in love with virtual worlds. I even <a href="http://blog.condensationland.com/">host an Opensim-based micro-grid</a>. Go check my <a href="http://www.flickr.com/photos/zonja/">Flickr</a>, my <a href="http://www.youtube.com/user/ZonjaCapalini">YouTube</a> or <a href="http://zonjacapalini.wordpress.com/">this blog</a> for details. It&#8217;s not about me that I&#8217;m speaking, but about what&#8217;s happening to most people.</p>
<p style="text-align:justify;">For example: In the companies I worked for, I personally trained 20+ people: executives, teachers and advanced students. I showed them how the client worked, accompanied them to buy nice skins and clothes, taught them how to use the tools needed to manage a meeting or a class, etc. Of these 20+ people only three (3!) found the experience interesting enough that they devoted some of their free time to explore the world, socialize, etc. Other people ranged from a sudden and immediate <strong>loss of interest</strong> (i.e., they never used it except when it was needed for their work) to a clear <strong>phobia to use the system</strong>: they said that they felt &#8220;ridiculous using that game&#8221;, that they felt that their avie was &#8220;a sinister puppet&#8221;, and they could never go beyond the feeling that <strong>they were being forced to use a game that was distracting them from the tasks they had to perform</strong>.</p>
<h2>Horrors of (non) immersion &#8211; a sample case</h2>
<p style="text-align:justify;">Here&#8217;s a case I followed closely: classes were held in a mixed-reality scenario; some of the students attended the class in RL, while others came via Second Life. An image of the SL class was projected in the RL class, and a real-time video of the RL class was shown in SL. The audio system was configured in such a way that what was being said in RL was channeled to the audio stream of SL, and when somebody from SL spoke, their woice was heard in RL through the speakers.</p>
<p style="text-align:justify;">Cool, no?</p>
<p style="text-align:justify;">Well, in reality it was not cool at all. Let&#8217;s see what happened:</p>
<h3>SL side</h3>
<p style="text-align:justify;">In the SL side, things got pretty boring after the first minutes. The sitting animations are mostly static, and animations for teachers are dull and repetitive. After taking a peek at their fellow students and at the classroom, the interest of people participating in the class via SL faded quickly &#8212; the only visual element that could show any novelty was the video stream, which had a delay of 5+ second with respect to the voice channel and therefore gave a somehow creepy impression. Most people ceased to look at their screens or opened another application (to sort out their spam in the meanwhile, for example). This had the unwanted side effect to make them fall in the &#8220;away&#8221; state rather quickly. Since many of them had absolutely refused to spend a cent in bettering their appearance, they were not precisely nice looking. And they were away. Very depressing :-)</p>
<h3>RL side</h3>
<p style="text-align:justify;">In the RL side things were not much better. Since most RL students were not aware of the existence or meaning of virtual worlds, projecting an SL image in the RL class gave them the impression they were being shown a video game. SL has glicthes and SL students weren&#8217;t very skilled at managing the product, so that they ended up sitting in the head of some fellow student, sitting on a table, suddenly unsitted and started to fly, etc, which was extremely distracting for everybody, real or virtual, and interrupted the class. Spatial voice is a disaster for classes; when a student that was sitting far away from the camera spoke, the RL teacher had to quickly move the camera so that she could be heard. Changing web-based slides was a mess and interrupted the class, and so on.</p>
<h3>The immersive people</h3>
<p style="text-align:justify;">I&#8217;ve already mentioned that some few people had immersive avatars. You could quickly identify them because their avatars were much more beautiful, they took the time to change outfits for each meeting, etc. They explained that they spent most of the time looking at themselves and at their immersive fellow students (as everybody does in SL, by the way). After some minutes, they also got bored and started some other application while listening at what the teacher had to say.</p>
<h2>So, is immersion absolutely useless?</h2>
<p style="text-align:justify;">Please notice that I&#8217;m not saying that immersion is completely useless for education. To the contrary, I&#8217;m convinced that there are scenarios where it is a wonderful tool &#8212; for example, real-time collaboration in 3D modelling. What I am saying is that, <strong>in the general case</strong> of meetings and classes, <strong>the use of virtual worlds is presently useless</strong>.</p>
<p style="text-align:justify;">Of course one could argue that this is due to the current imperfections of the technology. Better technology, goes the argument, would eliminate all the current pitfails of SL as a tool for meetings: the user interface will be more intuitive and less intrusive; animations will reflect accurately what the user is doing, and so they will stop being dull; avatars will automatically resemble their humans (if their humans so desire), and they&#8217;ll even show facial emotions (like in James Cameron&#8217;s film), etc. All of this might happen, and I for one would be very happy if it happened as soon as possible; but unfortunately <strong>this speaks of some possible future products and platforms, not of what we have today</strong>.</p>
<h2>Wishful thinking, collective delusion, or a marketing strategy?</h2>
<p style="text-align:justify;">Since it appears clearly that <strong>it cannot be rationally claimed that virtual world technologies are useful, in a general sense, for business meetings and classes</strong>, we can ask ourselves why so many people are insisting that this is the case. It could be that the people making these claims were victims of some form of wishful thinking; it could also be the case that they were victims of a collective form of delusion; finally, it could also be that they were making these claims as some form of marketing strategy. My personal impression is that these three factors operate simultaneously.</p>
<h3>Wishful thinking</h3>
<p style="text-align:justify;">It&#8217;s human to mistake one&#8217;s own desires for reality. It&#8217;s happened to me, it&#8217;s happened to you, it happens to everybody, daily. When I entered SL, I immediately experienced immersion. Since I was experiencing it, I didn&#8217;t understand how it could be that other people weren&#8217;t experiencing it. I attributed this fact to several factors: they were not so good with computers as I am, the technology was too new and they needed some time to adapt, they were future-shocked, etc. It took me several months to realize the truth: <strong>they weren&#8217;t experiencing immersion because they were not interested in experiencing it; they simply didn&#8217;t want to &#8220;be&#8221; an avatar</strong>. I call my self-delusion &#8220;wishful thinking&#8221; because at the time I really desired that everybody had an avatar. One could do so many nice things if everybody had one and experienced immersion as I did! But, as time has teached me, my wishes and how things are in reality are completely different things.</p>
<h3>Collective delusion</h3>
<p style="text-align:justify;">Sometimes I think about Linden Lab. I don&#8217;t know the company from inside, but I can imagine it &#8212; a big company, formed by enthusiasts of virtual worlds. At least this was surely so at the beginning. Now the have hired new people, but it&#8217;s a dogma that they all must pretend to be very immersive and enjoy their virtual lifes very much &#8212; else LL would risk enraging the residents because they&#8217;ve put somebody who&#8217;s not &#8220;one of us&#8221;, who &#8220;understands nothing&#8221;, to manage a certain part of the company.</p>
<p style="text-align:justify;">Isn&#8217;t that a perfect field for collective delusion? People from Linden Lab always explain how much <strong>they</strong> meet in Second Life, how <strong>they</strong> save considerably by doing so, and so on. If you think of it, it&#8217;s no surprise &#8212; it&#8217;s as if you asked people who attended a party in SL whether they believed they had attended a party: of course all of them would reply they had.</p>
<p style="text-align:justify;">What I&#8217;m arguing here is that Linden Lab is not a good example of the composition of your average company or your average school. What <strong>they</strong> say they are experiencing <strong>must be true for them, but it cannot be generalized</strong> to other collectives. So that they must be suffering of some form of collective delusion, believing that what is good for them can be immediately extrapolated to other businesses.</p>
<h3>Marketing strategy</h3>
<p style="text-align:justify;">We could also be a little more cynical and think that <strong>some</strong> Lindens are not under any form of delusion, but that they are speaking about the superiority of Second Life as a tool for companies and educational institutions as a form or marketing strategy. Saying so would give them part of the market, and in the meanwhile they could invest to better the platform, so that in a short time it would not be such an inferior beast, but more comparable to WebEx and the rest of the competition. They could also be hoping that virtual worlds would &#8220;go mainstream&#8221; (M Linden actually says so in many places, including the interview cited at the beginning of this post), etc.</p>
<p style="text-align:justify;">The problem with such an strategy is that it is very risky. What&#8217;s happened to the companies I&#8217;ve been working for is happening now to a big number of other companies, and will happen in the near future to still more companies. And Linden Lab will have <strong>burnt</strong> these customers. As <a href="http://www.adamfrisby.com/blog/2009/12/10-predictions-for-vws-and-opensim-in-2010/">Adam Frisby says about a related topic</a> (tele-workers), this risks provoking &#8220;yet-another-media &#8216;Are virtual worlds over-hyped?&#8217; rush.&#8221;</p>
<h2>Conclusion</h2>
<p style="text-align:justify;">Virtual world platforms like Second Life and Opensim are today not developed enough to be of use, <strong>in the general case</strong>, for companies wanting to hold meetings and for educational institutions. This does not mean that it&#8217;s false that, as the homepage for Opensim says, &#8220;many people are doing exciting things with it&#8221;. Promoting the use of Second Life or Opensim as a tool for enterprises and educators, without adding big warnings or disclaimers, is the best way to actually <strong>delay adoption of the technology for several years</strong>: early adopters will get burned and start a backslash against the technology.</p>
<p style="text-align:justify;">I will end this post citing part of <a href="http://foo.secondlifeherald.com/slh/2009/05/-zonja-capalini-3-opensim-in-linden-lab-smackdown.html">a comment by At0m0 Beerbaum</a> in an article by the Second Life Alphaville Herald about <a href="http://zonjacapalini.wordpress.com/2009/04/30/the-openspace-fiasco-six-months-later/">my Openspace Fiasco article</a>. It&#8217;s a comment that made me think a lot, and, seen in perspective, I have to say that I tend to agree with everything he says.</p>
<blockquote>
<p style="text-align:justify;"><em>However, I said this months ago, SL is not a platform to do business on, it&#8217;s more of the spider enticing the fly into its web. Linden Labs has no interest in actually providing enterprise support, they just want to push out a half-assed system, claim it has business potential because it can play embedded video and has voice, and profit from it with lots of feel good sales speak.</em></p>
<p style="text-align:justify;"><em>Hell, they havent even properly implemented shadows in their mainstream client, nor did they go anywhere with windlight.</em></p>
<p style="text-align:justify;"><em>You can easily go with a cisco conferencing solution or any other video conferencing solution, and pay much less overall than what Linden Labs wants to charge for zero support, and small pieces of server space.</em></p>
<p style="text-align:justify;"><em>SL is an entertainment platform, aka, a game. If you want to conduct real business, go with a company that has experience in this field. Otherwise if you just want a time waster and some eye candy, or a marketing hook, then look into getting a sim.</em></p>
</blockquote>
<p style="text-align:justify;"><strong>Update 1</strong>: There was an error in the calculation of costs for Opensim which has now been corrected. Given the variety of uses and configurations for Opensim, it&#8217;s very difficult to estimate meaningful &#8220;minimum&#8221; and &#8220;average&#8221; values for the cost calculation. I&#8217;ve opted to set the minimum value to zero, assuming an intranet use where all services (voice, streaming video, etc) are provided by the intranet, and set the &#8220;average&#8221; value to the cost of a well-known provider + the cost for streaming video.</p>
<p style="text-align:justify;"><strong>Update 2</strong>: I received some comments that made me realize that including Opensim in the cost table was not a good idea after all. Opensim is not a service (as Second Life and WebEx are), and therefore it doesn&#8217;t make sense to speak of &#8220;minimum&#8221; or &#8220;average&#8221; costs &#8220;for Opensim&#8221;. It would make sense if we chosed a determinate Opensim hosting provider, but again in this case there&#8217;s no clear &#8220;average&#8221;: OSGrid is free (if you can host your own sims), for example.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/753/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=753&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/02/21/sl-vs-webex-the-myth-of-second-life-as-a-platform-for-education/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>
	</item>
		<item>
		<title>Potential RL-identity exploit with Avatars United [UPDATED]</title>
		<link>http://zonjacapalini.wordpress.com/2010/02/16/potential-rl-identity-exploit-with-avatars-united/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/02/16/potential-rl-identity-exploit-with-avatars-united/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 11:20:35 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Avatars United]]></category>
		<category><![CDATA[Peter Stindberg]]></category>
		<category><![CDATA[Snickers Snook]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=747</guid>
		<description><![CDATA[[UPDATE: MSo Lambert has posted a clarification in Snickers' and Peter's posts that indicate there is no risk of emails being exposed.] I&#8217;m reproducing below in its entirety a post by Peter Stindberg. I&#8217;ve seen many people from Opensim grids, specially from OSGrid, in Avatars United. Peter&#8217;s post identified a potential security breach in Avatars United by which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=747&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><strong>[UPDATE</strong>: <a href="http://www.blogger.com/profile/12021485293147524810">MSo Lambert</a> has posted a clarification in <a href="http://snickitty.blogspot.com/2010/02/spam-via-avatars-united-security-black.html">Snickers</a>' and <a href="http://stindberg.blogspot.com/2010/02/potential-rl-identity-exploit-with.html">Peter</a>'s posts that indicate there is no risk of emails being exposed.]</p>
<p style="text-align:justify;">I&#8217;m reproducing below in its entirety a post by Peter Stindberg. I&#8217;ve seen many people from Opensim grids, specially from OSGrid, in Avatars United. Peter&#8217;s post identified a potential security breach in Avatars United by which a malicious application could harvest avatar-email associations. Apart from the exposure to spam, this can lead to disclosure of RL details for those who are using RL email addresses in association with their avatars.</p>
<p>[Start of <a href="http://stindberg.blogspot.com/2010/02/potential-rl-identity-exploit-with.html">Peter's post</a>]</p>
<p style="text-align:justify;">For those of you using their RL-email for their SL-avatar, using the default settings of Avatars United might pose a risk of unintentional exposing the address!</p>
<p>Snickers Snook posted an insightful article about &#8220;<a href="http://snickitty.blogspot.com/2010/02/spam-via-avatars-united-security-black.html">Spam via Avatars United</a>&#8220;, where she explained that since joining AU she receives significantly more spam on her supposedly undisclosed email address. She dug a bit into the settings and found that the default is that even non-installed AU-widgets can access certain data and send emails.</p>
<p>While Snickers primarily saw the spam problem, my friend Zonja Capalini pointed out that while being spammed is a nuisance, the bigger threat lies in the unsolicited disclosure of a potential RL email address and thus disclosure of the RL identity.</p>
<p>So if this concerns you, do two things:</p>
<ol>
<li style="text-align:justify;">Read Snickers article and adjust your Avatars United settings</li>
<li style="text-align:justify;">Go and finally get a GMail/Yahoo/Hotmail/whatever address for your avatar</li>
</ol>
<p>[End of <a href="http://stindberg.blogspot.com/2010/02/potential-rl-identity-exploit-with.html">Peter's post</a>]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/747/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=747&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/02/16/potential-rl-identity-exploit-with-avatars-united/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>
	</item>
		<item>
		<title>Hispagrid cumple un año</title>
		<link>http://zonjacapalini.wordpress.com/2010/02/14/hispagrid-cumple-un-ano/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/02/14/hispagrid-cumple-un-ano/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 11:48:42 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[Hispagrid]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=737</guid>
		<description><![CDATA[Como explica muy bien Albert en su blog. Para mí es una suerte y un privilegio cooperar con estos compañeros fantásticos via internet, y, de cuando en cuando, en persona. Del post de Albert lo suscribo todo, o sea que no repetiré lo mismo aquí &#8212; sólo hay una cosa que me ha dejado pensando. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=737&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Como explica muy bien <a href="http://exploradorvirtual.blogspot.com/2010/02/un-ano-de-hispagrid.html">Albert en su blog</a>. Para mí es una suerte y un privilegio cooperar con estos compañeros fantásticos via internet, y, de cuando en cuando, en persona. Del <a href="http://exploradorvirtual.blogspot.com/2010/02/un-ano-de-hispagrid.html">post de Albert</a> lo suscribo todo, o sea que no repetiré lo mismo aquí &#8212; sólo hay una cosa que me ha dejado pensando.</p>
<div class="wp-caption aligncenter" style="width: 360px"><a title="0583 - Striped kini by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/3533610570/"><img class=" " src="http://farm3.static.flickr.com/2117/3533610570_5d02fa74f0.jpg" alt="0583 - Striped kini" width="350" height="500" /></a><p class="wp-caption-text">Realmente son bikinis para perder la cabeza...</p></div>
<p style="text-align:justify;">Dice Albert &#8220;Zonja Capalini, que combina sus bikinis diminutos <strong>pero </strong>tiene la cabeza realmente bien amueblada&#8221;. Las negritas son mías. El DRAE define &#8220;pero&#8221; como una &#8220;conjunción adversativa usada para contraponer un concepto a otro diverso o ampliativo del anterior&#8221;. Entonces, ¿bikinis diminutos &#8220;pero&#8221; cabeza bien amueblada? ¿Qué querrá decir? Lo de la cabeza bien amueblada se lo agradezco de corazón, pero la verdad, no creo que me vuelva más tonta cuando me pongo un bikini&#8230; ;-)</p>
<p style="text-align:justify;">Enlace: <a href="http://www.hispagrid.com/">Hispagrid</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/737/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/737/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=737&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/02/14/hispagrid-cumple-un-ano/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2117/3533610570_5d02fa74f0.jpg" medium="image">
			<media:title type="html">0583 - Striped kini</media:title>
		</media:content>
	</item>
		<item>
		<title>Splitting Megaregions</title>
		<link>http://zonjacapalini.wordpress.com/2010/02/13/splitting-megaregions/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/02/13/splitting-megaregions/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 12:49:39 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[ZOE]]></category>
		<category><![CDATA[Megaregions]]></category>
		<category><![CDATA[Opensim Archive]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=726</guid>
		<description><![CDATA[One of the most interesting developments in Opensim lately have been megaregions. Megaregions are non-standard &#8220;big&#8221; regions created by combining several standard, 256&#215;256 meters regions. For example, you can combine four standard regions in a square to get a megaregion of 512&#215;512 m. Megaregions are very convenient because of several reasons: for example the usual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=726&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">One of the most interesting developments in <a href="http://opensimulator.org/wiki/Main_Page">Opensim </a>lately have been <a href="http://www.adamfrisby.com/blog/2009/09/opensim-megaregions/">megaregions</a>. Megaregions are non-standard &#8220;big&#8221; regions created by combining several standard, 256&#215;256 meters regions. For example, you can combine four standard regions in a square to get a megaregion of 512&#215;512 m. Megaregions are very convenient because of several reasons: for example the usual lag in region crossings disappears completely (since you are in the &#8220;same&#8221; region), and the same is true of vehicles. On the other hand, megaregion support is still experimental, and a number of things that work in normal regions don&#8217;t work or work only partially in megaregions. For example, you cannot define parcels outside of the SW region (this is due to <a href="http://zonjacapalini.wordpress.com/2009/12/18/reverse-engineering-oars-understanding-parcel-maps/">the way parcel maps work</a>), and therefore you can&#8217;t have independent music streams (for example) when x &gt; 256 or y &gt; 256.</p>
<p style="text-align:justify;"><a href="http://github.com/diva/diva-distribution/downloads">Diva Canto&#8217;s distribution of Opensim</a> directly supports megaregions. You can also <a href="http://www.metaverseink.com/blog/?p=28">migrate an existing non-megaregion installation to a megaregion configuration</a>, if you <a href="http://opensimulator.org/wiki/Setting_Up_Mega-Regions">follow certain precautions</a>. Migrating from a megaregion configuration to a non-megaregion configuration is also possible &#8212; you change the setting that implements megaregions, &#8220;CombineContiguousRegions&#8221; to false, and it works as expected.</p>
<p style="text-align:justify;"><a href="http://opensimulator.org/wiki/OpenSim_Archives">OAR</a> support for megaregions is partial: since technically all the objects in the megaregion are stored in the SW region, when you take an OAR of the SW region you get all the objects of the megaregion but only the terrain for that same region &#8212; this means that you cannot fully rebuild a megaregion from an OAR, which is a pity (you will be missing the terrain files for all regions except the SW one).</p>
<p style="text-align:center;"><a title="Splitting megaregions" href="http://www.flickr.com/photos/zonja/4353626988/"><img class="aligncenter" src="http://farm5.static.flickr.com/4051/4353626988_919f7d9718.jpg" alt="Splitting megaregions" width="500" height="499" /></a></p>
<p style="text-align:justify;">In this post I&#8217;ll describe some experiments I made with an OAR manipulation tool I developped following a suggestion of <a href="http://lbsa71.net/">Stefan Andersson</a>. The tool takes as its input a megaregion OAR and splits it into several non-megaregion OARs, creating one OAR for each region that constitutes the megaregion <strong>and</strong> has objects in it. This is so because megaregions may have holes, and when a possible region does not have objects there&#8217;s simply no information in the megaregion OAR about whether a it&#8217;s a region with no objects (for example, a sea-only region) or a hole in the megaregion.</p>
<p style="text-align:justify;"><span id="more-726"></span></p>
<h2>The tool</h2>
<p style="text-align:justify;">The tool works in a very simple way: the OAR contents is first optionally extracted, and then it iterates over each object in the megaregion, extracting the x and y coordinates from the XML2 file and calculating the position of the corresponding region in the grid (relative to the SW region). Then a copy of the object with new non-megaregion coordinates is written to a temporary directory called &#8216;objects.i.j&#8217;, where &#8216;i&#8217; and &#8216;j&#8217; are the grid coordinates offset + 1 (for example, the SW region will have i = j = 1, the region to its east i = 2, j = 1, the region to its north i = 1, j = 2, etc). Finally, each of these directories is temporarily renamed to &#8216;objects&#8217; (the standard directory name for objects in a OAR), and the &#8216;tar&#8217; command is invoked to produce a file called fname.i.j, where fname is the name of the original OAR file, or &#8216;region&#8217; if this name is unknown.</p>
<p style="text-align:justify;">For example, using the tool against a 2&#215;2 megaregion OAR called &#8216;test.oar&#8217; will produce 4 OARs: test.1.1.oar (the SW region), test.2.1.oar (the SE region), test.1.2.oar (the NW region) and test.2.2.oar (the NE region). The current version of the tool has two problems: the first one is that it does not attempt to perform asset splitting, that is, the original megaregion OAR contains the assets (i.e., textures, scripts, object contents, etc) for all the objects in the megaregion, and the splitted OAR files will contain a copy of all the assets in the megaregion (instead of only the assets corresponding to the objects in the splitted region); this can be manually corrected by &#8220;normalizing&#8221; the OAR file: load it into an empty region and save a new OAR.</p>
<p style="text-align:justify;">The second problem cannot be corrected, and is due to the (already mentioned) fact that megaregions do not contain terrain data for regions different from the SW region. Due to this fact, all the OAR files produced will contain the same terrain file, that is, the terrain file corresponding to the SW region (would it be better if I simply didn&#8217;t include any terrain?). This is not so much of a problem as it appears, <strong>if</strong> we can have access by other means to the missing terrain files: we can manually load the terrain in the target region and later load the oar with the &#8216;&#8211;merge&#8217; option, or we can first load the oar and then the terrain.</p>
<h2>How should megaregion terrains be stored in OAR files?</h2>
<p style="text-align:justify;">It is very probable that a future version of the <a href="http://opensimulator.org/wiki/OAR_Format_0.2">OAR file format</a> will include terrain information for all the regions in a megaregion. There are two ways to store such information: one is to store a big r32 file with the terrain data for the whole megaregion, and another one is to store the individual terrain files for each region. Both approaches have advantages and disadvantages: storing the terrain for the whole megaregion is ideal if we want to do some kind of online editing of the terrain (this can also be done if we have the single-region terrain files, but we have to aggregate the terrains first, which is cumbersome); on the other hand, storing the individual terrain files is ideal for megaregion splitting tools like the one presented in this article. The ideal solution would be to include <strong>both</strong> the megaregion terrain and the individual region terrains, and define semantics for the OAR load process: for example, &#8220;use the megaregion terrain if it is present, else use the individual region terrains&#8221;.</p>
<h2>Implementation and technical details</h2>
<p style="text-align:justify;">To save coding time, I&#8217;ve implemented the tool as a new command called &#8220;SPLIT&#8221; in version 0.2 of my <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">ZOE OAR editor</a>. You open a megaregion OAR file with ZOE, type &#8220;SPLIT&#8221;, and that&#8217;s it &#8212; in some seconds you have the new OAR files. I&#8217;ve also updated ZOE so that it now depends on <a href="http://www.cygwin.com/">Cygwin</a> being installed (instead of using 7z like in version 0.1) &#8212; this means that ZOE should run unchanged under Linux (but I can&#8217;t test that since I don&#8217;t have access to a Linux machine). This also means that ZOE should be called using &#8220;rexx zoe oarname&#8221; instead of &#8220;zoe oarname&#8221; (Cygwin bash does not understand the latter). To summarize, here&#8217;s what you&#8217;ll need:</p>
<ol>
<li><a href="http://www.oorexx.org/download.html">Open Object Rexx</a>.</li>
<li>(Only for Windows:) <a href="http://www.cygwin.com/">Cygwin</a> (tested with Cygwin 1.7.1-1).</li>
<li>ZOE version 0.2, which you can download <a href="http://www.condensationland.com/downloads/zoe.0.2/zoe.rex">here</a>.</li>
</ol>
<p style="text-align:justify;">Other minor changes in ZOE 0.2 are that the &#8220;zoe ??&#8221; and &#8220;zoe (c)&#8221; special calls have been eliminated (please refer to the documentation for <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">ZOE 0.1</a> for details).</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/726/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/726/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/726/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=726&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/02/13/splitting-megaregions/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4051/4353626988_919f7d9718.jpg" medium="image">
			<media:title type="html">Splitting megaregions</media:title>
		</media:content>
	</item>
		<item>
		<title>Partial documentation for SceneObjectGroup serialization in XML2 format</title>
		<link>http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:55:25 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[XML2]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=583</guid>
		<description><![CDATA[Warning: This is a work-in progress. I&#8217;m publishing this article now to see whether it generates interest and which kind of feedback I get. The material published here is incomplete, and contains for sure errors, ommisions and inaccuracies. I plan on extensively modifying it during the following days. Please take that into account when reading [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=583&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;background-color:#ccccff;border-style:solid;border-width:1px;"><strong>Warning: This is a work-in progress</strong>. I&#8217;m publishing this article now to see whether it generates interest and which kind of feedback I get. The material published here is incomplete, and contains for sure errors, ommisions and inaccuracies. I plan on extensively modifying it during the following days. Please take that into account when reading it.</p>
<h2>The XML2 format</h2>
<p style="text-align:justify;">The XML2 format is used in <a href="http://opensimulator.org/">Opensim</a> to serialize <strong>objects</strong> or <a href="http://wiki.secondlife.com/wiki/Link"><strong>linksets</strong></a> (called &#8220;SceneObjectGroups&#8221; in the Opensim parlance). XML2 dumps of objects can be obtained using the &#8216;save xml2&#8242; or &#8216;save prims xml2&#8242; <a href="http://opensimulator.org/wiki/Console_Commands">console commands</a>, and are used internally to serialize objects in <a href="http://opensimulator.org/wiki/OpenSim_Archives">Opensim Archive (OAR) </a>and <a href="http://opensimulator.org/wiki/Inventory_Archives">Inventory Archive (IAR)</a> files. For example, OARs are gzipped tar files containing a directory called &#8216;objects&#8217; with one XML2 file for each linkset in the region.</p>
<p style="text-align:justify;">XML2 files are standard <a href="http://www.w3.org/XML/">XML </a>files using an ASCII encoding and no whitespace. This means that there&#8217;s no extra indenting or formatting between tags to make the file more pleasant to the eye. You can use any XML editor (including Internet Explorer) to display an XML2 file with some additional prettyprinting and formatting.</p>
<p style="text-align:justify;">XML2 is practically undocumented, but the fact that it&#8217;s undocumented is itself (informally) documented :-), in comments scattered through the <a href="http://opensimulator.org/wiki/Main_Page">Opensim wiki</a> and in the Opensim-dev and Opensim-users lists. Essentially, what this means is that the format is subject to change, but not <em>much </em>change: attributes (i.e., new tags) may be added to the format without breaking it &#8212; the developers program the classes taking this possibility into account and storing default values when an attribute is expected but not present (for example, if you&#8217;re loading an old OAR file which does not have the &#8216;AllowedDrop&#8217; attribute into a newer installation which does have this attribute).</p>
<p style="text-align:justify;">In this article I document partially the structure of XML2 files using a variant of the <a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">BNF</a> notation. I include the productions for most of the format, interspersing comments wherever I have some idea of the meaning of the tag contents. I&#8217;ve obtained this information by manually looking at the XML2 files when developing the simple OAR editor I called <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">ZOE</a> and in <a href="http://zonjacapalini.wordpress.com/2010/01/01/using-sql-to-manipulate-oars/">recent modifications to that editor</a>. I&#8217;ve also taken a look at <a href="http://opensimulator.org/wiki/Download#Source_code">the source code for Opensim</a> and at the code for <a href="http://www.openmetaverse.org/projects/libopenmetaverse">libopenmetaverse</a>. There may be errors and there are for sure omissions; any kind of comment, addition, correction or clarification would be greatly appreciated.</p>
<p style="text-align:justify;">The whole SceneObjectGroup/SceneObjectPart model is about to be heavily refactored to be able to include very cool things like hyerarchical objects or meshes, and this will most probably require a new format (XML3?) to serialize Opensim objects. I am writing this article as a way to teach myself, and I&#8217;m making it public in case somebody else can find its contents useful. Please keep in mind at all times that this is not official documentation :-) &#8212; that&#8217;s one of the reasons why this appears as a blog article instead as a page in the Opensim wiki, the other being that I&#8217;d prefer to get some feedback before writing such a complicated wiki page, in case it&#8217;s considered useful to have it.</p>
<p><span id="more-583"></span></p>
<h2>SceneObjectGroups</h2>
<p style="text-align:justify;">An Opensim &#8220;object&#8221; or &#8220;linkset&#8221; is a linked collection of &#8220;parts&#8221; (prims or prim-like objects, like Linden trees), called a &#8220;SceneObjectGroup&#8221;. This collection cannot be empty, i.e., it contains always at least one part, but it might contain several, in which case there is a distinguished part called the &#8220;root&#8221; part. The XML2 representation of a SceneObjectGroup, thus, contains the root part, the (possibly empty) collection of the other parts, and (optionally) the saved states of the scripts running in the linkset, so that a &#8220;load oar&#8221; is as equivalent as possible to a region restart.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong>SceneObjectGroup</strong> ::= '&lt;SceneObjectGroup&gt;'
                            <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#RootPart">RootPart</a></strong>
                            <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OtherParts">OtherParts</a></strong>
                           [<strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupScriptStates">GroupScriptStates</a></strong>]
                       '&lt;/SceneObjectGroup&gt;'</pre>
<p>Parts are technically called &#8220;SceneObjectPart&#8221;s.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;"><strong>  <a name="RootPart"></a>RootPart</strong> ::= <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a></strong></pre>
<p style="text-align:justify;">When there is only a part, an empty &#8220;OtherParts&#8221; tag is used; otherwise, the sequence of the other parts are is enclosed between matching &#8220;OtherParts&#8221; tags.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;"><strong>  <a name="OtherParts"></a>OtherParts</strong> ::= '&lt;OtherParts /&gt;'
               | '&lt;OtherParts&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a></strong>+ '&lt;/OtherParts&gt;'</pre>
<p style="text-align:justify;">The GroupScriptStates section may be absent; when present, a sequence of SavedScriptStates is enclosed between matching &#8220;GroupScripStates&#8221; tags:</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="GroupScriptStates"></a>GroupScriptStates</strong> ::= '&lt;GroupScriptStates&gt;'
                            <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SavedScriptState">SavedScriptState</a></strong>+
                        '&lt;/GroupScriptStates&gt;'</pre>
<p>SavedScriptStates are, for the moment, undocumented, and will probably remain so until some changes are made in the Opensim script engine:</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;"><strong>  <a name="SavedScriptState"></a>SavedScriptState</strong> ::= <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TBD">TBD</a></strong></pre>
<h2>Basic types and non-terminals</h2>
<p style="text-align:justify;">We will now need a set of basic non-terminals so that we don&#8217;t have to include BNF for things that don&#8217;t interest us at this stage, like real numbers, integers or text strings:</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="bool"></a>bool      </strong> ::= 'true' | 'false';
  <strong><a name="byte"></a>byte</strong>       ::= (* a natural number &gt;= 0 and &lt;= 255 *);
  <strong><a name="sbyte"></a>sbyte</strong>      ::= (* a whole number &gt;= -128 and &lt;= 127 *);
  <strong><a name="ushort"></a>ushort</strong>     ::= (* a natural number &gt;= 0 and &lt;= 65,535 *);
  <strong><a name="int"></a>int</strong>        ::= (* a whole number &gt;= –2,147,483,648 and &lt;= 2,147,483,647 *);
  <strong><a name="uint"></a>uint</strong>       ::= (* a natural number &gt;= 0 and &lt;= 4,294,967,295 *);
  <strong><a name="ulong"></a>ulong     </strong> ::= (* a natural number &gt;= 0 and &lt;= 18,446,744,073,709,551,615 *);
  <strong><a name="uuid"></a>uuid</strong>       ::= (* see http://en.wikipedia.org/wiki/Universally_Unique_Identifier *);
  <strong><a name="float"></a>float     </strong> ::= (* a real number, 7 digits of precision,
                 between 1.5 x 10<sup>–45</sup> and 3.4 x 10<sup>38</sup> *);
  <strong><a name="string"></a>string    </strong> ::= (* a descriptive string *);
  <strong><a name="TBD"></a>TBD</strong>        ::= (* To Be Documented *);
  <strong><a name="Vector3"></a>Vector3</strong>    ::= '&lt;X&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/X&gt;'
                 '&lt;Y&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/Y&gt;'
                 '&lt;Z&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/Z&gt;';
  <strong><a name="Quaternion"></a>Quaternion</strong> ::= '&lt;X&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/X&gt;'
                 '&lt;Y&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/Y&gt;'
                 '&lt;Z&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/Z&gt;'
                 '&lt;W&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/W&gt;';</pre>
<h2>SceneObjectParts</h2>
<p>Please refer to SceneObjectPart.cs in the Opensim source for details.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SceneObjectPart"></a>SceneObjectPart</strong> ::= <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SOPStart">SOPStart</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SOPContents">SOPContents</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SOPEnd">SOPEnd</a></strong>
  <strong><a name="SOPStart"></a>SOPStart</strong> ::= '&lt;SceneObjectPart'
               ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance'
               ' xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;'
  <strong><a name="SOPEnd"></a>SOPEnd</strong> ::= '&lt;/SceneObjectPart&gt;'</pre>
<p style="text-align:justify;">The extra attributes in the &#8220;&lt;SceneObjectPart&gt;&#8221; start tag are due to the fact that SceneObjectParts are serialized automatically by the .NET/Mono runtime (while <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>s are serialized manually).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SOPContents"></a>SOPContents</strong> ::= [<strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#AllowedDrop">AllowedDrop</a></strong>] <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#CreatorID">CreatorID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FolderID">FolderID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#InventorySerial">InventorySerial</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TaskInventory">TaskInventory</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ObjectFlags">ObjectFlags</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#UUID">UUID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LocalId">LocalId</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Name">Name</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Material">Material</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PassTouches">PassTouches</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#RegionHandle">RegionHandle</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ScriptAccessPin">ScriptAccessPin</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupPosition">GroupPosition</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OffsetPosition">OffsetPosition</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#RotationOffset">RotationOffset</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Velocity">Velocity</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#AngularVelocity">AngularVelocity</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Acceleration">Acceleration</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Description">Description</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Color">Color</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Text">Text</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitName">SitName</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TouchName">TouchName</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LinkNum">LinkNum</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ClickAction">ClickAction</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Shape">Shape</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Scale">Scale</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#UpdateFlag">UpdateFlag</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetOrientation">SitTargetOrientation</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetPosition">SitTargetPosition</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetPositionLL">SitTargetPositionLL</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetOrientationLL">SitTargetOrientationLL</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ParentID">ParentID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#CreationDate">CreationDate</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Category">Category</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SalePrice">SalePrice</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ObjectSaleType">ObjectSaleType</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OwnershipCost">OwnershipCost</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupID">GroupID</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OwnerID">OwnerID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LastOwnerID">LastOwnerID</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#BaseMask">BaseMask</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OwnerMask">OwnerMask</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupMask">GroupMask</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#EveryoneMask">EveryoneMask</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#NextOwnerMask">NextOwnerMask</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Flags">Flags</a></strong> <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#CollisionSound">CollisionSound</a></strong>
                  <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#CollisionSoundVolume">CollisionSoundVolume</a></strong></pre>
<p style="text-align:justify;">Remember that the list of attributes of a <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a> can change between different releases of Opensim. For example, older version 0.2 OARs don&#8217;t include an <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#AllowedDrop">AllowedDrop</a> attribute (that&#8217;s why I have marked it as optional), and newer <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a>s may include new attributes not specified here.</p>
<p style="text-align:justify;">Most attributes are represented by the basic types defined above, exceptuating <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TaskInventory">TaskInventory</a>, which is a list of <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TaskInventoryItem">TaskInventoryItem</a>s representing the contents of a prim (i.e., what&#8217;s on its &#8220;Contents&#8221; tab) and <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Shape">Shape</a>, which is itself a structured attribute with many subattributes (please refer to PrimitiveBaseShape.cs in the Opensim source for details:</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Shape"></a>Shape</strong> ::= '&lt;Shape&gt;'
      <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileCurve">ProfileCurve</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TextureEntry">TextureEntry</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ExtraParams">ExtraParams</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathBegin">PathBegin</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathCurve">PathCurve</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathEnd">PathEnd</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathRadiusOffset">PathRadiusOffset</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathRevolutions">PathRevolutions</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathScaleX">PathScaleX</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathScaleY">PathScaleY</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathShearX">PathShearX</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathShearY">PathShearY</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathSkew">PathSkew</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathTaperX">PathTaperX</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathTaperY">PathTaperY</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathTwist">PathTwist</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PathTwistBegin">PathTwistBegin</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#PCode">PCode</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileBegin">ProfileBegin</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileEnd">ProfileEnd</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileHollow">ProfileHollow</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Scale">Scale</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#State">State</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileShape">ProfileShape</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#HollowShape">HollowShape</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SculptTexture">SculptTexture</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SculptType">SculptType</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SculptData">SculptData</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiSoftness">FlexiSoftness</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiTension">FlexiTension</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiDrag">FlexiDrag</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiWind">FlexiWind</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiForceX">FlexiForceX</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiForceY">FlexiForceY</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiForceZ">FlexiForceZ</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightColorR">LightColorR</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightColorG">LightColorG</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightColorB">LightColorB</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightColorA">LightColorA</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightRadius">LightRadius</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightFalloff">LightFalloff</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightIntensity">LightIntensity</a></strong><strong>
      <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#FlexiEntry">FlexiEntry</a></strong><strong> <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#LightEntry">LightEntry</a></strong><strong> </strong><strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SculptEntry">SculptEntry</a></strong>
    '&lt;/Shape&gt;'</pre>
<p style="text-align:justify;">For our purposes, the attributes of the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a> and the attributes of its <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Shape">Shape</a> attribute can be treated as a homogeneous set. You will notice that there is a <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Scale">Scale</a> attribute both in the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a> and in its <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Shape">Shape</a> attribute; these are one and the same (i.e., they have always the same value). We will classify the combined set of attributes following the tabs of the standard object editor in the Second Life type of viewers.</p>
<p style="text-align:justify;"><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tGeneral">General tab</a><br />
<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tObject"> Object tab</a><br />
<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tFeatures"> Features tab</a><br />
<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tTexture"> Texture tab</a><br />
<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tContent"> Content tab</a><br />
<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#tOther"> Other attributes</a></p>
<h2><a name="tGeneral"></a>General tab</h2>
<p><a title="0816 - The 'General' tab, 1 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4357114962/"><img src="http://farm5.static.flickr.com/4026/4357114962_acf08d6864.jpg" alt="0816 - The 'General' tab, 1" width="249" height="500" /></a></p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Name"></a>Name</strong> ::= '&lt;Name /&gt;'
         | '&lt;Name&gt;'
              <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong>
           '&lt;/Name&gt;'</pre>
<p style="text-align:justify;">Name of this part. If this is the root part, this is also the name of the whole <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Description"></a>Description</strong> ::= '&lt;Description /&gt;'
                | '&lt;Description&gt;'
                     <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong>
                  '&lt;/Description&gt;'</pre>
<p style="text-align:justify;">A (possibly empty) description for the part. If the part is the root part, this is also the description for the whole <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="CreatorID"></a>CreatorID</strong> ::= '&lt;CreatorID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/CreatorID&gt;'</pre>
<p style="text-align:justify;">Uuid of the creator of this part.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="OwnerID"></a>OwnerID</strong> ::= '&lt;OwnerID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/OwnerID&gt;'</pre>
<p style="text-align:justify;">Uuid of the owner of this part (and therefore of the whole <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LastOwnerID"></a>LastOwnerID</strong> ::= '&lt;LastOwnerID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/LastOwnerID&gt;'</pre>
<p style="text-align:justify;">Uuid of the last owner of this part. Useful when returning objects.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="GroupID"></a>GroupID</strong> ::= '&lt;GroupID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/GroupID&gt;'</pre>
<p style="text-align:justify;">Uuid of the group this part (and therefore the whole <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>) is assigned or deeded to.</p>
<p><a title="0817 - The 'General' tab,2 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4356400529/"><img src="http://farm5.static.flickr.com/4040/4356400529_85db763a8f_o.jpg" alt="0817 - The 'General' tab,2" width="275" height="553" /></a></p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="BaseMask"></a>BaseMask</strong> ::= '&lt;BaseMask&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/BaseMask&gt;'</pre>
<p style="text-align:justify;">See the PermissionMask enum in <a href="http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Permissions.cs?view=markup">Permissions.cs</a> in the libopenmetaverse source. The following information was adapted from <a href="http://opensimulator.org/wiki/OpenSim:Permissions">http://opensimulator.org/wiki/OpenSim:Permissions</a>:</p>
<pre> public enum PermissionMask : uint
 {
    None        = 0;
    Transfer    = 1 &lt;&lt; 13, //0x00002000
    Modify      = 1 &lt;&lt; 14, //0x00004000
    Copy        = 1 &lt;&lt; 15, //0x00008000
 // EnterParcel = 1 &lt;&lt; 16, //0x00010000 -- Obsolete
 // Terraform   = 1 &lt;&lt; 17, //0x00020000 -- Obsolete
 // OwnerDebit  = 1 &lt;&lt; 18, //0x00040000 -- Obsolete
    Move        = 1 &lt;&lt; 19, //0x00080000
    Damage      = 1 &lt;&lt; 20, //0x00100000
    All         = 0x7FFFFFFF
 }</pre>
<p style="text-align:justify;">Default: PermissionMask.All. This field represents the highest amount of permissions the owner of an object can have. For example, if you set next permissions as &#8216;No transfer&#8217; for an object and transfer it, the NextOwnerMask will have the Transfer bit unset (see below), this will ANDed to the BaseMask, and thus the new BaseMask will also have the Transfer bit unset, so that the new owner cannot transfer the object or make it transferable again.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="OwnerMask"></a>OwnerMask</strong> ::= '&lt;OwnerMask&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/OwnerMask&gt;'</pre>
<p style="text-align:justify;">Default: PermissionMask.All. These are the current owner&#8217;s permissions for the object.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="GroupMask"></a>GroupMask</strong> ::= '&lt;GroupMask&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/GroupMask&gt;'</pre>
<p style="text-align:justify;">Default: PermissionMask.None.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="EveryoneMask"></a>EveryoneMask</strong> ::= '&lt;EveryoneMask&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/EveryoneMask&gt;'</pre>
<p style="text-align:justify;">Default: PermissionMask.None. These are the permissions that the general public have on the object. When the &#8216;Move&#8217; flag is set, this is a &#8216;Anyone can Move&#8217; object; similarly, when the &#8216;Copy&#8217; flag is set, this is a &#8216;Anyone can Copy&#8217; object.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="NextOwnerMask"></a>NextOwnerMask</strong> ::= '&lt;NextOwnerMask&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/NextOwnerMask&gt;'</pre>
<p style="text-align:justify;">Default: PermissionMask.All. These are the permissions that the owner sets with the Modify, Copy and Transfer checkboxes.</p>
<p style="text-align:justify;">BaseMask, OwnerBask and EveryoneMask  have their flags ANDed with the NextOwnerMask when the object is transferred.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Flags"></a>Flags</strong> ::= '&lt;Flags&gt;' <strong>flag [flag]*</strong> '&lt;/Flags&gt;';

  <strong>flag</strong> ::= 'None' | 'CreateSelected' | 'ObjectModify' | 'ObjectCopy'
         | 'ObjectAnyOwner' | 'ObjectYouOwner' | 'Scripted' | 'Touch'
         | 'ObjectMove' | 'Money' | 'Phantom' | 'InventoryEmpty'
         | 'JointHinge' | 'JointP2P' | 'JointLP2P' | 'JointWheel'
         | 'AllowInventoryDrop' | 'ObjectTransfer' | 'ObjectGroupOwned' | 'ObjectYouOfficer' 
         | 'CameraDecoupled' | 'AnimSource' | 'CameraSource' | 'CastShadows'
         | 'ObjectOwnerModify' | 'TemporaryOnRez' | 'Temporary' | 'ZlibCompressed'</pre>
<p style="text-align:justify;">A set of flags. See the PrimFlags enum in <a href="http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Primitives/Primitive.cs?view=markup">Primitive.cs</a> in the libopenmetaverse source. The following information was adapted from <a href="http://opensimulator.org/wiki/OpenSim:Permissions">http://opensimulator.org/wiki/OpenSim:Permissions</a>:</p>
<pre> public enum ObjectFlags : uint
 {
 None = 0,
            Physics = 0x00000001, CreateSelected = 0x00000002,     ObjectModify = 0x00000004,       ObjectCopy = 0x00000008,
     ObjectAnyOwner = 0x00000010, ObjectYouOwner = 0x00000020,         Scripted = 0x00000040,            Touch = 0x00000080,
         ObjectMove = 0x00000100,          Money = 0x00000200,          Phantom = 0x00000400,   InventoryEmpty = 0x00000800,
         JointHinge = 0x00001000,       JointP2P = 0x00002000,        JointLP2P = 0x00004000,       JointWheel = 0x00008000,
 AllowInventoryDrop = 0x00010000, ObjectTransfer = 0x00020000, ObjectGroupOwned = 0x00040000, ObjectYouOfficer = 0x00080000,
    CameraDecoupled = 0x00100000,     AnimSource = 0x00200000,     CameraSource = 0x00400000,      CastShadows = 0x00800000,
  //not defined yet   0x01000000,                  0x02000000,                    0x04000000,                    0x08000000,
  ObjectOwnerModify = 0x10000000, TemporaryOnRez = 0x20000000,        Temporary = 0x40000000,   ZlibCompressed = 0x80000000
 }</pre>
<p>Default: ObjectFlags.None (0).</p>
<p>These bits are different from the previous masks, in the sense that they contain the &#8216;actual&#8217; or &#8216;calculated&#8217; values for the object (and many more options, to store, for example, whether the object is physical, phantom, or touch).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SalePrice"></a>SalePrice</strong> ::= '&lt;SalePrice&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#int">int</a></strong> '&lt;/SalePrice&gt;'</pre>
<p>Sale price.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ObjectSaleType"></a>ObjectSaleType</strong> ::= '&lt;ObjectSaleType&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/ObjectSaleType&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="OwnershipCost"></a>OwnershipCost</strong> ::== '&lt;OwnershipCost&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#int">int</a></strong> '&lt;/OwnershipCost&gt;'</pre>
<p>TBD</p>
<h2><a name="tObject"></a>Object tab</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="GroupPosition"></a>GroupPosition</strong> ::= '&lt;GroupPosition&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> '&lt;/GroupPosition&gt;'</pre>
<p style="text-align:justify;">A vector defining the position of the whole <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectGroup">SceneObjectGroup</a>, that is, of its root part. It has the same value for all the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a>s &#8212; each individual part individualizes its position by defining an <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OffsetPosition">OffsetPosition</a> (i.e., for each part, its position = <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupPosition">GroupPosition</a> + <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#OffsetPosition">OffsetPosition</a>).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="OffsetPosition"></a>OffsetPosition</strong> ::= '&lt;OffsetPosition&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> ''&lt;/OffsetPosition&gt;'</pre>
<p style="text-align:justify;">Offset of this part, relative to the position (<a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupPosition">GroupPosition</a>) of the root part. See <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#GroupPosition">GroupPosition</a>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Scale"></a>Scale</strong> ::= '&lt;Scale&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> '&lt;/Scale&gt;'</pre>
<p style="text-align:justify;">Size of the part. Please note that the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Scale">Scale</a> attribute of the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a> and the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Scale">Scale</a> attribute of its <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Shape">Shape</a> attribute have always the same value.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="RotationOffset"></a>RotationOffset</strong> ::= '&lt;RotationOffset&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Quaternion">Quaternion</a></strong> '&lt;/RotationOffset&gt;'</pre>
<p>Rotation of the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a>, relative to the region if this is the root part, or relative to the root part if this is not the root part.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ProfileCurve"></a>ProfileCurve</strong> ::= '&lt;ProfileCurve&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/ProfileCurve&gt;'</pre>
<p style="text-align:justify;">A logical OR of the byte values of the <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#HollowShape">HollowShape</a> and <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ProfileShape">ProfileShape</a> attributes.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ProfileBegin"></a>ProfileBegin</strong> ::= '&lt;ProfileBegin&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ushort"><strong>ushort</strong></a> '&lt;/ProfileBegin&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8221;Torus&#8221;,&#8221;Tube&#8221;, &#8220;Ring&#8221;: (ushort) (50,000 * (Value of &#8220;Path Cut Begin&#8221;))<br />
When Building Block Type is &#8220;Sphere&#8221;: (ushort) (50,000 * (Value of &#8220;Dimple Begin&#8221;)).<br />
When Building Block Type is &#8220;Sculpted&#8221;: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ProfileEnd"></a>ProfileEnd</strong> ::= '&lt;ProfileEnd&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ushort"><strong>ushort</strong></a> '&lt;/ProfileEnd&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (ushort) (50,000 * (1 &#8211; (Value of &#8220;Path Cut End&#8221;))).<br />
When Building Block Type is &#8220;Sphere&#8221;: (ushort) (50,000 * (1 &#8211; (Value of &#8220;Dimple End&#8221;))).<br />
When Building Block Type is &#8220;Sculpted&#8221;: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ProfileShape"></a>ProfileShape</strong> ::= '&lt;ProfileShape&gt;'
                      ( 'Circle' | 'Square' | 'IsometricTriangle' |
                        'EquilateralTriangle' | 'RightTriangle' |
                        'HalfCircle'
                      )
                   '&lt;/ProfileShape&gt;'</pre>
<p style="text-align:justify;">Where Circle = 0, Square = 1, IsometricTriangle = 2, EquilateralTriangle = 3, RightTriangle = 4, HalfCircle = 5, but the name is stored, not the value.</p>
<p style="text-align:justify;">When Building Block Type is &#8220;Box&#8221;, &#8220;Tube&#8221;: &#8220;Square&#8221;.<br />
When Building Block Type is &#8220;Cylinder&#8221;, &#8220;Torus&#8221;, &#8220;Sculpted&#8221;: &#8220;Circle&#8221;.<br />
When Building Block Type is &#8220;Prism&#8221;, &#8220;Ring&#8221;: &#8220;Equilateraltriangle&#8221;.<br />
When Building Block Type is &#8220;Sphere&#8221;: &#8220;HalfCircle&#8221;.</p>
<div class="wp-caption alignnone" style="width: 283px"><a title="0771 - Hollow by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4304088028/"><img src="http://farm5.static.flickr.com/4024/4304088028_872cd090d7_o.jpg" alt="0771 - Hollow" width="273" height="552" /></a><p class="wp-caption-text">Hollow attributes: ProfileHollow and HollowShape</p></div>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ProfileHollow"></a>ProfileHollow</strong> ::= '&lt;ProfileHollow&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ushort"><strong>ushort</strong></a> '&lt;/ProfileHollow&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (ushort) (50,000 *  (Value of &#8220;Hollow&#8221;)).<br />
When Building Block Type is &#8220;Sculpted&#8221;: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="HollowShape"></a>HollowShape</strong> ::= '&lt;HollowShape&gt;'
                     ( 'Same' | 'Circle' | 'Square' | 'Triangle' )
                  '&lt;/HollowShape&gt;'</pre>
<p style="text-align:justify;">Where Same = 0,  Circle = 16,  Square = 32,  Triangle = 48, but the name is stored, not the value.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathBegin"></a>PathBegin</strong> ::= '&lt;PathBegin&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ushort"><strong>ushort</strong></a> '&lt;/PathBegin&gt;'</pre>
<p>When Building Block Type is &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (ushort) (50,000 * (Value of &#8220;Path Cut Begin&#8221;)).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathCurve"></a>PathCurve</strong> ::= '&lt;PathCurve&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathCurve&gt;'</pre>
<p>Byte value (mask?) of the enum &#8220;Extrusion&#8221; in PrimitiveBaseShape.cs: Straight = 16, Curve1 = 32,  Curve2 = 48, Flexible = 128.</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;: Extrusion.Straight.<br />
When Building Block Type is &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;, &#8220;Sculpted&#8221;: Extrusion.Curve1.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathEnd"></a>PathEnd</strong> ::= '&lt;PathEnd&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ushort"><strong>ushort</strong></a> '&lt;/PathEnd&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (ushort) (50,000 * (1 &#8211; (Value of &#8220;Path Cut End&#8221;))).<br />
Zero otherwise.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathRadiusOffset"></a>PathRadiusOffset</strong> ::= '&lt;PathRadiusOffset&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte"><strong>sbyte</strong></a> '&lt;/PathRadiusOffset&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Radius&#8221;)).<br />
Zero otherwise.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathRevolutions"></a>PathRevolutions</strong> ::= '&lt;PathRevolutions&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathRevolutions&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Revolutions&#8221;)).<br />
Zero otherwise.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathScaleX"></a>PathScaleX</strong> ::= '&lt;PathScaleX&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathScaleX&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;: (byte) (100 * (2.0 &#8211;  (Value of &#8220;Taper X&#8221;))).<br />
When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (2.0 &#8211;  (Value of &#8220;Hole Size X&#8221;))).<br />
When Building Block Type is &#8220;Sphere&#8221;, &#8220;Sculpted&#8221;: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathScaleY"></a>PathScaleY</strong> ::= '&lt;PathScaleY&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathScaleY&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;: (byte) (100 * (2.0 &#8211;  (Value of &#8220;Taper Y&#8221;))).<br />
When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (2.0 &#8211;  (Value of &#8220;Hole size Y&#8221;))).<br />
When Building Block Type is &#8220;Sphere&#8221;, &#8220;Sculpted&#8221;: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathShearX"></a>PathShearX</strong> ::= '&lt;PathShearX&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathShearX&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Top Shear X&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathShearY"></a>PathShearY</strong> ::= '&lt;PathShearY&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PathShearY&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Top Shear Y&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathSkew"></a>PathSkew</strong> ::= '&lt;PathSkew&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte"><strong>sbyte</strong></a> '&lt;/PathSkew&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Skew&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathTaperX"></a>PathTaperX</strong> ::= '&lt;PathTaperX&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte"><strong>sbyte</strong></a> '&lt;/PathTaperX&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Taper X&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathTaperY"></a>PathTaperY</strong> ::= '&lt;PathTaperY&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte"><strong>sbyte</strong></a> '&lt;/PathTaperY&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (byte) (100 * (Value of &#8220;Taper Y&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathTwist"></a>PathTwist</strong> ::= '&lt;PathTwist&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte"><strong>sbyte</strong></a> '&lt;/PathTwist&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (sbyte) (100 *  (Value of &#8220;Twist End&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PathTwistBegin"></a>PathTwistBegin</strong> ::= '&lt;PathTwistBegin&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#sbyte">sbyte</a></strong> '&lt;/PathTwistBegin&gt;'</pre>
<p>[See Opensim.Region.ScriptEngine.Shared.Api.LSL_Api,  SetPrimitiveBlockShapeParams and SetPrimitiveShapeParams.]</p>
<p>When Building Block Type is &#8220;Box&#8221;, &#8220;Cylinder&#8221;, &#8220;Prism&#8221;, &#8220;Sphere&#8221;, &#8220;Torus&#8221;, &#8220;Tube&#8221;, &#8220;Ring&#8221;: (sbyte) (100 *  (Value of &#8220;Twist Begin&#8221;)).<br />
Otherwise: 0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SculptEntry"></a>SculptEntry</strong> ::= '&lt;SculptEntry&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#bool">bool</a></strong> '&lt;/SculptEntry&gt;'</pre>
<p>This <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SceneObjectPart">SceneObjectPart</a> is sculpted.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SculptTexture"></a>SculptTexture</strong> ::= '&lt;SculptTexture&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/SculptTexture&gt;'</pre>
<p>The uuid of the sculpt texture, or the null uuid (&#8220;00000000-0000-0000-0000-000000000000&#8243;) when this part is not a sculpty.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SculptType"></a>SculptType</strong> ::= '&lt;SculptType&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/SculptType&gt;'</pre>
<div id="_mcePaste">Zero for non-sculpts, or one of PRIM_SCULPT_TYPE_SPHERE = 1, PRIM_SCULPT_TYPE_TORUS = 2, PRIM_SCULPT_TYPE_PLANE = 3, PRIM_SCULPT_TYPE_CYLINDER = 4.</div>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SculptData"></a>SculptData</strong> ::= '&lt;SculptData /&gt;' | '&lt;SculptData&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#TBD">TBD</a></strong> '&lt;/SculptData&gt;'</pre>
<p>TBD</p>
<h2><a name="tFeatures"></a>Features tab</h2>
<div class="wp-caption alignnone" style="width: 283px"><a title="0769 - Flexi by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4303306999/"><img src="http://farm3.static.flickr.com/2721/4303306999_055944ffd0_o.jpg" alt="0769 - Flexi" width="273" height="526" /></a><p class="wp-caption-text">Flexible path attributes.</p></div>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiEntry"></a>FlexiEntry</strong> ::= '&lt;FlexiEntry&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#bool">bool</a></strong> '&lt;/FlexiEntry&gt;'</pre>
<p style="text-align:justify;">Whether this part has a flexible path.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiSoftness"></a>FlexiSoftness</strong> ::= '&lt;FlexiSoftness&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#int">int</a></strong> '&lt;/FlexiSoftness&gt;'</pre>
<p>Flexible path softness, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiGravity"></a>FlexiGravity</strong> ::= '&lt;FlexiGravity&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiGravity&gt;'</pre>
<p>Flexible path gravity, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiDrag"></a>FlexiDrag</strong> ::= '&lt;FlexiDrag&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiDrag&gt;'</pre>
<p>Flexible path drag, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiWind"></a>FlexiWind</strong> ::= '&lt;FlexiWind&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiWind&gt;'</pre>
<p>Flexible path wind, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;"><strong>  <a name="FlexiTension"></a>FlexiTension</strong> ::= '&lt;FlexiTension&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiTension&gt;'</pre>
<p>Flexible path tension, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiForceX"></a>FlexiForceX</strong> ::= '&lt;FlexiForceX&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiForceX&gt;'</pre>
<p>Flexible path force X, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiForceY"></a>FlexiForceY</strong> ::= '&lt;FlexiForceY&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiForceY&gt;'</pre>
<p>Flexible path force Y, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FlexiForceZ"></a>FlexiForceZ</strong> ::= '&lt;FlexiForceZ&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/FlexiForceZ&gt;'</pre>
<p>Flexible path force Z, as in the &#8216;Features&#8217; tab.</p>
<div class="wp-caption alignnone" style="width: 282px"><a title="Partial documentation for SceneObjectGroup serialization in XML2 format" href="http://www.flickr.com/photos/zonja/4303323679/"><img src="http://farm3.static.flickr.com/2693/4303323679_33c1882581_o.jpg" alt="Partial documentation for SceneObjectGroup serialization in XML2 format" width="272" height="548" /></a><p class="wp-caption-text">Light attributes</p></div>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightEntry"></a>LightEntry</strong> ::= '&lt;LightEntry&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#bool">bool</a></strong> '&lt;/LightEntry&gt;'</pre>
<p style="text-align:justify;">Whether this part emits light.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightColorR"></a>LightColorR</strong> ::= '&lt;LightColorR&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightColorR&gt;'</pre>
<p style="text-align:justify;">The &#8216;Red&#8217; component of the light color, between 0.0 and 1.0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightColorG"></a>LightColorG</strong> ::= '&lt;LightColorG&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightColorG&gt;'</pre>
<p>The &#8216;Green&#8217; component of the light color, between 0.0 and 1.0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightColorB"></a>LightColorB</strong> ::= '&lt;LightColorB&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightColorB&gt;'</pre>
<p>The &#8216;Blue&#8217; component of the light color, between 0.0 and 1.0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightColorA"></a>LightColorA</strong> ::= '&lt;LightColorA&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightColorA&gt;'</pre>
<p>The Alpha value of the light color, between 0.0 and 1.0.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightIntensity"></a>LightIntensity</strong> ::= '&lt;LightIntensity&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightIntensity&gt;'</pre>
<p>Light intensity, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightRadius"></a>LightRadius</strong> ::= '&lt;LightRadius&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightRadius&gt;'</pre>
<p>Light radius, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightFalloff"></a>LightFalloff</strong> ::= '&lt;LightFalloff&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightFalloff&gt;'</pre>
<p>Light falloff, as in the &#8216;Features&#8217; tab.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LightCutoff"></a>LightCutoff</strong> ::= '&lt;LightCutoff&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong> '&lt;/LightCutoff&gt;'</pre>
<p>TBD</p>
<h2><a name="tTexture"></a>Texture tab</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="TextureEntry"></a>TextureEntry</strong> ::= '&lt;TextureEntry&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong> '&lt;/TextureEntry&gt;'</pre>
<p>A Base64 encoded string. TBD.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ExtraParams"></a>ExtraParams</strong> ::= '&lt;ExtraParams&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong> '&lt;/ExtraParams&gt;'</pre>
<p>A Base64 encoded string. TBD.</p>
<h2><a name="tContent"></a>Content tab</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="TaskInventory"></a>TaskInventory</strong> ::= '&lt;TaskInventory /&gt;'
                  | '&lt;TaskInventory&gt;'
                       <strong>TaskInventoryItem</strong>+
                    '&lt;/TaskInventory&gt;'</pre>
<p style="text-align:justify;">List of items contained in this part (i.e., what&#8217;s on the &#8216;Contents&#8217; tab for an object&#8217;s settings).</p>
<h2><a name="tOther"></a>Other attributes</h2>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="AllowedDrop"></a>AllowedDrop</strong> ::= '&lt;AllowedDrop&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#bool">bool</a></strong> '&lt;/AllowedDrop&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="FolderID"></a>FolderID</strong>  ::= '&lt;FolderID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/FolderID&gt;'</pre>
<p style="text-align:justify;">Same as <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#UUID">UUID</a> (except for very old prims).</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="InventorySerial"></a>InventorySerial</strong> ::= '&lt;InventorySerial&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/InventorySerial&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ObjectFlags"></a>ObjectFlags</strong> ::= '&lt;ObjectFlags&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/ObjectFlags&gt;'</pre>
<p>Flags of type OpenMetaverse.PrimFlags. See <a href="http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Primitives/Primitive.cs?view=markup">http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Primitives/Primitive.cs?view=markup</a> for details.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="UUID"></a>UUID</strong> ::= '&lt;UUID&gt;&lt;Guid&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong> '&lt;/Guid&gt;&lt;/UUID&gt;'</pre>
<p style="text-align:justify;">Uuid of the part.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LocalId"></a>LocalId</strong> ::= '&lt;LocalId&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/LocalId&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Material"></a>Material</strong> ::= '&lt;Material&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/Material&gt;'</pre>
<p><strong>Semantics</strong>: <em>Material type for a primitive</em>. <strong>Value range</strong>: One of 0 (Stone), 1 (Metal), 2 (Glass), 3 (Wood), 4 (Flesh), 5 (Plastic), 6 (Rubber), 7 (Light). [Source: The <em>Material </em>enum in <a href="http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Primitives/Primitive.cs?view=markup">Primitive.cs</a>]</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PassTouches"></a>PassTouches</strong> ::= '&lt;PassTouches&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#bool"><strong>bool</strong></a> '&lt;/PassTouches&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="RegionHandle"></a>RegionHandle</strong> ::= '&lt;RegionHandle&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#ulong">ulong</a></strong> '&lt;/RegionHandle&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ScriptAccessPin"></a>ScriptAccessPin</strong> ::= '&lt;ScriptAccessPin&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">int</a></strong> '&lt;/ScriptAccessPin&gt;'</pre>
<p>Pin for <a href="http://wiki.secondlife.com/wiki/LlSetRemoteScriptAccessPin">remote loading of scripts</a>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Velocity"></a>Velocity</strong> ::= '&lt;Velocity&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> '&lt;/Velocity&gt;'</pre>
<p style="text-align:justify;">Physics-related attribute. The velocity of the prim.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="AngularVelocity"></a>AngularVelocity</strong> ::= '&lt;AngularVelocity&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> ''&lt;/AngularVelocity&gt;'</pre>
<p style="text-align:justify;">Physics-related attribute. The angular velocity of the prim.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Acceleration"></a>Acceleration</strong> ::= '&lt;Acceleration&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong> '&lt;/Acceleration&gt;'</pre>
<p style="text-align:justify;">Physics-related attribute. The acceleration of the prim.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Color"></a>Color</strong> ::= '&lt;Color /&gt;'
          | '&lt;Color&gt;'
               <strong>color</strong>
            '&lt;/Color&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Text"></a>Text</strong> ::= '&lt;Text /&gt;'
         | '&lt;Text&gt;'
              <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong>
           '&lt;/Text&gt;'</pre>
<p>Maximum length = 255, truncated otherwise. TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SitName"></a>SitName</strong> ::= '&lt;SitName /&gt;'
            | '&lt;SitName&gt;'
                 <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong><strong>
</strong>              '&lt;/SitName&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="TouchName"></a>TouchName</strong> ::= '&lt;TouchName /&gt;'
              | '&lt;TouchName&gt;'
                   <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#string">string</a></strong><strong>
</strong>                '&lt;/TouchName&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="LinkNum"></a>LinkNum</strong> ::= '&lt;LinkNum&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">int</a></strong> '&lt;/LinkNum&gt;'</pre>
<p style="text-align:justify;">This is a sequential number that defines the order in which parts are linked: it&#8217;s always zero for the root part, 1 for the next part, etc.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ClickAction"></a>ClickAction</strong> ::= '&lt;ClickAction&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/ClickAction&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="UpdateFlag"></a>UpdateFlag</strong> ::= '&lt;UpdateFlag&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/UpdateFlag&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SitTargetOrientation"></a>SitTargetOrientation</strong> ::= '&lt;SitTargetOrientation&gt;'
                              <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Quaternion">Quaternion</a></strong><strong>
</strong>                           '&lt;/SitTargetOrientation&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SitTargetPosition"></a>SitTargetPosition</strong> ::= '&lt;SitTargetPosition&gt;'
                           <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong><strong>
</strong>                        '&lt;/SitTargetPosition&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SitTargetPositionLL"></a>SitTargetPositionLL</strong> ::= '&lt;SitTargetPositionLL&gt;'
                             <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Vector3">Vector3</a></strong><strong>
</strong>                          '&lt;/SitTargetPositionLL&gt;'</pre>
<p>Same as <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetPosition">SitTargetPosition</a></strong>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="SitTargetOrientationLL"></a>SitTargetOrientationLL</strong> ::= '&lt;SitTargetOrientationLL&gt;'
                                <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#Quaternion">Quaternion</a></strong><strong>
</strong>                             '&lt;/SitTargetOrientationLL&gt;'</pre>
<p>Same as <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#SitTargetOrientation">SitTargetOrientation</a></strong>.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="ParentID"></a>ParentID</strong> ::= '&lt;ParentID&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/ParentID&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="CreationDate"></a>CreationDate</strong> ::= '&lt;CreationDate&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#int">int</a></strong> '&lt;/CreationDate&gt;'</pre>
<p style="text-align:justify;">The date this prim was created, in TBD format.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="Category"></a>Category</strong> ::= '&lt;Category&gt;' <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uint">uint</a></strong> '&lt;/Category&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="CollisionSound"></a>CollisionSound</strong> ::= '&lt;CollisionSound&gt;&lt;Guid&gt;'
                        <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#uuid">uuid</a></strong><strong>
</strong>                     '&lt;/Guid&gt;&lt;/CollisionSound&gt;'</pre>
<p>Uuid of TBD, or the zero uuid (&#8220;00000000-0000-0000-0000-000000000000&#8243;) when TBD.</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="CollisionSoundVolume"></a>CollisionSoundVolume</strong> ::= '&lt;CollisionSoundVolume&gt;'
                              <strong><a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#float">float</a></strong><strong>
</strong>                           '&lt;/CollisionSoundVolume&gt;'</pre>
<p>TBD</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="PCode"></a>PCode</strong> ::= '&lt;PCode&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/PCode&gt;'</pre>
<p style="text-align:justify;"><strong>Semantics</strong>: <em>Type of primitive</em>. <strong>Value range</strong>: One of: 9 (Prim: a Primitive), 47 (Avatar: An Avatar), 95 (Grass: Linden grass), 111 (NewTree: Linden tree), 143 (ParticleSystem: A primitive that acts as the source for a particle stream), 255 (Tree: A Linden tree). [Source: The PCode enum in <a href="http://openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Primitives/Primitive.cs?view=markup">Primitive.cs</a>]</p>
<pre style="font-size:130%;background-color:#ffffcc;border-style:solid;border-width:1px;">  <strong><a name="State"></a>State</strong> ::= '&lt;State&gt;' <a href="http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/#byte"><strong>byte</strong></a> '&lt;/State&gt;'</pre>
<p>TBD</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/583/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=583&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/01/25/partial-documentation-for-xml2/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4026/4357114962_acf08d6864.jpg" medium="image">
			<media:title type="html">0816 - The &#039;General&#039; tab, 1</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4040/4356400529_85db763a8f_o.jpg" medium="image">
			<media:title type="html">0817 - The &#039;General&#039; tab,2</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4024/4304088028_872cd090d7_o.jpg" medium="image">
			<media:title type="html">0771 - Hollow</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2721/4303306999_055944ffd0_o.jpg" medium="image">
			<media:title type="html">0769 - Flexi</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2693/4303323679_33c1882581_o.jpg" medium="image">
			<media:title type="html">Partial documentation for SceneObjectGroup serialization in XML2 format</media:title>
		</media:content>
	</item>
		<item>
		<title>Mirror Worlds: a hypergridded eternal art exhib</title>
		<link>http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 18:20:45 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[Mirror Worlds]]></category>
		<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[SL Exodus]]></category>
		<category><![CDATA[Condensation]]></category>
		<category><![CDATA[Condensation Land]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=561</guid>
		<description><![CDATA[In this long overdue post, I introduce &#8220;Mirror Worlds&#8221;, an eternal (I will explain what I understand by &#8216;eternal&#8217; in a minute) art exhibition located in the Opensim-based, hypergrid accesible, Condensation Land grid. The exhibition features pictures from Florence Babenco, Monika Finchy, Shoshisn Shilova, and Senna (SennaSpirit) Coronet, and from the Condensation Land residents Ludmilla [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=561&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a title="0695 - Mirror Worlds - Update - Florence Babenco by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4128888522/"><img class="aligncenter" src="http://farm3.static.flickr.com/2644/4128888522_f57ff307a2.jpg" alt="0695 - Mirror Worlds - Update - Florence Babenco" width="450" height="500" /></a></p>
<p style="text-align:justify;">In this long overdue post, I introduce <a href="http://www.flickr.com/groups/1209062@N25/">&#8220;Mirror Worlds&#8221;</a>, an eternal (I will explain what I understand by &#8216;eternal&#8217; in a minute) art exhibition located in the <a href="http://opensimulator.org/">Opensim</a>-based, <a href="http://opensimulator.org/wiki/Hypergrid">hypergrid</a> accesible, <a href="http://blog.condensationland.com/">Condensation Land</a> grid. The exhibition features pictures from <a href="http://www.flickr.com/photos/florencebabenco/">Florence Babenco</a>, <a href="http://www.flickr.com/photos/monika_finchy/">Monika Finchy</a>, <a href="http://www.flickr.com/photos/shoshisn/">Shoshisn Shilova</a>, and <a href="http://www.flickr.com/photos/sennacoronet/">Senna</a> (SennaSpirit) Coronet, and from the Condensation Land residents <a href="http://www.flickr.com/photos/ludmilla_writer/">Ludmilla Writer</a>, <a href="http://www.flickr.com/photos/mikilseptem/">Mikil Tiki</a> and <a href="http://www.flickr.com/photos/zonja/">myself</a>. Shoshisn also has contributed several of her wonderful sculptures for the exhibition.</p>
<p style="text-align:justify;">Art exhibitions of all sorts are very common in Second Life, but unfortunately they are more unusual in the Opensim-based worlds &#8212; and, in case they exist at all, they get little or no publicity. Which is a real pity, because, contrary to the general lack of content for avatar clothing and embellishment in Opensim, for example, there is nothing which prevents Opensim-based worlds from hosting beautiful exhibitions. Nobody will ask where did you take a picture, after all &#8212; and texture uploads can&#8217;t be cheaper :-)</p>
<p style="text-align:justify;">In this post I&#8217;ll present the exhibition and explain some of its more unusual features.  I&#8217;ll also describe some of the difficulties that I encountered in my work as an amateur curator &#8212; some of these difficulties may be due to my inexperience at the task, but I think that the other ones may help as a diagnosis of some problems the Opensim movement is facing.<span id="more-561"></span></p>
<h2>What&#8217;s an &#8216;eternal&#8217; exhibtion?</h2>
<p style="text-align:justify;">When I first though about making an exhibition in Condensation Land, I was thinking of setting up a <strong>permanent exhibition</strong>, i.e., one in which the artists changed and/or rotated with time. Soon I realized that virtual worlds technology allowed something more interesting: as artists changed, I could copy the old versions of the exhibition and put them in an airbox, so that visitors could come to look at the <strong>current version</strong> of the exhibition, but also teleport to the airboxes and see <strong>all the previous versions</strong>. That way, nothing would be lost, and we would have in fact, something new (and impossible IRL): <strong>an eternal</strong> exhibition.</p>
<p style="text-align:justify;">Now since (if we got enough artists willing to participate) I envisaged having to perform the cloning operation several times, I decided to develop an automated tool to assist in the cloning, and I developed the (admittedly hacky) tool I called <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">Zoe</a> &#8212; you can find a detailed description of the technical details in my post &#8220;<a href="http://zonjacapalini.wordpress.com/2009/12/14/moving-and-rotating-oars/">Moving and rotating OARs</a>&#8220;.</p>
<h2>Mirror Worlds: Layout, and some technical aspects</h2>
<p style="text-align:justify;"><strong>Mirror Worlds</strong> is located in the southeast corner of the Condensation Land region in the Condensation Land grid.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0751 - Condensation Land and Mirror Worlds by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4282019402/"><img class=" " src="http://farm5.static.flickr.com/4039/4282019402_47bba5e8b8.jpg" alt="0751 - Condensation Land and Mirror Worlds" width="500" height="464" /></a><p class="wp-caption-text">Aerial view of the &#39;Condensation Land&#39; region. You can see the &#39;Mirror Worlds&#39; exhibition in the southeast part, looking like an inverted &#39;L&#39;.</p></div>
<p style="text-align:justify;">The exhibition has seven rooms, with works from (left-to right, bottom-to-top) shoshisn, myself, Ludmilla, Monika (at the corner), Mikil, Florence and Senna. Since Mirror Worlds has to be integrated in the landscape (i.e., the sim is not devoted only to the exhibition), I was confronted to the following problem: what should be the aspect of the exhibition <strong>from outside</strong>? I wanted the building to be as luminous as possible and have almost transparent walls &#8212; but then pictures, when seen from outside, would present a blank face, and this would have been very ugly. Since we are in a virtual world, we don&#8217;t have to be 100% realistic; I could have copied the textures to the back side of the pictures, but then there would be no reason to enter the exhibition. I solved this dilemma by copying the textures to the back of the pictures <strong>and making this side 50% transparent</strong> &#8212; this way, the exhibition is beautiful from outside, and what you see from outside invites you to enter and see more.</p>
<p style="text-align:center;"><a title="0752 - Pictures are semitransparent from outside by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4281325977/"><img class="aligncenter" src="http://farm3.static.flickr.com/2688/4281325977_abc44632db.jpg" alt="0752 - Pictures are semitransparent from outside" width="500" height="393" /></a></p>
<p style="text-align:justify;">Another decision was to also <strong>use the (cylindrical) ceiling as a place to also display pictures</strong>. You can see the results in the following shot, which shows a picture from Florence Babenco.</p>
<p style="text-align:center;"><a title="0753 - Pictures in the ceiling by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4282132378/"><img class="aligncenter" src="http://farm5.static.flickr.com/4066/4282132378_574ecfa4db.jpg" alt="0753 - Pictures in the ceiling" width="500" height="393" /></a></p>
<p style="text-align:justify;">To make the 3D environment more lively, I added abundant water and fire:</p>
<p style="text-align:center;"><a title="0754 - Water and fire in Mirror Worlds by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4281406171/"><img class="aligncenter" src="http://farm5.static.flickr.com/4045/4281406171_b60c66165e.jpg" alt="0754 - Water and fire in Mirror Worlds" width="500" height="393" /></a></p>
<p style="text-align:justify;">I also counted on Shoshisn&#8217;s beautiful sculptures:</p>
<p style="text-align:center;"><a title="0496 - Condensation/OpenSim by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/3309909320/"><img class="aligncenter" src="http://farm4.static.flickr.com/3346/3309909320_385259e93c.jpg" alt="0496 - Condensation/OpenSim" width="500" height="300" /></a></p>
<p style="text-align:justify;">You can visit <strong>Mirror Worlds</strong> by using the hypergrid: just go to an <a href="http://opensimulator.org/wiki/Public_Hypergrid_Nodes">hypergrid-enabled region</a> and teleport to <strong>condensationland.com:9000</strong> &#8212; the Condensation Land grid is centered at 7789,7789.</p>
<h2>The human side</h2>
<p style="text-align:justify;">Building the exhibition, taking design decisions and solving technical/aesthetical dilemmas was the easy part of setting up Mirror Worlds &#8212; managing the human side of the problem was much more complicated. On the easy part, I first counted on two good old friends from the Second Life/Flickr community: Senna and Shoshisn.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a title="0298 - Talking with Senna by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/2623674687/"><img src="http://farm4.static.flickr.com/3050/2623674687_785a31c3da.jpg" alt="0298 - Talking with Senna" width="500" height="375" /></a><p class="wp-caption-text">Senna and me in the wheatfield</p></div>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/sennacoronet/">Senna</a> has asked me to <a href="http://www.flickr.com/photos/sennacoronet/3530333755/">model</a> several times and working with him has always been a pleasure. He&#8217;s a great friend and a very generous person &#8212; as soon as I asked him to participate, he gave me all his support and complete freedom to act. The current selection of pictures is mine, but he&#8217;s promised to make a new selection by himself, which will be featured in a coming edition of Mirror Worlds.</p>
<p style="text-align:center;"><a title="0123 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/2251721003/"><img class="aligncenter" src="http://farm3.static.flickr.com/2223/2251721003_a2e8c2f8bb.jpg" alt="0123" width="500" height="500" /></a></p>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/shoshisn/">Shoshisn</a> is a great friend, a great artist and a wonderful sculptor (apart from being very beautiful :-)). She&#8217;s one of the major contributors to Condensation Land: apart from the pictures and sculptures she has donated for the exhibition, she&#8217;s given us a lot of other nice sculptures, and, lately, these wonderful dolphins:</p>
<p style="text-align:center;"><a title="0736 - shoshisn's dolphins by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4248896914/"><img class="aligncenter" src="http://farm5.static.flickr.com/4050/4248896914_c366c86c46.jpg" alt="0736 - shoshisn's dolphins" width="500" height="393" /></a></p>
<p style="text-align:justify;">Shoshisn is also a believer in the future of Opensim, and she has helped me to contact a number of other artists for their present or future inclusion in Mirror Worlds. One of these artists is <a href="http://www.flickr.com/photos/monika_finchy/">Monika Finchy</a>, whom I don&#8217;t know personally &#8212; Shoshisn introduced us and Monika kindly agreed to have her fantastic work displayed.</p>
<p style="text-align:center;"><a title="0199 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/2408064433/"><img class="aligncenter" src="http://farm3.static.flickr.com/2199/2408064433_b64e8bf3f1.jpg" alt="0199" width="500" height="500" /></a></p>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/florencebabenco/">Florence Babenco</a> is an old Second Life friend. Florence, <a href="http://www.flickr.com/photos/ludmilla_writer/">Ludmilla Writer</a> and me made an exhibition in Second Life called <a href="http://www.flickr.com/photos/zonja/sets/72157604510813314/">&#8220;Las Tres Gracias&#8221;</a> back in april 2008; for Ludmilla and me (but not for Florence) this was our first exhibition. When I asked her to participate, she immediately and generously agreed.</p>
<p style="text-align:center;"><a title="0231 by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/2441432132/"><img class="aligncenter" src="http://farm3.static.flickr.com/2205/2441432132_3ba3f6b203.jpg" alt="0231" width="500" height="400" /></a></p>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/mikilseptem/">Mikil Tiki</a> is a great friend, the kind of person you need to have in a party to ensure its success, metamorph extraordinaire, and a resident of Condensation Land. She&#8217;s also one of the most intelligent persons I&#8217;ve never met in Second Life. Philosophizing with her about the virtues, defects and nuances in general of being virtual is a delight. She generously accepted to have her work exhibited in Mirror Worlds immediately after I asked her.</p>
<p style="text-align:justify;"><a href="http://www.flickr.com/photos/ludmilla_writer/">Ludmilla Writer</a> is my indefatigable RL friend, co-founder, contributor and resident of Condensation Land (she owns the Condensation Beach region), and co-owner with <a href="http://www.flickr.com/photos/favio_piek/">Favio Piek</a> and me of <a href="http://www.flickr.com/groups/tangoatarrabal/">Arrabal Tango Club</a>. She&#8217;s helped me, in RL and in SL/Opensim, to think about Mirror Worlds, to prepare it, to select the pictures, and, in general, has given me moral support when I was finding the project too difficult. Without Ludmilla Mirror Worlds would not exist. It&#8217;s a pleasure to have her work shown there.</p>
<p style="text-align:justify;"><strong>That was the easy part</strong>. Now I&#8217;ll talk about the not-so-easy part of building Mirror Worlds. First of all I have to say something: it&#8217;s the first time I work in something remotely related to being a curator, and I&#8217;m probably not the most idoneous person to do the job, because of (maybe) lack of sensibility and (for sure) of experience. On the other hand, some of the difficulties I faced when recruiting artists have to be attributed to the artists themselves, not to my lack of skills. However, some of the things I observed made me think quite a lot. Particularly:</p>
<p style="text-align:justify;"><strong>1)</strong> <strong>Many people mistake Opensim for Open Life</strong>. This is probably a result of the mass rush to Open Life that happened around the <a href="http://zonjacapalini.wordpress.com/2009/04/30/the-openspace-fiasco-six-months-later/">Openspace fiasco</a>, and is a very bad thing, because of two things: first, because the performance and stability of Opensim at the moment was much worse than it is right now (but people are unaware of that); and second, because Open Life is anything but open, and the identification between Open Life and Opensim is bad for the Opensim movement. The net result is that they are lazy (i.e., refuse) to try (again) an Opensim grid.</p>
<p style="text-align:justify;"><strong>2)</strong> Many people simply <strong>didn&#8217;t seem to understand what Opensim, or an Opensim-based grid, is</strong>. They seemed to think that I was  talking about a special region of Second Life, or something like that. Awareness of Opensim between an important sector of SL residents is near to zero.</p>
<p style="text-align:justify;"><strong>3)</strong> Between the people who do seem to understand what Opensim is, an important number found it <strong>too complicated to connect to a grid</strong>, even with my personal help and the presence of abundant documentation. This is specially problematic for Mac users, because of poorer support in general for Mac viewers. Many people who connect to SL routinely are artists or creative people in general, and they lack the skills to connect to Opensim. This is a problem because content creators and producers are much needed at the moment.</p>
<p style="text-align:justify;">I mention these points here because Second Life has a rich, vibrant, artists community, and having this community to look with love to the Opensim grids, creating and showing their art in them, would be a very important bonus towards the general acceptance of Opensim as a platform.</p>
<h2>Additional resources</h2>
<p style="text-align:center;"><a title="Mirror Worlds: a hypergridded eternal art exhib" href="http://www.flickr.com/photos/zonja/4248220551/"><img class="aligncenter" src="http://farm5.static.flickr.com/4022/4248220551_e1aea4fff8.jpg" alt="Mirror Worlds: a hypergridded eternal art exhib" width="500" height="393" /></a></p>
<p style="text-align:justify;">Even if it&#8217;s not part of the Mirror Worlds exhibition, I would like to mention that Breen Whitman has donated a copy of his wonderfully crafted &#8220;Eastern Gasworks&#8221; building; it&#8217;s being shown in the southeast part of the Condensation South region &#8212; if you visit Mirror Worlds, please take some time to take a look at this building. It&#8217;s amazingly detailed, with a lot of shadows baked in the textures. I&#8217;m very grateful to Breen for this fantastic gift.</p>
<p style="text-align:justify;">Here&#8217;s a video featuring a long travelling that includes the Mirror Worlds exhibition and Breen&#8217;s &#8216;Eastern Gasworks&#8217;:</p>
<p style="text-align:center;"><span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/"><img src="http://img.youtube.com/vi/WCL5fgfX-dI/2.jpg" alt="" /></a></span></p>
<p style="text-align:justify;">Here&#8217;s another video featuring Mirror Worlds only:</p>
<p style="text-align:center;"><span style="text-align:center; display: block;"><a href="http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/"><img src="http://img.youtube.com/vi/2sfulY49POI/2.jpg" alt="" /></a></span></p>
<p>Finally, <a href="http://exploradorvirtual.blogspot.com/2009/10/arte-en-condensationland.html">here</a>&#8216;s a very nice article (in Spanish) about Mirror Worlds, written by my friend <a href="http://exploradorvirtual.blogspot.com/">Albert Revolution</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/561/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=561&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/01/17/mirror-worlds-a-hypergridded-eternal-art-exhib/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2644/4128888522_f57ff307a2.jpg" medium="image">
			<media:title type="html">0695 - Mirror Worlds - Update - Florence Babenco</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4039/4282019402_47bba5e8b8.jpg" medium="image">
			<media:title type="html">0751 - Condensation Land and Mirror Worlds</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2688/4281325977_abc44632db.jpg" medium="image">
			<media:title type="html">0752 - Pictures are semitransparent from outside</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4066/4282132378_574ecfa4db.jpg" medium="image">
			<media:title type="html">0753 - Pictures in the ceiling</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4045/4281406171_b60c66165e.jpg" medium="image">
			<media:title type="html">0754 - Water and fire in Mirror Worlds</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3346/3309909320_385259e93c.jpg" medium="image">
			<media:title type="html">0496 - Condensation/OpenSim</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3050/2623674687_785a31c3da.jpg" medium="image">
			<media:title type="html">0298 - Talking with Senna</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2223/2251721003_a2e8c2f8bb.jpg" medium="image">
			<media:title type="html">0123</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4050/4248896914_c366c86c46.jpg" medium="image">
			<media:title type="html">0736 - shoshisn&#039;s dolphins</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2199/2408064433_b64e8bf3f1.jpg" medium="image">
			<media:title type="html">0199</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2205/2441432132_3ba3f6b203.jpg" medium="image">
			<media:title type="html">0231</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4022/4248220551_e1aea4fff8.jpg" medium="image">
			<media:title type="html">Mirror Worlds: a hypergridded eternal art exhib</media:title>
		</media:content>
	</item>
		<item>
		<title>Using SQL to manipulate OARs</title>
		<link>http://zonjacapalini.wordpress.com/2010/01/01/using-sql-to-manipulate-oars/</link>
		<comments>http://zonjacapalini.wordpress.com/2010/01/01/using-sql-to-manipulate-oars/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 17:06:51 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[ZOE]]></category>
		<category><![CDATA[OAR]]></category>
		<category><![CDATA[Opensim Archive]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=527</guid>
		<description><![CDATA[Introduction As I noted in my previous post &#8220;Moving and rotating OARs&#8220;, offline editing of Opensim Archives (OARs) opens a lot of interesting possibilities. In this article I present the results of several simple tests I have made by extending my &#8220;Zoe&#8221; OAR editor so that it supports (a very simplified sub-dialect of) SQL. Even [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=527&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p style="text-align:justify;">As I noted in my previous post &#8220;<a href="http://zonjacapalini.wordpress.com/2009/12/14/moving-and-rotating-oars/">Moving and rotating OARs</a>&#8220;, offline editing of <a href="http://opensimulator.org/wiki/OpenSim_Archives">Opensim Archives (OARs)</a> opens a lot of interesting possibilities. In this article I present the results of several simple tests I have made by extending my <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">&#8220;Zoe&#8221;</a> OAR editor so that it supports (a very simplified sub-dialect of) <a href="http://en.wikipedia.org/wiki/SQL">SQL</a>. Even in a simplified form, SQL has a lot of expressive power and allows to perform a number of pretty neat operation on OARs, when it comes to <strong>selecting </strong>and <strong>deleting </strong>parts of a region. <strong>Updating</strong> OARs, though, is much more complicated, because there is no &#8220;natural&#8221; semantics to apply when using the standard SQL UPDATE statement. Some simple cases can be singled out, however, where &#8220;natural&#8221; semantics actually make sense &#8212; and in some other &#8220;interesting&#8221; use cases, a custom pseudo-SQL statement seems to be sufficient.<span id="more-527"></span></p>
<h2>The XML2 SceneObjectGroup format</h2>
<p style="text-align:justify;">[<strong>Note</strong>: You can skip this section if you are familiar with the SceneObjectGroup/SceneObjectPart format.]</p>
<p style="text-align:justify;">OARs are gzipped tarballs &#8212; you can find a detailed description of their structure <a href="http://opensimulator.org/wiki/OAR_Format_0.2">here</a>. Linksets are stored in individual <a href="http://en.wikipedia.org/wiki/XML">XML </a>files in Opensim&#8217;s own XML2 format. Altho the XML2 format is as yet undocumented, manual inspection of the actual files in several OARs and some peeks at the source code allows us to deduce the following:</p>
<p style="text-align:justify;">1) Each linkset (or &#8220;SceneObjectGroup&#8221; in the Opensim parlance) is stored in an ASCII-encoded XML file with all non-significant white space removed. This means that there are no carriage-return, line-feed, or end-of-file characters, and that there are no extra blanks between tags (i.e., no formatting or prettyprinting).</p>
<p style="text-align:justify;">2) Each linkset (or &#8220;SceneObjectGroup&#8221;) has the following form:</p>
<pre>    &lt;SceneObjectGroup&gt;<strong>(RootPart)</strong><strong>(OtherParts)</strong>[<strong>(ScriptStates)</strong>]&lt;/SceneObjectGroup&gt;</pre>
<p style="text-align:justify;">where &#8220;(RootPart)&#8221; contains the information about the root part (the root prim of a linkset), &#8220;(OtherParts)&#8221; contains the information about all the other parts (prims) in the linkset, and the optional &#8220;(ScriptStates)&#8221; parts.</p>
<p style="text-align:justify;">3) The &#8220;(RootPart)&#8221; is a &#8220;SceneObjectPart&#8221;. SceneObjectParts have the following format:</p>
<pre>    &lt;SceneObjectPart
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
                      <strong>(contents)</strong>
    &lt;/SceneObjectPart&gt;</pre>
<p style="text-align:justify;">(I&#8217;ve indented the tag for readability, but this really occurs in one line, without extra blanks). &#8220;(Contents)&#8221; is a set of tags describing the properties of the SceneObjectPart (prim). Some of these properties are described using simple tags; for example, the name of a prim is stored as follows:</p>
<pre>      &lt;Name&gt;(prim or plant name)&lt;/Name&gt;</pre>
<p>Other properties have a finer structure, and use nested tags with a fixed structure: for example, the spatial position of  a prim might be the following:</p>
<pre>      &lt;GroupPosition&gt;&lt;X&gt;167.5&lt;/X&gt;&lt;Y&gt;30&lt;/Y&gt;&lt;Z&gt;30.089&lt;/Z&gt;&lt;/GroupPosition&gt;</pre>
<p style="text-align:justify;">Finally, other properties have a still more complex structure: for example, a prim may store &#8220;inside itself&#8221; (i.e., in the &#8220;Contents&#8221; tab) a number of other prims, scripts, animations, notecards, etc. &#8212; this is stored using a &#8220;&lt;TaskInventory&gt;&#8221; tag, and its contents will be the references to the (variable) contents of the prim. The same is true of the shape of the prim (I am not sure about that, but I think that Opensim stores the prim shapes in a separate SQL table, and that&#8217;s probably the reason why the shape information uses its own separate nested tag).</p>
<p style="text-align:justify;">4) &#8220;(OtherParts)&#8221; is the (possibly empty) ordered collection of all the non-root prims (SceneObjectParts). If the linkset consists of only one part, an empty tag will be used:</p>
<pre>      &lt;OtherParts /&gt;</pre>
<p>On the other hand, if there is more than one part in the linkset, the format will be the following:</p>
<pre>      &lt;OtherParts&gt;(Part)[(Part)...]&lt;/OtherPart&gt;</pre>
<p style="text-align:justify;">where each &#8220;(Part)&#8221; is in turn a &#8220;SceneObjectPart&#8221; as described above.</p>
<p style="text-align:justify;">5) &#8220;(ScriptStates)&#8221; stores the states of running scripts, so that these scripts can be properly restored at OAR loading time. If there are no script states to store, there is nothing (i.e., not even an empty tag) in the XML2 file; if there are script states to store, they are bracketed between &#8220;&lt;GroupScriptStates&gt;&#8221; and &#8220;&lt;/GroupScriptStates&gt;&#8221; tags.</p>
<h2>Implementing SELECT and WHERE</h2>
<p style="text-align:justify;">Since the XML2 format is undocumented, I first implemented an agnostic XML parser, i.e., I read everything between &#8220;&lt;tag&gt;&#8221; and &#8220;&lt;/tag&gt;&#8221; and stored it as-is as the value of the &#8220;tag&#8221; property of the containing object. Then I looked at the XML files and refined the parser to add hints to deserialize vectors (for example for the &#8220;GroupPosition&#8221; property) and quaternions (for example, for the &#8220;RotationOffset&#8221; property), as well as UUIDs (for example &#8220;CreatorID&#8221; or &#8220;UUID&#8221;).</p>
<p style="text-align:justify;">I then implemented a simplified SQL WHERE condition parser and an algorithm to detect when an object matched a specified condition:</p>
<p style="text-align:center;"><a title="0717 - A simple SELECT by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233839718/"><img class="aligncenter" src="http://farm3.static.flickr.com/2803/4233839718_0cfebbe1ee.jpg" alt="0717 - A simple SELECT" width="500" height="237" /></a></p>
<p style="text-align:justify;">Now for simple properties like &#8220;Name&#8221; or &#8220;Description&#8221; this worked very well. But what about more complicated properties, like &#8220;GroupPosition&#8221;?</p>
<p style="text-align:center;"><a title="0718 - SELECTing GroupPositions by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233850978/"><img class="aligncenter" src="http://farm3.static.flickr.com/2697/4233850978_ec26433b5d.jpg" alt="0718 - SELECTing GroupPositions" width="500" height="202" /></a></p>
<h3>Adding sub-properties</h3>
<p style="text-align:justify;">This is not bad, but we clearly would need to be able to refer to the individual coordinates of the &#8220;GroupPosition&#8221; property &#8212; fortunately, there is a &#8220;natural&#8221; notation for that:</p>
<p style="text-align:center;"><a title="0719 - SELECTing GroupPosition.x by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233858710/"><img class="aligncenter" src="http://farm5.static.flickr.com/4042/4233858710_2c71ccc590.jpg" alt="0719 - SELECTing GroupPosition.x" width="500" height="218" /></a></p>
<p style="text-align:justify;">i.e., we extend the SQL notation to allow the use of subproperties of a &#8220;column&#8221;.</p>
<h3>Adding alias</h3>
<p style="text-align:justify;">Of course, having to manually specify &#8220;GroupPosition.X&#8221;, &#8220;GroupPosition.Y&#8221;, etc. all the time is very cumbersome. It would be very nice if we could define an alias, of, say, &#8220;x&#8221; for &#8220;GroupPosition.X&#8221;, &#8220;y&#8221; for &#8220;GroupPosition.Y&#8221;, and so on:</p>
<p style="text-align:center;"><a title="0720 - Using ALIAS and SELECTing x by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233105001/"><img class="aligncenter" src="http://farm5.static.flickr.com/4038/4233105001_2c0e6f6ea7.jpg" alt="0720 - Using ALIAS and SELECTing x" width="500" height="256" /></a></p>
<p style="text-align:justify;">This looks even nicer using an &#8220;AS&#8221; clause:</p>
<p style="text-align:center;"><a title="0721 - Using ALIAS and SELECTing x AS X by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233882446/"><img class="aligncenter" src="http://farm3.static.flickr.com/2701/4233882446_9c1b039f5e.jpg" alt="0721 - Using ALIAS and SELECTing x AS X" width="500" height="206" /></a></p>
<h3>Using CALL IT</h3>
<p style="text-align:justify;">The alias facility has another important use: let&#8217;s assume, for example, that we want to manipulate objects created by me &#8212; but &#8220;me&#8221; (that is, &#8220;Zonja Capalini&#8221;) is identified in the OAR by an UUID, not by my name. I do know that I&#8217;m the creator of <a href="http://zonjacapalini.wordpress.com/2009/07/20/2889-working-with-very-large-linksets-in-opensim/">the 2889-prims Klein bottle</a>:</p>
<p style="text-align:center;"><a title="0722 - Finding the Klein Bottle by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233131487/"><img class="aligncenter" src="http://farm5.static.flickr.com/4005/4233131487_03d390cd18.jpg" alt="0722 - Finding the Klein Bottle" width="479" height="101" /></a></p>
<p style="text-align:justify;">We can copy and paste the creatorid to create an alias, or we can use the following <span style="text-decoration:line-through;">hack</span> command:</p>
<p style="text-align:center;"><a title="0723 - Using the CALL IT hack by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233142701/"><img class="aligncenter" src="http://farm5.static.flickr.com/4002/4233142701_ddd328e43b.jpg" alt="0723 - Using the CALL IT hack" width="500" height="126" /></a></p>
<p style="text-align:justify;">This is very handy &#8212; CALL IT only works when the previous instruction has been a SELECT with a one-row, one-column result set. Let&#8217;s see it in action:</p>
<p style="text-align:center;"><a title="0724 - Selecting with aliases by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233927512/"><img class="aligncenter" src="http://farm3.static.flickr.com/2664/4233927512_189866f89b.jpg" alt="0724 - Selecting with aliases" width="500" height="158" /></a></p>
<p style="text-align:justify;">This looks pretty neat! (Of course &#8220;y&#8221; and &#8220;z&#8221; have been conveniently aliased before executing this SELECT command).</p>
<h3>Implementing functions</h3>
<p style="text-align:justify;">Some information about objects is either not stored as an explicit object property or is stored somewhere else. For example, the number of parts (prims) in a SceneObject can be easily calculated (it&#8217;s the number of SceneObjectParts in the OtherParts section plus one), but it&#8217;s not specifically stored anywhere; and the parcel a SceneObject is in is not stored anywhere, but <a href="http://zonjacapalini.wordpress.com/2009/12/18/reverse-engineering-oars-understanding-parcel-maps/">it can be calculated from the parcel information with relative ease</a>. These are two good candidates for our OAR-specific functions:</p>
<p style="text-align:center;"><a title="0725 - Using the PARTS function by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233951936/"><img class="aligncenter" src="http://farm3.static.flickr.com/2504/4233951936_281cb0c489.jpg" alt="0725 - Using the PARTS function" width="387" height="180" /></a></p>
<p style="text-align:justify;">Here&#8217;s another example: we first identify the UUID of Ludmilla Writer, and then we use it (via CALL IT) to select all objects created by Ludmilla that are in the &#8220;Mirror Worlds&#8221; parcel.</p>
<p style="text-align:center;"><a title="0726 - Selecting all objects created by Ludmilla in the Mirror Worlds parcel by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233962322/"><img class="aligncenter" src="http://farm3.static.flickr.com/2717/4233962322_c9a36c96cd.jpg" alt="0726 - Selecting all objects created by Ludmilla in the Mirror Worlds parcel" width="500" height="258" /></a></p>
<p style="text-align:justify;">Overall, this looks very easy and practical. Even if I&#8217;ve not (yet) implemented support for Shapes or TaskInventories, the expressive power of our very simple dialect of SELECT statements is quite strong. Let&#8217;s see what happens with DELETE and UPDATE.</p>
<h2>Implementing DELETE</h2>
<p style="text-align:justify;">Once we have at our disposal the WHERE functionality described above, implementing DELETE statements is trivial:</p>
<p style="text-align:center;"><a title="0727 - Using DELETE by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4233985700/"><img class="aligncenter" src="http://farm5.static.flickr.com/4043/4233985700_c79ea5ba21.jpg" alt="0727 - Using DELETE" width="387" height="37" /></a></p>
<p style="text-align:justify;">Here&#8217;s a more sophisticated example:</p>
<p style="text-align:center;"><a title="0728 - Using DELETE (2) by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4234008468/"><img class="aligncenter" src="http://farm5.static.flickr.com/4031/4234008468_4bb4e69d34.jpg" alt="0728 - Using DELETE (2)" width="500" height="38" /></a></p>
<h2>Implementing UPDATE</h2>
<p style="text-align:justify;">It&#8217;s when we want to extend our till now quite successful model to SQL UPDATE statements when we start to find difficulties.</p>
<p style="text-align:justify;">1) In some simple cases (e.g., the &#8220;Name&#8221; or &#8220;Description&#8221; properties), standard SQL UPDATE semantics works well:</p>
<p style="text-align:center;"><a title="Using SQL to manipulate OARs" href="http://www.flickr.com/photos/zonja/4233248971/"><img class="aligncenter" src="http://farm3.static.flickr.com/2508/4233248971_ed7b061234.jpg" alt="Using SQL to manipulate OARs" width="500" height="239" /></a></p>
<p style="text-align:justify;">This is due to the fact that, in the case of these properties, the semantics for the whole SceneObjectGroup is determined by the root SceneObjectPart, i.e., the name of a linkset <strong>is</strong> the name of the root prim, and the same holds of its description.</p>
<p style="text-align:justify;">2) For other properties this is not true: for example, altering the &#8220;GroupPosition&#8221; property <strong>implies altering the same property for all the SceneObjectParts in the SceneObjectGroup, not only the root part </strong>(see <a href="http://zonjacapalini.wordpress.com/2009/12/14/moving-and-rotating-oars/">&#8220;Moving and rotating OARs&#8221;</a>). Something similar happens with other properties.</p>
<p style="text-align:justify;">3) For still other properties, the semantics is unclear: while changing the OwnerID of the root prim should imply changing it too for all SceneObjectParts in the SceneObjectGroup, what does it mean to change the CreatorID? Changing it for the root part only, or changing it for all parts in the linkset?</p>
<p style="text-align:justify;">4) Finally, there are properties that should not be changed by the user: the clearest one is &#8220;LinkNum&#8221; &#8212; LinkNum stores the relative number of the part in the linkset (the root part has LinkNum = 0, the second prim in the linkset order LinkNum = 1, and so on), and we clearly don&#8217;t want the user to be able to change that.</p>
<h2>Future work, and some open questions</h2>
<h3>Clarifying UPDATE semantics</h3>
<p style="text-align:justify;">While the implementation of SELECT and DELETE semantics allow for a lazy parsing, relatively agnostic, implementation of SceneObjectGroups, UPDATE requires a good knowledge of the semantics of SceneObjectGroups. A conservative approach would be to implement UPDATE functionality only for properties of the SceneObhectGroup that are determined by the corresponding property of the root SceneObjectPart alone (i.e., case (1) above). Updates for case (2) could also be implemented, although this is probably better handled by separate, specialized commands (like &#8220;MOVE&#8221; or &#8220;ROTATE&#8221;) to avoid mixing root-part-only and all-parts semantics. Updates for case (3) should probably be forbidden in its direct form, but allowed by the extended select form presented below. Updates for case (4) should be strictly forbidden.</p>
<h3>SELECT FROM OBJECTS, SELECT FROM &lt;object&gt;</h3>
<p style="text-align:justify;">Readers conversant with SQL will have noticed an omission from all the SQL statements showed here: the reference to a table. This is because all statements refer to the standard &#8220;table&#8221; OBJECTS, which can be omitted for simplicity. Hence, <strong>&#8220;Select where name like &#8216;%Zonja%&#8217;&#8221;</strong> really means <strong>&#8220;Select FROM OBJECTS where name like &#8216;%Zonja%&#8217;&#8221;</strong>. This will allow for possible future extensions where, for example, parcel data (or profile information, when/if it is added to OARs) can be displayed or manipulated.</p>
<p style="text-align:justify;">Another interesting possibility is to manage a SceneObjectGroup itself as if it was a table. For example, if &#8220;3890889f-49de-4564-acc7-7a0aeb9f319e&#8221; is the UUID for the Klein bottle, we should be able to write</p>
<pre>      Select name, description from "3890889f-49de-4564-acc7-7a0aeb9f319e" where linknum = 23</pre>
<p style="text-align:justify;">(here LinkNum <strong>is</strong> useful), or, using an appropriate ALIAS,</p>
<pre>      Select name, description from KleinBottle where linknum = 23</pre>
<p style="text-align:justify;">DELETE semantics, when applied to linksets, would take care to preserve the LinkNum ordering; for UPDATE statements, semantics is in general also quite obscure and should be clarified.</p>
<h3>Scripting</h3>
<p style="text-align:justify;">Using an interactive line-mode shell makes it trivial to implement a simple form of <strong>scripting</strong> for ZOE &#8212; indeed I&#8217;ve implemented one, but I have not described it here not to make this article too long. Scripting allows to do very nice things, like defining a set of standard alias (for example, for X, Y and Z), or programming simple modifications to a region (for example, a script cold be written which deleted all Linden plants and then distributed and used as-is by somebody without the knowledge about how to do such a thing).</p>
<h3>Programmed object creation</h3>
<p style="text-align:justify;">While a combination of INSERT and UPDATE SQL statements seem to be overkill and probably too difficult to use to allow for the programmed creation of new objects, it would be relatively easy to expose an API for that, and use it to build objects offline. I will probably make some experiments in this direction when time allows.</p>
<h3>Visual feedback: load oar &#8211;update, anyone? :-)</h3>
<p style="text-align:justify;">Justin Clark-Casey has hinted, in the opensim-dev mailing list, that he could consider the possibility of saving and loading OARs directly from the filesystem (i.e., without having to unzip and untar the OAR first). This would allow to do something very nice: edit an OAR, and every so often load that oar in a local sim, just to see the results (without having to tar and gzip it every time, which is time-consuming).</p>
<p style="text-align:justify;">It would be still better if the Opensim &#8220;load oar&#8221; command implemented an &#8220;&#8211;update&#8221;  switch in addition to <a href="http://justincc.org/blog/2009/11/30/this-week-in-opensim-dev-week-ending-saturday-28th-november-2009/">the &#8220;&#8211;merge&#8221; switch introduced in a4d2a9</a>. Currently, the &#8220;load oar&#8221; command does one of two things: if &#8220;&#8211;merge&#8221; is not specified, it clears all objects from the region, then loads the new objects (and the terrain, etc); if &#8220;&#8211;merge&#8221; is specified, it does <strong>not</strong> clear the existing objects, but it simply adds the new ones; what &#8220;&#8211;update&#8221; would do is the following: keep all objects that have not changed alone, delete the ones that have been deleted, alter the ones that have been altered, and add the new ones, if any (I feel stupid writing that :-)). When a sim has a lot of objects and only a few ones have changed, this should be much cheaper than deleting everything and recreating it back (but I might be wrong about that).</p>
<p style="text-align:justify;">Then, on a test installation, using a timed script with a &#8220;load oar &#8211;update&#8221; command would implement a great form of visual feedback.</p>
<h3>Conclusion</h3>
<p style="text-align:justify;">Uding SQL as a way to manipulate OARs is not perfect, but it has a lot of potential, specially for SELECT and DELETE statements. UPDATE semantics needs to be carefully tuned to be of any practically use, but the use of non-standard SQL statements with a standard WHERE clause (e.g., &#8220;ADD 256 TO X WHERE &#8230;&#8221; or &#8220;ROTATE 90 DEGREES WHERE &#8230;&#8221;) can also be very practical.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/527/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/527/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/527/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=527&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2010/01/01/using-sql-to-manipulate-oars/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2803/4233839718_0cfebbe1ee.jpg" medium="image">
			<media:title type="html">0717 - A simple SELECT</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2697/4233850978_ec26433b5d.jpg" medium="image">
			<media:title type="html">0718 - SELECTing GroupPositions</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4042/4233858710_2c71ccc590.jpg" medium="image">
			<media:title type="html">0719 - SELECTing GroupPosition.x</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4038/4233105001_2c0e6f6ea7.jpg" medium="image">
			<media:title type="html">0720 - Using ALIAS and SELECTing x</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2701/4233882446_9c1b039f5e.jpg" medium="image">
			<media:title type="html">0721 - Using ALIAS and SELECTing x AS X</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4005/4233131487_03d390cd18.jpg" medium="image">
			<media:title type="html">0722 - Finding the Klein Bottle</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4002/4233142701_ddd328e43b.jpg" medium="image">
			<media:title type="html">0723 - Using the CALL IT hack</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2664/4233927512_189866f89b.jpg" medium="image">
			<media:title type="html">0724 - Selecting with aliases</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2504/4233951936_281cb0c489.jpg" medium="image">
			<media:title type="html">0725 - Using the PARTS function</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2717/4233962322_c9a36c96cd.jpg" medium="image">
			<media:title type="html">0726 - Selecting all objects created by Ludmilla in the Mirror Worlds parcel</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4043/4233985700_c79ea5ba21.jpg" medium="image">
			<media:title type="html">0727 - Using DELETE</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4031/4234008468_4bb4e69d34.jpg" medium="image">
			<media:title type="html">0728 - Using DELETE (2)</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2508/4233248971_ed7b061234.jpg" medium="image">
			<media:title type="html">Using SQL to manipulate OARs</media:title>
		</media:content>
	</item>
		<item>
		<title>Reverse-engineering OARs: Understanding parcel maps</title>
		<link>http://zonjacapalini.wordpress.com/2009/12/18/reverse-engineering-oars-understanding-parcel-maps/</link>
		<comments>http://zonjacapalini.wordpress.com/2009/12/18/reverse-engineering-oars-understanding-parcel-maps/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 14:53:43 +0000</pubDate>
		<dc:creator>Zonja Capalini</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ZOE]]></category>
		<category><![CDATA[Condensation Land]]></category>
		<category><![CDATA[OAR]]></category>
		<category><![CDATA[Parcel maps]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://zonjacapalini.wordpress.com/?p=514</guid>
		<description><![CDATA[Format 0.2 Opensim Archives (OARs) include, since Opensim version 3c271b, a &#8220;landdata&#8221; directory that stores parcel data. For each parcel in the region there is a file in XML format in the directory. Amost all objects in Opensim are associated with a unique uuid that identifies them, and parcels are not an exception to that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=514&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://opensimulator.org/wiki/OAR_Format_0.2">Format 0.2 Opensim Archives (OARs)</a> include, since <a href="http://justincc.org/blog/2009/10/05/this-week-in-opensim-dev-week-ending-saturday-3rd-october-2009/">Opensim version 3c271b</a>, a &#8220;landdata&#8221; directory that stores parcel data. For each parcel in the region there is a file in XML format in the directory. Amost all objects in Opensim are associated with a unique <a href="http://en.wikipedia.org/wiki/Universally_Unique_Identifier">uuid</a> that identifies them, and parcels are not an exception to that rule. Files in the &#8220;landdata&#8221; directory use the uuid of the parcel as their filename and have a &#8220;.xml&#8221; extension.</p>
<p style="text-align:justify;">What&#8217;s inside each one of these .xml files? Let&#8217;s take a peek at a sample one:</p>
<pre>    &lt;?xml version="1.0" encoding="utf-16"?&gt;
    &lt;LandData&gt;
      &lt;Area&gt;6256&lt;/Area&gt;
      &lt;AuctionID&gt;0&lt;/AuctionID&gt;
      &lt;AuthBuyerID&gt;00000000-0000-0000-0000-000000000000&lt;/AuthBuyerID&gt;
      &lt;Category&gt;-1&lt;/Category&gt;
      &lt;ClaimDate&gt;1255170099&lt;/ClaimDate&gt;
      &lt;ClaimPrice&gt;0&lt;/ClaimPrice&gt;
      &lt;GlobalID&gt;bfbf7bd4-7d7b-4a35-aba0-c352201cddcf&lt;/GlobalID&gt;
      &lt;GroupID&gt;00000000-0000-0000-0000-000000000000&lt;/GroupID&gt;
      &lt;IsGroupOwned&gt;False&lt;/IsGroupOwned&gt;
      &lt;Bitmap&gt;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//f
       wAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA/
       /9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAA=&lt;/Bitmap&gt;
      &lt;Description /&gt;
      &lt;Flags&gt;505454667&lt;/Flags&gt;
      &lt;LandingType&gt;0&lt;/LandingType&gt;
      &lt;Name&gt;Arrabal Tango Club&lt;/Name&gt;
      &lt;Status&gt;0&lt;/Status&gt;
      &lt;LocalID&gt;4&lt;/LocalID&gt;
      &lt;MediaAutoScale&gt;0&lt;/MediaAutoScale&gt;
      &lt;MediaID&gt;00000000-0000-0000-0000-000000000000&lt;/MediaID&gt;
      &lt;MediaURL /&gt;
      &lt;MusicURL&gt;http://xx.xx.xx.xx:8000&lt;/MusicURL&gt;
      &lt;OwnerID&gt;69af4428-cec0-48d8-a0d9-c05268facca5&lt;/OwnerID&gt;
      &lt;ParcelAccessList /&gt;
      &lt;PassHours&gt;0&lt;/PassHours&gt;
      &lt;PassPrice&gt;0&lt;/PassPrice&gt;
      &lt;SalePrice&gt;0&lt;/SalePrice&gt;
      &lt;SnapshotID&gt;00000000-0000-0000-0000-000000000000&lt;/SnapshotID&gt;
      &lt;UserLocation&gt;&amp;lt;0, 0, 0&amp;gt;&lt;/UserLocation&gt;
      &lt;UserLookAt&gt;&amp;lt;0, 0, 0&amp;gt;&lt;/UserLookAt&gt;
      &lt;Dwell&gt;0&lt;/Dwell&gt;
      &lt;OtherCleanTime&gt;0&lt;/OtherCleanTime&gt;
    &lt;/LandData&gt;</pre>
<p style="text-align:justify;">That&#8217;s the xml file for Arrabal Tango Club in Condensation Land &#8212; I&#8217;ve only obscured the music URL and wrapped the part between the &lt;Bitmap&gt; and &lt;/Bitmap&gt; tags, which originally used only one line, with no intervening blanks. This string encodes the shape and position of the parcel in the region. How do we know that? Well, the parcel map has to be stored somewhere, and it has to be quite large, so the only candidate is the &#8220;Bitmap&#8221; string :-) Most probably this long string is a <a href="http://en.wikipedia.org/wiki/Binary-to-text_encoding">text encoding of binary data</a>.</p>
<p style="text-align:justify;">Indeed this is the case: the string is using the <a href="http://en.wikipedia.org/wiki/Base64">Base64</a> encoding (you can find that quickly by browsing the Wikipedia). After decoding the string, we get a binary chunk of exactly 512 bytes. I checked that all the terrain files have strings of exactly the same length, so this number had to mean something.<span id="more-514"></span></p>
<p style="text-align:justify;">But &#8212; wait: parcel granularity in Opensim (and Second Life) is 4 meters &#8212; this means that parcel selection works in minimal units of 4 meters. Since a normal region is 256&#215;256 meters and 256/4 = 64, this means that, parcel-wise, each region is like a 64&#215;64 checkboard. But 64&#215;64 = 4096, so this is a 4096-square checkboard. And, significantly, 4096/8 = 512 &#8212; so it might be that our binary chunk is representing the parcel map in the following way: let&#8217;s number the squares in their natural order (i.e., start by putting a one on the SW square and continue horizontally; when a line ends, go up one line and continue), and then construct a bit string consisting of a 0 for each square which doesn&#8217;t belong to the parcel, and a 1 for each square that does belong to it.</p>
<p style="text-align:justify;">To check whether my hypothesis was working, I wrote a small program to visualize terrain files using a command prompt &#8212; I&#8217;d write periods instead of zeros to make the output more legible. Here&#8217;s the first result:</p>
<p style="text-align:center;"><a title="0708 - Map for Arrabal Tango Club, wrong version by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4194449531/"><img class="aligncenter" src="http://farm3.static.flickr.com/2547/4194449531_4a20e8fc75_o.jpg" alt="0708 - Map for Arrabal Tango Club, wrong version" width="512" height="512" /></a></p>
<p style="text-align:justify;">(I have only rescaled the image to make it square) This looks not bad, since Arrabal is really in the NW part of the region and is (roughly) square, but there is something wrong in the image: there&#8217;s a strange column of dots in the right part of Arrabal that should not be there. Interestingly. the number of 1s before the first dot is exactly 16. Could this have something to see with an <a href="http://en.wikipedia.org/wiki/Endianness">endianness problem</a>? I modified my program to order-reverse every 8 bits in the original chunk, ran it again, and &#8212; voilà!:</p>
<p style="text-align:center;"><a title="0709 - Map for Arrabal Tango Club, right version by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4194466941/"><img class="aligncenter" src="http://farm5.static.flickr.com/4041/4194466941_b7b4def68a_o.jpg" alt="0709 - Map for Arrabal Tango Club, right version" width="512" height="512" /></a></p>
<p style="text-align:justify;">Now this looks pretty right! :-) Let&#8217;s take an aerial shot of (a local copy of) Condensation Land (the property lines can be seen if you look hard enough :))</p>
<p style="text-align:center;"><a title="0710 - Condensation Land, property lines showing by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4194481785/"><img class="aligncenter" src="http://farm3.static.flickr.com/2623/4194481785_e4103a3812.jpg" alt="0710 - Condensation Land, property lines showing" width="500" height="500" /></a></p>
<p style="text-align:justify;">and superimpose it with a (conveniently  alphaed, and positioned to fit exactly the island borders) version of the last map:</p>
<p style="text-align:center;"><a title="0711 - Photo + map by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4195252170/"><img class="aligncenter" src="http://farm5.static.flickr.com/4038/4195252170_a739eb0e40_o.jpg" alt="0711 - Photo + map" width="512" height="512" /></a></p>
<p style="text-align:justify;">This looks as if it&#8217;s fitting perfectly! Now it should be pretty easy to implement deletion of objects by parcel in <a href="http://zonjacapalini.wordpress.com/2009/12/16/zoe-version-0-1-released/">Zoe</a>: since for each object we already have its X and Y coordinates, to evaluate whether the (root prim of the) object fits in a certain square, all we have to do is to divide X and Y by 4, truncate round both values, calculate Y*64+x, and use that value as a bit-level index into our binary chunk to determine whether the object is &#8220;inside&#8221; or &#8220;outside&#8221; the parcel:</p>
<p style="text-align:center;"><a title="0712 - Zoe - Deleting all objects in a parcel by Zonja Capalini, on Flickr" href="http://www.flickr.com/photos/zonja/4194513869/"><img class="aligncenter" src="http://farm3.static.flickr.com/2631/4194513869_7e0d7296d4_o.jpg" alt="0712 - Zoe - Deleting all objects in a parcel" width="453" height="87" /></a></p>
<p style="text-align:justify;">Here&#8217;s the result of saving the OAR and loading it:</p>
<p style="text-align:center;"><a title="Reverse-engineering OARs: Understanding parcel maps" href="http://www.flickr.com/photos/zonja/4195282442/"><img class="aligncenter" src="http://farm3.static.flickr.com/2727/4195282442_6b8b7bc97f.jpg" alt="Reverse-engineering OARs: Understanding parcel maps" width="500" height="500" /></a></p>
<p style="text-align:justify;">This looks pretty neat! :-) It&#8217;s been fun to do the research, it has all taken some few hours (including writing this post), and the next version of Zoe will include deletion by parcel name.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zonjacapalini.wordpress.com/514/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zonjacapalini.wordpress.com/514/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zonjacapalini.wordpress.com/514/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zonjacapalini.wordpress.com&amp;blog=4356976&amp;post=514&amp;subd=zonjacapalini&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zonjacapalini.wordpress.com/2009/12/18/reverse-engineering-oars-understanding-parcel-maps/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f0ddb099125a39d09ef061091aa1463?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Zonja Capalini</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2547/4194449531_4a20e8fc75_o.jpg" medium="image">
			<media:title type="html">0708 - Map for Arrabal Tango Club, wrong version</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4041/4194466941_b7b4def68a_o.jpg" medium="image">
			<media:title type="html">0709 - Map for Arrabal Tango Club, right version</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2623/4194481785_e4103a3812.jpg" medium="image">
			<media:title type="html">0710 - Condensation Land, property lines showing</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4038/4195252170_a739eb0e40_o.jpg" medium="image">
			<media:title type="html">0711 - Photo + map</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2631/4194513869_7e0d7296d4_o.jpg" medium="image">
			<media:title type="html">0712 - Zoe - Deleting all objects in a parcel</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2727/4195282442_6b8b7bc97f.jpg" medium="image">
			<media:title type="html">Reverse-engineering OARs: Understanding parcel maps</media:title>
		</media:content>
	</item>
	</channel>
</rss>
