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

<channel>
	<title>robsmart.co.uk &#187; secondlife</title>
	<atom:link href="http://robsmart.co.uk/tag/secondlife/feed/" rel="self" type="application/rss+xml" />
	<link>http://robsmart.co.uk</link>
	<description>Emerging technology, Open Source and the Internet</description>
	<lastBuildDate>Sat, 05 May 2012 21:57:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>XML Parsing in OpenSim: Example &#8211; reading RSS feeds</title>
		<link>http://robsmart.co.uk/2008/10/27/xml-parsing-in-opensim-example-reading-rss-feeds/</link>
		<comments>http://robsmart.co.uk/2008/10/27/xml-parsing-in-opensim-example-reading-rss-feeds/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 13:21:22 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/?p=126</guid>
		<description><![CDATA[In OpenSim you&#8217;re not just restricted to using LSL for scripting, it&#8217;s also possible to use c#. This opens up the possiblilities for far more powerful scripts that can access c# in built libraries. For example I&#8217;ve previously mentioned that the string processing methods in Second Life are not very flexible when it comes to [...]]]></description>
			<content:encoded><![CDATA[<p>In OpenSim you&#8217;re not just restricted to using LSL for scripting, it&#8217;s also possible to use c#. This opens up the possiblilities for far more powerful scripts that can access c# in built libraries.</p>
<p>For example I&#8217;ve previously mentioned that the string processing methods in Second Life are not very flexible when it comes to reading formatted data. Thus the reason I implemented the osParseJSON method to make Web APIs easier to use.</p>
<p>Obviously another common data format is XML, in this case I don&#8217;t have to implement any new OpenSim script functions because the XML capabilities are available natively in c#.</p>
<p>Here is a simple example of reading the <a href="http://robsmart.co.uk/feed">RSS feed</a> for my blog, and reading out the entries in chat.</p>
<p><code><br />
//c#<br />
// displays the contents of an RSS 2.0 feed</code></p>
<p>string URL = &#8220;http://robsmart.co.uk/feed&#8221;;<br />
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();<br />
LSL_Types.LSLString requestID;</p>
<p>public void default_event_state_entry()<br />
{<br />
llSay(0,&#8221;RSS reader current Feed is &#8221; + URL);<br />
getFeedContent();</p>
<p>}</p>
<p>public void getFeedContent()<br />
{<br />
requestID = llHTTPRequest(URL, new LSL_Types.list(), &#8220;&#8221; );<br />
}</p>
<p>public void default_event_touch_start(LSL_Types.LSLInteger total_number)<br />
{<br />
// read out the RSS feed.<br />
displayFeed();</p>
<p>}</p>
<p>public void displayFeed()<br />
{<br />
System.Xml.XmlNodeList items = xDoc.GetElementsByTagName(&#8220;item&#8221;);</p>
<p>for(int i=0;i &lt; items.Count ; i++)<br />
{<br />
string title = items[i].SelectSingleNode(&#8220;title&#8221;).InnerXml;<br />
string link = items[i].SelectSingleNode(&#8220;link&#8221;).InnerXml;</p>
<p>string description=&#8221;no description available&#8221;;</p>
<p>if(items[i].SelectSingleNode(&#8220;description&#8221;)!=null)<br />
description = items[i].SelectSingleNode(&#8220;description&#8221;).InnerXml;</p>
<p>llSay(0,title + &#8220;\n&#8221; + description + &#8220;\n&#8221;);<br />
}<br />
}</p>
<p>public void default_event_http_response(LSL_Types.LSLString request_id, LSL_Types.LSLInteger status, LSL_Types.list metadata, LSL_Types.LSLString body)<br />
{<br />
if (requestID == request_id)<br />
{<br />
// store the xml<br />
xDoc.LoadXml(body);</p>
<p>// process the xml<br />
llOwnerSay(&#8220;loaded feed&#8221;);<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2008/10/27/xml-parsing-in-opensim-example-reading-rss-feeds/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>OpenSim Web 2.0 contribution</title>
		<link>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/</link>
		<comments>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 21:37:51 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/?p=117</guid>
		<description><![CDATA[As described over on Eightbar I have made my first contribution to the OpenSim opensource project. The contribution is in the form of a new scripting function called osParseJSON. This function allows a c# script in OpenSim to consume the JSON notation provided by many of the major Web 2.0 APIs provided by services such [...]]]></description>
			<content:encoded><![CDATA[<p>As described over on <a href="http://eightbar.co.uk">Eightbar</a> I have made my first contribution to the OpenSim opensource project. The contribution is in the form of a new scripting function called <a href="http://opensimulator.org/wiki/OSSL_Implemented">osParseJSON</a>. This function allows a c# script in OpenSim to consume the JSON notation provided by many of the major Web 2.0 APIs provided by services such as Flickr and Google translation.</p>
<p>The following example is a script that uses the Google Translate API to let an OpenSim avatar translate ther conversations between 23 different languages.</p>
<p>(disclaimer &#8211; please read the terms of conditions of the Google translate API and abide by them)</p>
<div style="text-align: left;" dir="ltr">
<pre class="source-csharp" style="padding-left: 30px;"><span class="co1">//c#</span>
<span class="co1">// This script is written as an example use of the osParseJSON method</span>
<span class="co1">// it uses the Google translate API</span>
<span class="co1">// ensure you have read the terms and conditions of the Google translate API</span>
<span class="co1">// http://code.google.com/apis/ajaxlanguage/documentation/</span>

LSL_Types.<span class="me1">key</span> requestID;
<span class="kw4">string</span> sourceLang = <span class="st0">"en"</span>;
<span class="kw4">string</span> targetLang = <span class="st0">"fr"</span>;

<span class="kw1">public</span> <span class="kw1">void</span> default_event_state_entry<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/1 sentence' to translate something"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/2 source langage' to change target language e.g. '/2 fr'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/3 target langage' to change source language e.g. '/3 en'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/4 help', to list languages"</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">1</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">2</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">3</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">4</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_touch_start<span class="br0">(</span>LSL_Types.<span class="me1">LSLInteger</span> total_number<span class="br0">)</span>
<span class="br0">{</span>
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/1 sentence' to translate something"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/2 source langage' to change target language e.g. '/2 fr'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/3 target langage' to change source language e.g. '/3 en'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/4 help', to list languages"</span><span class="br0">)</span>;
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_http_response<span class="br0">(</span>LSL_Types.<span class="me1">LSLString</span> request_id, LSL_Types.<span class="me1">LSLInteger</span> status, LSL_Types.<span class="me1">list</span> metadata, LSL_Types.<span class="me1">LSLString</span> body<span class="br0">)</span>
<span class="br0">{</span>
        <span class="kw1">if</span> <span class="br0">(</span>requestID == request_id<span class="br0">)</span>
        <span class="br0">{</span>
            <span class="co1">// the Google JSON string returned wil be of the format</span>
            <span class="co1">//  {"responseData": {"translatedText":"Bonjour"}, "responseDetails": null, "responseStatus": 200}</span>
            <span class="co1">// call the osParseJSON method so we can read the contents </span>
            <span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span> response = <span class="br0">(</span><span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span><span class="br0">)</span> osParseJSON<span class="br0">(</span>body<span class="br0">)</span>;
            <span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span> responsedata = <span class="br0">(</span><span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span><span class="br0">)</span> response<span class="br0">[</span><span class="st0">"responseData"</span><span class="br0">]</span>;

            llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span>responsedata<span class="br0">[</span><span class="st0">"translatedText"</span><span class="br0">]</span><span class="br0">)</span>;
        <span class="br0">}</span>
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_listen<span class="br0">(</span>LSL_Types.<span class="me1">LSLInteger</span> channelIn, LSL_Types.<span class="me1">LSLString</span> name, LSL_Types.<span class="me1">LSLString</span> id, LSL_Types.<span class="me1">LSLString</span> message<span class="br0">)</span>
<span class="br0">{</span>
    <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">1</span><span class="br0">)</span>
    <span class="br0">{</span>
        <span class="kw4">string</span> toTranslate = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span> message;
        requestID = llHTTPRequest<span class="br0">(</span> <span class="st0">"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&amp;q="</span>+toTranslate+<span class="st0">"&amp;langpair="</span>+sourceLang+<span class="st0">"%7C"</span>+targetLang, <span class="kw3">new</span> LSL_Types.<span class="me1">list</span><span class="br0">(</span><span class="br0">)</span>, <span class="st0">""</span> <span class="br0">)</span>;  

    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">2</span><span class="br0">)</span>
    <span class="br0">{</span>
        sourceLang = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span> message;
    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">3</span><span class="br0">)</span>
    <span class="br0">{</span>
        targetLang = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span>message;
    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">4</span><span class="br0">)</span>
    <span class="br0">{</span>
        llOwnerSay<span class="br0">(</span><span class="st0">"LANGUAGE (CODE)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"*  Arabic (ar)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Bulgarian (bg)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Chinese (zh)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Croatian (hr)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Czech (cs)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Danish (da)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Dutch (nl)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* English (en)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Finnish (fi)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* French (fr)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* German (de)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Greek (el)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Hindi (hi)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Italian (it)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Japanese (ja)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Korean (ko)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Norwegian(no) "</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Polish (pl)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Portuguese (pt-PT)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Romanian (ro)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Russian (ru)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Spanish (es)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Swedish (sv)"</span><span class="br0">)</span>; 

    <span class="br0">}</span>
<span class="br0">}</span></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Second Life hidden video secrets</title>
		<link>http://robsmart.co.uk/2007/10/27/second-life-hidden-video-secrets/</link>
		<comments>http://robsmart.co.uk/2007/10/27/second-life-hidden-video-secrets/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 10:07:31 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[lsl]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/2007/10/27/second-life-hidden-video-secrets/</guid>
		<description><![CDATA[There is a very little known feature of Second Life to do with showing video in world, this is the ability to show different videos to individual avatars on the same land parcel. I&#8217;ve mentioned this to a quite a few people now and all have been in disbelief, even some of the Lindens seem [...]]]></description>
			<content:encoded><![CDATA[<p>There is a very little known feature of Second Life to do with showing video in world, this is <strong>the ability to show different videos to individual avatars on the same land parcel</strong>. I&#8217;ve mentioned this to a quite a few people now and all have been in disbelief, even some of the Lindens seem to be unaware of this feature.</p>
<p>The method to do this however is not a hack and has in fact been documented in the LSL API for as long as I know.</p>
<p>The method in question can be discovered by looking at the documentation for <a href="http://wiki.secondlife.com/wiki/LlParcelMediaCommandList" target="_blank">llParcelMediaCommandList </a> if you have a close look at the parameters there is one called</p>
<p><strong>PARCEL_MEDIA_COMMAND_AGENT</strong></p>
<p>the description for which is <strong>&#8220;Applies the media command to the specified agent only.&#8221;</strong></p>
<p>So lets look at a quick simple example.</p>
<p>We need a screen that can listen for urls over chat and then set the url for the person speaking.  ( The screen must be owned by someone who has media permission on the land )</p>
<p>The script for the screen is &#8230;</p>
<blockquote><p>integer listen_handle;</p>
<p>default<br />
{<br />
state_entry()<br />
{<br />
listen_handle = llListen(10, &#8220;&#8221;, &#8220;&#8221;, &#8220;&#8221;);<br />
}</p>
<p>touch_start(integer total_number)<br />
{<br />
llSay(0, &#8220;talk on channel 10 to set your personal video for this land&#8221;);<br />
}</p>
<p>listen( integer channel, string name, key id, string message )<br />
{<br />
llSay(0, &#8220;Setting Video play back to &#8221; + message);<br />
llParcelMediaCommandList( [<br />
PARCEL_MEDIA_COMMAND_URL, message,<br />
PARCEL_MEDIA_COMMAND_AGENT, id,<br />
PARCEL_MEDIA_COMMAND_TEXTURE, (key) llGetTexture(0) ] );<br />
}</p>
<p>}</p></blockquote>
<p>Here&#8217;s a quick side by side screenshot of two AVs watching a different movie at the same time on the same parcel of land.</p>
<p><a href="http://robsmart.co.uk/wp-content/uploads/2007/10/ironmanvideo.jpg" title="secondlife yoss video"><img src="http://robsmart.co.uk/wp-content/uploads/2007/10/ironmanvideo.jpg" alt="secondlife yoss video" /></a><a href="http://robsmart.co.uk/wp-content/uploads/2007/10/yossvideo.jpg" title="zeki video"><img src="http://robsmart.co.uk/wp-content/uploads/2007/10/yossvideo.jpg" alt="zeki video" height="254" width="332" /></a></p>
<p>Extra points for guessing what movie trailers they are watching <img src='http://robsmart.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2007/10/27/second-life-hidden-video-secrets/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>11 Second Life Machinima tips</title>
		<link>http://robsmart.co.uk/2007/06/27/11-second-life-machinima-tips/</link>
		<comments>http://robsmart.co.uk/2007/06/27/11-second-life-machinima-tips/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 20:38:16 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[machinima]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/2007/06/27/11-second-life-machinima-tips/</guid>
		<description><![CDATA[If you&#8217;re aiming for a more professionally produced machinima piece then the following tips are for you, in no particular order&#8230; Hardware Use a beefy desktop if possible. You need a decent graphics card and plenty of RAM. A fast hard disk really helps capture smooth video, slow disks and low RAM will cause you [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re aiming for a more professionally produced machinima piece then the following tips are for you, in no particular order&#8230;</p>
<p><strong>Hardware</strong><br />
Use a beefy desktop if possible. You need a decent graphics card  and plenty of RAM. A fast hard disk really helps capture smooth video, slow disks and low RAM will cause you headaches as your buffers will fill up before the video can get writen to disk.</p>
<p><strong>Record in as high quality as your machine can manage</strong><br />
If you&#8217;re filming on a decent desktop machine and it can cope then go for 1024p resolution, this will give you the best quality playback if you&#8217;re projecting onto a large cinema screen or using a High Definition plasma/LCD display. Go for 720p as the next best option (this is what i use most of the time)</p>
<p><strong>Playback at an Event (trade show/conference)</strong><br />
Always playback from a computer hooked up to the monitor/projector. dont be tempted to put the machinima on tape or DVD the resolution is much worse than you&#8217;d think. If doing a live broadcast event using the video have a machine for backup, as last resort use a tape or DVD backup.</p>
<p><strong>Hiding the UI</strong><br />
Unless you&#8217;re doing documentary or event capture where you need avatars chat text you&#8217;ll want to hide the UI, do this using CTRL-ALT-1</p>
<p><strong>Avatar chat</strong><br />
If you&#8217;re filming a scripted piece then put the captions on afterwards, the standard SL chat is small and hard to read when playing back at a lower resolution save your viewers eye strain and add the captions afterwards along with any other titling. This also gives you the option to quickly do changes when your client comes back to you and requests a script change (which they will).</p>
<p><strong>Things to tell your client</strong><br />
Make sure they know that filming machinima is a vary similar process to RL filming, you&#8217;ll need props, actors and a script. You&#8217;ll have to do  multiple takes and post editing. It all takes time. If you are able to have influence on the script etc try and keep the number of characters in each scene to a minimum.</p>
<p><strong>Actors</strong><br />
As mentioned before, if you can keep actor numbers low do so, if you&#8217;re lucky enough to have access to multiple machines use alts and control the characters yourself  when numbers permit. I use three machines on occasion which lets me use 3 avatars with one being the camera.<br />
If you do end up using a lot of other avatars try and get them to all go on a conference call. its much easier directing by voice rather than typing when you&#8217;re trying to use you avatar as a camera.</p>
<p><strong>SecondLife tools</strong><br />
Filming Path HUD is essential for getting smooth camera shots &#8211; panning, top shots etc. it&#8217;s the best tool around and allows you to lay out the path you want your camera to follow. You can set a focus target on another avatar to smoothly follow them while they and the camera moves. You can also set static focus points so that you your camera will stay fixed looking at a set point even when moving through complex curved paths etc.</p>
<p><strong>Be creative with angles (but don&#8217;t over do it <img src='http://robsmart.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong><br />
Filming machinima allows you the freedom to use creative angles more easily than RL filming. try shots from above, below, panning, swooping and aerial. make sure  they will fit together nicely when you edit afterwards though i.e. keep continuity in mind.</p>
<p><strong>Don&#8217;t forget composition</strong><br />
If you&#8217;re new to filming or photography then look up some of the composition rules of thumb, leading lines, rule of thirds etc.. once you know these simple guides you&#8217;ll spot them turning up again and again in hollywood films. They&#8217;re not hard fast rules but they work as a starting point and will help make your machinima a more visually pleasing experience for the viewer.</p>
<p><strong>Film more than you need</strong><br />
play with different angles and capture scenes more than once. You can edit afterwards and pick the best pieces to use, if you have a script change then some of the excess video you&#8217;ve captured might come in useful.</p>
<p>Hope some of these come in handy in some way, if you have any more tips then please add them in the comments <img src='http://robsmart.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2007/06/27/11-second-life-machinima-tips/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Free video streaming into Second Life</title>
		<link>http://robsmart.co.uk/2007/06/27/free-video-streaming-into-second-life/</link>
		<comments>http://robsmart.co.uk/2007/06/27/free-video-streaming-into-second-life/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 20:29:56 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[lsl]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/2007/06/27/free-video-streaming-into-second-life/</guid>
		<description><![CDATA[Well I haven&#8217;t done any machinima posts of late, but I can feel a few in the offing having just completed one concept video for a client and with the promise of a few more lurking not too far in the distant future. The machinima I&#8217;ve been doing has generally been of the type you [...]]]></description>
			<content:encoded><![CDATA[<p>Well I haven&#8217;t done any machinima posts of late, but I can feel a few in the offing having just completed one concept video for a client and with the promise of a few more lurking not too far in the distant future.</p>
<p>The machinima I&#8217;ve been doing has generally been of the type you use when you can&#8217;t do a live demonstration of SecondLife, it&#8217;s been produced to either illustrate potential scenarios/concepts or show case existing business aspects of secondlife. The venue for displaying this machinima has been at trade shows or during large presentations.</p>
<p>Video and particularly Machinima seems to keep cropping up in my day to day job at the moment, a client I&#8217;m currently working for has a need for a streamed video service for use at events. We want something reliable but cheap that we can use for the occasional streaming of a live event etc. into Second Life (any suggestions welcome <img src='http://robsmart.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The one service I have been playing with at the moment is a startup called Veodia (veodia.com) which is currently in beta. It&#8217;s very similar to another beta startup<br />
called ustream (ustream.tv) the one distinct and important difference (with my SL oriented slant) is that it makes available the video stream in quicktime format. Meaning that it can be streamed straight into Second Life with no conversion faffing or trouble finding dedicated servers to run a Darwin streaming server on.</p>
<p><a href="http://epredator.blogspot.com/">Ian</a> pointed me at <a href="http://veodia.com">Veodia</a> a few weeks ago, however it took my account registration email some time to materialise (it was trapped in Hotmails spam catcher) so I was a bit slow off the mark in checking out what format the streaming was done in. Kevin Aires as ever the video streaming investigator got in there and found it was quicktime compatible and blogged within IBM about getting a Veodia stream into SL.</p>
<p>After finally getting into my account yesterday I started up my <a href="http://www.luminositi.com/">softcam</a> desktop streaming app, set up a quick feed on veodia, grabbed the rtsp link from a view source and set the media url for my land parcel in Ukanipo.</p>
<p>Here&#8217;s the result a slightly disturbing world within world effect&#8230;</p>
<p>.<img src="http://robsmart.co.uk/files/wheels.jpg" height="376" width="564" /></p>
<p>So what you are seeing here is the result of softcam capturing my desktop video display output, streaming it up to veodia and then it being streamed into SecondLife. Infinite loop complete. (ps the quality is better when you don&#8217;t go for this wheels within wheels effect)</p>
<p>So whats this useful for ?</p>
<p>-video conferencing: pipe your webcam into SL without the need to host your own streaming server.<br />
- live demos:   do desktop sharing to a crowd in SL so you can do demonstrations from other apps (shared browsing or 3d app tutorials anyone?), simutaneously visible on the web stream too.<br />
- world tours: get all your guests into one place with a screen in SL and then disapear off streaming your secondlife journey back to the assembled SL crowd.<br />
- video link parts of SL: running a live event over several islands ? then provide video linkups between each of the islands so everyone can see what&#8217;s going on.</p>
<p>best of all veodia which is in beta is currently free, oh and it records too <img src='http://robsmart.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2007/06/27/free-video-streaming-into-second-life/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>WindLight atmospheric rendering in SL</title>
		<link>http://robsmart.co.uk/2007/05/22/windlight-atmospheric-rendering/</link>
		<comments>http://robsmart.co.uk/2007/05/22/windlight-atmospheric-rendering/#comments</comments>
		<pubDate>Tue, 22 May 2007 12:37:31 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/2007/05/22/windlight-atmospheric-rendering/</guid>
		<description><![CDATA[ooo check out the pretty sunsets coming our way soon in Second Life&#8230; The interesting part is that Linden purchased Windmark, they must be feeling a bit more comfortable of late financially which is a good thing. I have to say purchasing existing technologies to improve SL is a good tactic, the existing Linden developers [...]]]></description>
			<content:encoded><![CDATA[<p>ooo check out the pretty sunsets coming our way soon in Second Life&#8230;</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/h4BMmq4dono"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/h4BMmq4dono" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<p></object>The interesting part is that Linden purchased Windmark, they must be feeling a bit more comfortable of late financially which is a good thing. I have to say purchasing existing technologies to improve SL is a good tactic, the existing Linden developers would be hard pressed to put in the time required to develop these features from scratch.</p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2007/05/22/windlight-atmospheric-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real World to Virtual World device communications</title>
		<link>http://robsmart.co.uk/2007/05/21/real-world-to-virtual-world-device-communications/</link>
		<comments>http://robsmart.co.uk/2007/05/21/real-world-to-virtual-world-device-communications/#comments</comments>
		<pubDate>Mon, 21 May 2007 09:12:37 +0000</pubDate>
		<dc:creator>Rob Smart</dc:creator>
				<category><![CDATA[]]></category>
		<category><![CDATA[pervasive]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/2007/05/21/real-world-to-virtual-world-device-communications/</guid>
		<description><![CDATA[The ever inventive and productive Dave CJ from our emerging tech department at work has been hooking up more of his demonstration lab to SecondLife. Tracking the state of everyday objects and visualizing their state in world allows for remote control of devices and a quick way to check up status of a remote site/home [...]]]></description>
			<content:encoded><![CDATA[<p>The ever inventive and productive Dave CJ from our emerging tech department at work has been hooking up more of his demonstration lab to SecondLife. Tracking the state of everyday objects and visualizing their state in world allows for remote control of devices and a quick way to check up status of a remote site/home or factory type installation. There&#8217;s a nice detailed write up over on <a href="http://www.ugotrade.com/2007/05/18/metaverse-bridges-via-a-mobile-phone-results-of-a-chat-with-a-realvirtual-inventor/">UgoTrade</a>..</p>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2007/05/21/real-world-to-virtual-world-device-communications/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

