<?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>HiperGalaxia &#187; opensimulator</title>
	<atom:link href="http://www.hipergalaxia.org/blog/tag/opensimulator/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hipergalaxia.org/blog</link>
	<description>El conocimiento, la frontera final.</description>
	<lastBuildDate>Thu, 09 Feb 2012 07:23:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Instalacion de OpenSimulator en Ubuntu 10.04</title>
		<link>http://www.marlonj.com/blog/2010/05/instalacion-de-opensimulator-en-ubuntu-10-04/</link>
		<comments>http://www.marlonj.com/blog/2010/05/instalacion-de-opensimulator-en-ubuntu-10-04/#comments</comments>
		<pubDate>Wed, 12 May 2010 19:33:16 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[instalacion]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu1004]]></category>
		<category><![CDATA[visor]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=2092</guid>
		<description><![CDATA[Una vez mas me dispongo a utilizar OpenSimulator para crear un mundo virtual, en este caso para el programa Ingenio de la Universidad Autonoma de Manizales que permite a los estudiantes de ultimo año de los colegios hacer parte de una experiencia educativa en la Universidad y que este año en el área de sistemas [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="size-full wp-image-318 alignleft" style="margin: 5px;" title="OpenSimulator" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_logo.png" alt="" width="200" height="43" />Una vez mas me dispongo a utilizar OpenSimulator para crear un mundo virtual, en este caso para el programa Ingenio de la Universidad Autonoma de Manizales que permite a los estudiantes de ultimo año de los colegios hacer parte de una experiencia educativa en la Universidad y que este año en el área de sistemas hemos utilizado OpenSimulator para la creación de la isla Ingenio y cada grupo de estudiantes tiene su terreno para crear lo que gusten.</p>
<p style="text-align: center;">
<div id="attachment_2097" class="wp-caption aligncenter" style="width: 557px"><a href="http://www.marlonj.com/blog/wp-content/uploads/2010/05/opensimulator_secondlife_viewer_v2.png" rel="lightbox[2092]"><img class="size-full wp-image-2097 " title="opensimulator_secondlife_viewer_v2" src="http://www.marlonj.com/blog/wp-content/uploads/2010/05/opensimulator_secondlife_viewer_v2.png" alt="" width="547" height="390" /></a><p class="wp-caption-text">SecondLIfe Viewer 2 y OpenSimulator 0.6.9 rc2</p></div>
</p><p style="text-align: justify;">En esta ocasión instalaremos el OpenSimulator en un Ubuntu Desktop 10.04 y lo conectaremos al visor oficial de Second Life en su version 2, especificamente la version 2.0.1.203797.</p>
<p style="text-align: justify;">La versión 0.6.8 de OpenSimulator lanza una excepción al ejecutarse sobre la distribución actual de Ubuntu 10.04 Desktop por tal motivo utilizaremos la versión 0.6.9 rc que esta en desarrollo.</p>
<p style="text-align: justify;"><strong>Preparativos : </strong></p>
<ul>
<li>Abrir una consola</li>
<li>Instalar paquetes adicionales de Mono que no vienen con la instalación por defecto de Ubuntu<br />
sudo apt-get install libmono-microsoft8.0-cil</li>
</ul>
<p style="text-align: justify;"><strong>Instalacion OpenSimulator : </strong></p>
<ul>
<li>Abrir un navegador, ir a la pagina de descargas :<br />
<a title="OpenSimulator Download" href="http://opensimulator.org/wiki/Download" >http://opensimulator.org/wiki/Download</a></li>
<li>Descargar o copiar la URL del paquete Binario<br />
en este caso encontramos que la versión mas reciente es la 0.6.8</li>
<li>Abrir una consola</li>
<li>Descargar el paquete<br />
wget http://dist.opensimulator.org/opensim-0.6.8-binaries.zip</li>
<li>Expandir el paquete<br />
unzip opensim-0.6.8-binaries.zip</li>
<li>Cambiar al directorio<br />
cd opensim-0.6.8-binaries/bin</li>
<li>Ejecutar el servidor para crear una nueva Region<br />
./OpenSim.exe</li>
</ul>
<p><strong>Crear la Nueva Región : </strong></p>
<p>En este caso crearemos una Region llamada Ingenio, con un avatar maestro llamado Master Ingenio y de clave abcde :<strong><br />
</strong></p>
<ul>
<li>Al ejecutar el OpenSimulator este solicita la información del la Region, ejemplo :New region name []: Ingenio<br />
Region UUID [aba75aca-58f6-47b4-a860-95396ea2c236]:<br />
Region Location [1000,1000]:<br />
Internal IP address [0.0.0.0]:<br />
Internal port [9000]:<br />
Allow alternate ports [False]:<br />
External host name [SYSTEMIP]:<br />
Master Avatar UUID [00000000-0000-0000-0000-000000000000]:<br />
Master Avatar first name (enter for no master avatar) []: Master<br />
Master Avatar last name []: Ingenio<br />
Master Avatar sandbox password []: abcde</li>
<li>Al terminar la instalacion debe aparecer el prompt de la region :<br />
Region (Ingenio) #</li>
</ul>
<p><strong>Instalar Visor Oficial de Second Life : </strong></p>
<ul>
<li>Ir a la pagina de descargas de Second Life y descargar el visor mas actual :
<p>http://secondlife.com/support/downloads/?lang=en-US</p></li>
<li>O descargar el visor, abriendo una terminal</li>
<li>Ejecutar el comando para descargar el visor<br />
wget http://download.cloud.secondlife.com/Viewer-2/SecondLife-i686-2.0.1.203797.tar.bz2</li>
<li>Expandir el archivo BZip2 :<br />
bunzip2 SecondLife-i686-2.0.1.203797.tar.bz2</li>
<li>Extraer el contenido :<br />
tar -xvf SecondLife-i686-2.0.1.203797.tar</li>
<li>Cambiar al directorio del visor<br />
cd SecondLife-i686-2.0.1.203797</li>
<li>Ejecutar el visor<br />
./secondlife -loginuri http://&lt;IpServidor&gt;:9000/ -loginpage  http://&lt;IpServer&gt;:9000/?method=login</li>
</ul>
<p><strong>Problemas : </strong></p>
<ul>
<li>El avatar aparece como una nube cuando se utiliza el visor oficial de Second Life version 2</li>
</ul>
<p><strong>Enlaces : </strong></p>
<ul>
<li>Pagina Oficial de OpenSimulator<br />
<a title="OpenSimulator" href="http://www.opensimulator.org" >http://www.opensimulator.org</a></li>
<li>Pagina Oficial Visor Second Life<br />
<a title="Visor Oficial Second Life" href="http://secondlife.com/support/downloads" >http://secondlife.com/support/downloads</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2010/05/instalacion-de-opensimulator-en-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSimulator 0.6.8 no instala en Ubuntu 10.04</title>
		<link>http://www.marlonj.com/blog/2010/05/opensimulator-0-6-8-no-instala-en-ubuntu-10-04/</link>
		<comments>http://www.marlonj.com/blog/2010/05/opensimulator-0-6-8-no-instala-en-ubuntu-10-04/#comments</comments>
		<pubDate>Wed, 12 May 2010 04:13:24 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[instalacion]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[sqllite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu1004]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=2093</guid>
		<description><![CDATA[Al tratar de instalar la versión 0.6.8 de OpenSimulator en Ubuntu Desktop 10.04 este lanza la siguiente excepción : 23:04:03 - [APPLICATION]: APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs Exception: System.Exception: There was a SQL error or connection string configuration error when saving the region settings. Esto al parecer sucede debido a la versión del SQLLite que no [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-2094" style="margin: 5px;" title="Opensimulator_logo200x160" src="http://www.marlonj.com/blog/wp-content/uploads/2010/05/Opensimulator_logo200x160.png" alt="" width="160" height="132" />Al tratar de instalar la versión 0.6.8 de OpenSimulator en Ubuntu Desktop 10.04 este lanza la siguiente excepción :</p>
<pre>23:04:03 - [APPLICATION]:
APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs</pre>
<pre>Exception: System.Exception: There was a SQL error or connection string configuration error when saving the region settings.</pre>
<p style="text-align: justify;">Esto al parecer sucede debido a la versión del SQLLite que no permite conectar a la base de datos, una forma de evitar el problema es utilizar otra base de datos como MySQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2010/05/opensimulator-0-6-8-no-instala-en-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cliente XML-RPC en Mono para OpenSimulator</title>
		<link>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/</link>
		<comments>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 16:12:09 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=1256</guid>
		<description><![CDATA[Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación.
Crear Script para Recibir Datos : 

Abrir nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación.</p>
<p><strong>Crear Script para Recibir Datos : </strong></p>
<ul>
<li>Abrir nuestro visor favorito y entrar al servidor de OpenSimulator o SecondLife</li>
<li>Crear un objeto</li>
<li>Adicionar un Script</li>
<li>Abrir el script</li>
<li>Colocar el siguiente codigo :
<pre class="java"><span>default</span> <span>{</span>
   state_entry<span>(</span><span>)</span>
   <span>{</span>
      llOpenRemoteDataChannel<span>(</span><span>)</span>;
   <span>}</span>

   remote_data<span>(</span>integer type, key channel, key message_id, string sender, integer ival, string sval<span>)</span> <span>{</span>
      <span>if</span><span>(</span>type == REMOTE_DATA_CHANNEL<span>)</span> <span>{</span>
         llOwnerSay<span>(</span><span>"Canal : "</span> + <span>(</span>string<span>)</span> channel + <span>""</span><span>)</span>;
      <span>}</span>
      <span>else</span> <span>if</span><span>(</span>type == REMOTE_DATA_REQUEST<span>)</span> <span>{</span>
         llRemoteDataReply<span>(</span>channel,NULL_KEY,<span>"Exito"</span>,<span>1221</span><span>)</span>;
         llOwnerSay<span>(</span><span>"Cadena : "</span> + sval + <span>"nNumero: "</span> + <span>(</span>string<span>)</span> ival<span>)</span>;
      <span>}</span>
      <span>else</span> <span>{</span>
         llOwnerSay<span>(</span><span>"Error"</span><span>)</span>;
      <span>}</span>
   <span>}</span>
<span>}</span></pre>
</li>
<li>Guardar</li>
<li>En este momento el servidor debe compilar el script y muestra en el chat :<br />
[11:54]  Compile successful<br />
[11:54]  Primitive: Canal : 61b5e9ca-9378-4254-af36-d78d6ed839de</li>
<li>La cadena : 61b5e9ca-9378-4254-af36-d78d6ed839de es el identificador del canal por el cual escucha el prim, es diferente para cada prim</li>
</ul>
<p>Enviar Datos con C# :</p>
<p>Se utilizara la libreria XmlRpcCS para realizar la comunicación entre la aplicación y el objeto en OpenSimulator o SecondLife.</p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para el cliente<br />
mkdir clientxmlrpc</li>
<li>Cambiar al directorio<br />
cd clientxmlrpc</li>
<li>Copiar la libreria al directorio actual<br />
cp ../XmlRpcCS/XmlRpcCS.dll .</li>
<li>Crear un archivo Client.cs y adicionamos el siguiente codigo :
<pre class="csharp"><span>using</span> <span>System</span>.<span>Collections</span>;
<span>using</span> Nwc.<span>XmlRpc</span>;
&nbsp;
<span>public</span> <span>class</span> Client <span>&#123;</span>
        <span>public</span> <span>static</span> <span>void</span> Main<span>&#40;</span><span>&#41;</span> <span>&#123;</span>
                <span>// Informacion del Servidor de Second Life</span>
                <span>// Canal por donde escucha el cliente</span>
                <span>string</span> server = <span>&quot;http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi&quot;</span>;
                <span>string</span> channel = <span>&quot;eafc58de-5d8a-364e-d6d8-4c4cab0129f4&quot;</span>;
&nbsp;
                <span>// Parametros</span>
                Hashtable args = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> Hashtable<span>&#40;</span><span>&#41;</span>;
                args.<span>Add</span><span>&#40;</span><span>&quot;Channel&quot;</span>,channel<span>&#41;</span>;
                args.<span>Add</span><span>&#40;</span><span>&quot;IntValue&quot;</span>,<span>12345</span><span>&#41;</span>;
                args.<span>Add</span><span>&#40;</span><span>&quot;StringValue&quot;</span>,<span>&quot;Hello World!&quot;</span><span>&#41;</span>; 
&nbsp;
                <span>// Cliente XMLRPC</span>
                XmlRpcRequest request = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> XmlRpcRequest<span>&#40;</span><span>&#41;</span>;
                request.<span>MethodName</span> = <span>&quot;llRemoteData&quot;</span>;
                request.<span>Params</span>.<span>Add</span><span>&#40;</span>args<span>&#41;</span>;
&nbsp;
                <span>// Invocacion y Resultado</span>
                Hashtable ret = <span>&#40;</span>Hashtable<span>&#41;</span> request.<span>Invoke</span><span>&#40;</span>server<span>&#41;</span>;
                <span>System</span>.<span>Console</span>.<span>WriteLine</span><span>&#40;</span>ret<span>&#91;</span><span>&quot;StringValue&quot;</span><span>&#93;</span><span>&#41;</span>;
                <span>System</span>.<span>Console</span>.<span>WriteLine</span><span>&#40;</span>ret<span>&#91;</span><span>&quot;IntValue&quot;</span><span>&#93;</span><span>&#41;</span>;
        <span>&#125;</span>
<span>&#125;</span></pre>
</li>
<li>Compilamos el codigo :<br />
gmcs -lib:. -r:XmlRpcCS.dll Client.cs</li>
<li>Ejecutamos<br />
mono Client.exe</li>
<li>Debe mostrar en pantalla los valores enviados por el objeto<br />
Exito<br />
1221</li>
<li>Mienstras tanto en OpenSimulator debe aparecer en el chat la informacion enviada<br />
Hello World!!! 12345</li>
</ul>
<p>Para usar el mismo codigo con OpenSimulator la cadena server debe tener la direccion de nuestro servidor : http://&lt;ipServidor&gt;:&lt;puerto&gt;/cgi-bin/xmlrpc.cgi</p>
<p>Enlaces :</p>
<ul>
<li>LSL XML-RPC en OpenSimulator<br />
<a title="LSL XML-RPC en OpenSimulator" href="http://www.marlonj.com/blog/2008/12/lsl-xml-rpc-en-opensimulator" >http://www.marlonj.com/blog/2008/12/lsl-xml-rpc-en-opensimulator</a></li>
<li>XML-RPC<br />
<a title="XML-RPC" href="http://www.xmlrpc.com/" >http://www.xmlrpc.com</a></li>
<li>LSL XML-RPC en Second Life<br />
<a title="LSL XML-RPC en Second Life" href="http://wiki.secondlife.com/wiki/Category:LSL_XML-RPC" >http://wiki.secondlife.com/wiki/Category:LSL_XML-RPC</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libreria XML-RPC para Mono</title>
		<link>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/</link>
		<comments>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 15:28:53 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libreria]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=1253</guid>
		<description><![CDATA[Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias :

Microsoft .NET: client/server (Charles Cook)
http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml
Microsoft .NET: client/server (Nicholas Christopher)
http://sourceforge.net/projects/xmlrpccs

Utilizaremos la libreria XmlRpcCS, la cual es utilizada por el [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias :</p>
<ul>
<li>Microsoft .NET: client/server (Charles Cook)<br />
<a title="CS XMLRPC" href="http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml" >http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml</a></li>
<li>Microsoft .NET: client/server (Nicholas Christopher)<br />
<a title="CS XMLRPC" href="http://sourceforge.net/projects/xmlrpccs" >http://sourceforge.net/projects/xmlrpccs</a></li>
</ul>
<p>Utilizaremos la libreria XmlRpcCS, la cual es utilizada por el proyecto OpenSimulator para implementar el servicio de XMLRPC que permite realizar llamados remotos a objetos en este mundo virtual.</p>
<p>Requerimientos :</p>
<ul>
<li>Debemos instalar lo paquetes para compilar la libreria<br />
sudo apt-get install nant mono-2.0-devel libmono-winforms2.0-cil mono-1.0-devel</li>
</ul>
<p>Construcción de la Libreria :</p>
<ul>
<li>Abrir una consola</li>
<li>Descargar la ultima versión de la libreria<br />
<a title="XmlRpcCS" href="http://sourceforge.net/project/platformdownload.php?group_id=123702" >http://sourceforge.net/project/platformdownload.php?group_id=123702</a></li>
<li>Por ejemplo la versión 1.10<br />
wget http://ufpr.dl.sourceforge.net/sourceforge/xmlrpccs/XmlRpcCS-1.10.zip</li>
<li>Descomprimir el archivo<br />
unzip XmlRpcCS-1.10.zip</li>
<li>Cambiar al directorio de la libreria<br />
cd XmlRpcCS</li>
<li>Compilar la libreria<br />
nant</li>
<li>El archivo XmlRpcCS.dll es creado</li>
</ul>
<p>Enlaces :</p>
<ul>
<li>XML-RPC<br />
<a title="XML-RPC" href="http://www.xmlrpc.com" >http://www.xmlrpc.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mp4live, DSS y OpenSimulator</title>
		<link>http://www.marlonj.com/blog/2009/02/mp4live-dss-y-opensimulator/</link>
		<comments>http://www.marlonj.com/blog/2009/02/mp4live-dss-y-opensimulator/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 05:00:22 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[dss]]></category>
		<category><![CDATA[mp4live]]></category>
		<category><![CDATA[mundosvirtuales]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=1217</guid>
		<description><![CDATA[
Continuando con las pruebas de transmisión de vídeo en vivo desde una cámara web, utilizando mp4live para la transmisión, ahora el turno es para la combinación con Darwing Streaming Server que permite crear urls basados en RTSP para el acceso al vídeo, el cual puede ser accedido por medio de muchos reproductores y como casos [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.marlonj.com/blog/wp-content/uploads/2009/02/mp4live_rtsp.png"><img class="size-full wp-image-1220 aligncenter" title="mp4live_rtsp" src="http://www.marlonj.com/blog/wp-content/uploads/2009/02/mp4live_rtsp.png" alt="mp4live_rtsp" width="354" height="381" /></a></p>
<p>Continuando con las pruebas de transmisión de vídeo en vivo desde una cámara web, utilizando mp4live para la transmisión, ahora el turno es para la combinación con Darwing Streaming Server que permite crear urls basados en RTSP para el acceso al vídeo, el cual puede ser accedido por medio de muchos reproductores y como casos especiales los cuales me interesan Second Life y clientes Java en teléfonos móviles.</p>
<p>Pasos :</p>
<ul>
<li>Instalar el DSS<br />
<a title="Instalacion DSS" href="http://www.marlonj.com/blog/2008/12/darwin-streaming-server-en-ubuntu-810" >http://www.marlonj.com/blog/2008/12/darwin-streaming-server-en-ubuntu-810</a></li>
<li>Iniciar transmisión de video<br />
<a title="Transmision con mp4live" href="http://www.marlonj.com/blog/2009/02/mp4live-transmision-de-video-en-ubuntu-810" >http://www.marlonj.com/blog/2009/02/mp4live-transmision-de-video-en-ubuntu-810</a></li>
<li>Copiar el archivo descriptor al directorio de vídeos del DSS<br />
cp default.sdp /usr/local/movies</li>
<li>Reproducir utilizando vlc<br />
vlc rtsp://&lt;ipServidor&gt;/default.sdp</li>
</ul>
<p>Ahora podemos acceder a través del url rtsp://&lt;ipServidor&gt;/default.sdp el cual puede ser utilizado en teléfonos móviles, Second Life o OpenSimulator para acceder al vídeo en vivo.</p>
<p><a href="http://www.marlonj.com/blog/wp-content/uploads/2009/02/mp4live_secondlife.png"><img class="aligncenter size-full wp-image-1224" title="mp4live_secondlife" src="http://www.marlonj.com/blog/wp-content/uploads/2009/02/mp4live_secondlife.png" alt="mp4live_secondlife" width="500" height="329" /></a></p>
<p>Visualizar vídeo con OpenSimulator :</p>
<ul>
<li>Ver<br />
<a title="DSS y OpenSimulator" href="http://www.marlonj.com/blog/2008/12/darwin-streaming-server-y-opensimulator" >http://www.marlonj.com/blog/2008/12/darwin-streaming-server-y-opensimulator</a></li>
<li>Utilizar el URL del video en vivo<br />
rtsp://&lt;ipServidor&gt;/default.sdp</li>
</ul>
<p>Enlaces :</p>
<ul>
<li>Darwin Streaming Server<br />
<a title="Darwing Streaming Server" href="http://dss.macosforge.org/" >http://dss.macosforge.org</a></li>
<li>VLC<br />
<a title="VLC" href="http://www.videoland.org" ><span class="url">http://www.videoland.org</span></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/02/mp4live-dss-y-opensimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSimulator con MySQL</title>
		<link>http://www.marlonj.com/blog/2008/12/opensimulator-con-mysql/</link>
		<comments>http://www.marlonj.com/blog/2008/12/opensimulator-con-mysql/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 05:44:52 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=633</guid>
		<description><![CDATA[Hasta el momento he utilizado el OpenSimulator con SQLite que ejecuta el motor directamente con el simulador y no tenemos que crear bases de datos para almacenar la informacion pero algunas veces los datos son muchos o se quieren tener en una base de datos externa como MySQL, a continuacion haremos los cambios necesarios para [...]]]></description>
			<content:encoded><![CDATA[<p>Hasta el momento he utilizado el OpenSimulator con SQLite que ejecuta el motor directamente con el simulador y no tenemos que crear bases de datos para almacenar la informacion pero algunas veces los datos son muchos o se quieren tener en una base de datos externa como MySQL, a continuacion haremos los cambios necesarios para alojar los assets y el inventario :</p>
<p><strong>Requerimientos : </strong>(ver antiguas entradas)</p>
<ul>
<li>Instalar el OpenSimulator</li>
<li>Instalar MySQL</li>
</ul>
<p><strong>Configuracion :</strong></p>
<ul>
<li>Abrir una terminar y abrir el directorio donde esta el opensimulator instalado :<br />
cd opensim</li>
<li>Editar el archivo de configuracion<br />
vi bin/OpenSim.ini</li>
<li>Cambiar las siguientes propiedades a los valores dados :<br />
storage_plugin = OpenSim.Data.MySQL.dll<br />
storage_connection_string = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"<br />
asset_database = local<br />
inventory_plugin = OpenSim.Data.MySQL.dll<br />
inventory_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"<br />
userDatabase_plugin = OpenSim.Data.MySQL.dll<br />
user_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"<br />
asset_plugin = OpenSim.Data.MySQL.dll<br />
asset_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"</li>
<li>Abrir el cliente de mysql :<br />
mysql -u root -p mysql</li>
<li>Ejecutar el siguiente sql (modifique las claves)<br />
CREATE USER 'opensim'@'%' IDENTIFIED BY 'opensim';<br />
GRANT USAGE ON *.* TO 'opensim'@'%' IDENTIFIED BY 'opensim';<br />
CREATE DATABASE IF NOT EXISTS `opensim`;<br />
GRANT ALL PRIVILEGES ON `opensim`.* TO 'opensim'@'%';</li>
<li>Cambiar al directorio bin del opensimulator<br />
cd bin</li>
<li>Ejecutar el OpenSim :<br />
./OpenSim.exe</li>
<li>El OpenSimulator se encarga de crear las tablas e iniciarlizar sus datos</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/opensimulator-con-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeras Impresiones ScienceSim</title>
		<link>http://www.marlonj.com/blog/2008/12/primeras-impresiones-sciencesim/</link>
		<comments>http://www.marlonj.com/blog/2008/12/primeras-impresiones-sciencesim/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 23:02:29 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[mundosvirtuales]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[sciencesim]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=617</guid>
		<description><![CDATA[
Despues de conocer que Intel estaba creando un mundo virtual llamado ScienceSim basado en OpenSimulator, ni corto ni perezoso trate de bajar e instalar sus servidores pero todavia no estan disponibles al publico en general, entonces opte por solicitar una cuenta para echarle un vistazo y mirar en que estan trabajando. Hoy me llego un [...]]]></description>
			<content:encoded><![CDATA[<p><a title="ScienceSim by m4rlonj, on Flickr" href="http://www.flickr.com/photos/m4rlonj/3116986190/"><img class="aligncenter" src="http://farm4.static.flickr.com/3275/3116986190_39ed9d75d0.jpg" alt="ScienceSim" width="500" height="313" /></a></p>
<p>Despues de conocer que Intel estaba creando un mundo virtual llamado ScienceSim basado en OpenSimulator, ni corto ni perezoso trate de bajar e instalar sus servidores pero todavia no estan disponibles al publico en general, entonces opte por solicitar una cuenta para echarle un vistazo y mirar en que estan trabajando. Hoy me llego un correo con mi usuario y utilizando HippoViewer entre a pasear un rato.</p>
<p>Comence entonces entrando a la pagina web del simulador la cual esta desarrollada en PHP que permite solicitar una cuenta, actualizar los datos de la cuenta, visualizar las ultimas noticias, listado de regiones, estado de las regiones y mapas de estas. En el wiki encontre como acceder a las regiones utilizando el HippoViewer que hace poco descargue.</p>
<p><object width="400" height="300" data="http://www.flickr.com/apps/slideshow/show.swf?v=63961" type="application/x-shockwave-flash"><param name="flashvars" value="&amp;offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fm4rlonj%2Fsets%2F72157611298652363%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fm4rlonj%2Fsets%2F72157611298652363%2F&amp;set_id=72157611298652363&amp;jump_to=" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/slideshow/show.swf?v=63961" /><param name="allowfullscreen" value="true" /></object></p>
<p>Lo primero que hice al llegar a las islas fue personalizar mi avatar (para luego darme cuenta que una seccion de bienvenida existen avatars gratis), luego me fui por los diferentes sitios donde encontre una zona de bienvenida donde existen imagenes con datos acerca de como moverse, usar la camara, modificar la apariencia y demas, en otro lugar hay edificios administrativos y al parecer algunas oficinas, tambien encontre un edificio como un observatorio y debajo del agua una cupula transparente a la cual no pude entrar. Tambien a los lados de un puente encontre unas pantallas donde se pueden observar varios tutoriales de Torley acerca de Second Life.</p>
<p>Las islas estan en construccion pero ya tengo mi usuario.</p>
<p><strong>Enlaces : </strong></p>
<ul>
<li>Pagina Oficial de ScienceSim<br />
<a title="ScienceSim" href="http://sciencesim.com/" >http://sciencesim.com</a></li>
<li>Pagina del Simulador<br />
<a title="Sience Sim" href="http://sciencesim.com/scisim" >http://sciencesim.com/scisim</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/primeras-impresiones-sciencesim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bajando Texturas de OpenSimulator</title>
		<link>http://www.marlonj.com/blog/2008/12/bajando-texturas-de-opensimulator/</link>
		<comments>http://www.marlonj.com/blog/2008/12/bajando-texturas-de-opensimulator/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 03:15:06 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libopenmetaverse]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=547</guid>
		<description><![CDATA[Esta vez necesito descargar una textura desde el servidor del OpenSimulator para realizar backups y otras tareas, para esto de nuevo utilizaremos LibOpenMetaverse, Mono con el lenguaje C#
En este caso necesitaremos el UUID de la imagen que vamos a descargar, para esto vamos a utilizar el cliente de SecondLife entrar a nuestro mundo, pulsar el [...]]]></description>
			<content:encoded><![CDATA[<p>Esta vez necesito descargar una textura desde el servidor del OpenSimulator para realizar backups y otras tareas, para esto de nuevo utilizaremos LibOpenMetaverse, Mono con el lenguaje C#</p>
<p>En este caso necesitaremos el UUID de la imagen que vamos a descargar, para esto vamos a utilizar el cliente de SecondLife entrar a nuestro mundo, pulsar el boton del inventario, abrir el directorio de texturas, click derecho sobre la imagen a descargar y Copiar el AssetUUID</p>
<p><img class="aligncenter size-full wp-image-548" title="OpenSim Textura" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_textura.png" alt="OpenSim Textura" width="499" height="307" /></p>
<p>El identificador es una cadena alfanumerica que utilizaremos para solicitar la imagen,  ejemplo :  12C00245-3432-4E1E-91E7-C2FD5C104E31</p>
<p><strong>Escribir el Programa :</strong></p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para nuestro programa<br />
mkdir TextureDownloader<br />
cd TextureDownloader</li>
<li>Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll.config .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.StructuredData.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/log4net.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/openjpeg-dotnet.dll .<br />
wget http://opensimulator.org/svn/opensim/trunk/bin/libopenjpeg-dotnet-2.1.3.0-dotnet-1.so</li>
<li>Crear el programa en C#<br />
vi TextureDownloader.cs
<pre class="csharp"><span>using</span> <span>System</span>;
<span>using</span> <span>System</span>.<span>IO</span>;
<span>using</span> <span>System</span>.<span>Threading</span>;
<span>using</span> OpenMetaverse;
&nbsp;
<span>public</span> <span>class</span> ImageDownloader <span>&#123;</span>
        <span>public</span> <span>static</span> <span>void</span> Main<span>&#40;</span><span>string</span><span>&#91;</span><span>&#93;</span> args<span>&#41;</span> <span>&#123;</span>
&nbsp;
                <span>// Realizar el login</span>
                GridClient client = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> GridClient<span>&#40;</span><span>&#41;</span>;
                LoginParams loginParams = client.<span>Network</span>.<span>DefaultLoginParams</span><span>&#40;</span>
                        <span>&quot;Juan&quot;</span>,<span>&quot;Perez&quot;</span>,<span>&quot;1234&quot;</span>,<span>&quot;TextureDownloader&quot;</span>,<span>&quot;0.1&quot;</span><span>&#41;</span>;
                loginParams.<span>URI</span> = <span>&quot;http://192.168.1.3:9000&quot;</span>;
                <span>if</span><span>&#40;</span>!client.<span>Network</span>.<span>Login</span><span>&#40;</span>loginParams<span>&#41;</span><span>&#41;</span> <span>&#123;</span>
                        Console.<span>WriteLine</span><span>&#40;</span>client.<span>Network</span>.<span>LoginMessage</span><span>&#41;</span>;
                        <span>return</span>;
                <span>&#125;</span>
&nbsp;
                <span>// Evento a esperar la descarga</span>
                AutoResetEvent downloadEvent = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> AutoResetEvent<span>&#40;</span><span>false</span><span>&#41;</span>;
&nbsp;
                <span>// Identificador de la textura a descargar</span>
                UUID textureID = UUID.<span>Parse</span><span>&#40;</span><span>&quot;12C00245-3432-4E1E-91E7-C2FD5C104E31&quot;</span><span>&#41;</span>;
&nbsp;
                <span>// Evento de descarga de la imagen</span>
                client.<span>Assets</span>.<span>OnImageReceived</span> += <span>delegate</span><span>&#40;</span>ImageDownload image, AssetTexture asset<span>&#41;</span> <span>&#123;</span>
                        <span>// Si todo funciona bien, guarde como imagen jp2</span>
                        <span>if</span><span>&#40;</span>image != <span>null</span> &amp;amp;&amp;amp; image.<span>Success</span><span>&#41;</span>
                                <span>try</span> <span>&#123;</span>
                                        File.<span>WriteAllBytes</span><span>&#40;</span>image.<span>ID</span> + <span>&quot;.jp2&quot;</span>,asset.<span>AssetData</span><span>&#41;</span>;
                                <span>&#125;</span> <span>catch</span><span>&#40;</span>Exception e<span>&#41;</span> <span>&#123;</span>
                                        Console.<span>WriteLine</span><span>&#40;</span>e<span>&#41;</span>;
                                <span>&#125;</span>
                        <span>// Dispare el evento de descarga</span>
                        downloadEvent.<span>Set</span><span>&#40;</span><span>&#41;</span>;
                <span>&#125;</span>;
&nbsp;
                <span>// Solicite la descarga de la textura</span>
                client.<span>Assets</span>.<span>RequestImage</span><span>&#40;</span>textureID,ImageType.<span>Normal</span>,<span>1000000</span>.0f,<span>0</span>,<span>0</span><span>&#41;</span>;
&nbsp;
                <span>// Si nos cansamos de esperar notifique</span>
                <span>if</span><span>&#40;</span>!downloadEvent.<span>WaitOne</span><span>&#40;</span><span>120</span>*<span>1000</span>,<span>false</span><span>&#41;</span><span>&#41;</span>
                        Console.<span>WriteLine</span><span>&#40;</span><span>&quot;Time Out&quot;</span><span>&#41;</span>;
&nbsp;
                <span>// Salir</span>
                client.<span>Network</span>.<span>Logout</span><span>&#40;</span><span>&#41;</span>;
        <span>&#125;</span>
<span>&#125;</span></pre>
</li>
<li>Compilar el programa :<br />
gmcs -lib:. -r:System.Drawing,OpenMetaverse.dll,OpenMetaverseTypes.dll TextureDownloader.cs</li>
<li>Ejecutar el programa :<br />
mono TextureDownloader.exe</li>
</ul>
<p>Esto crea un archivo con el identificador de la imagen y formato JPEG 2000, para convertirla en png para manipularla con aplicaciones graficas debemos convertirla a otro formato como por ejemplo png, para esto debemos instalar el paquete imagemagick</p>
<ul>
<li>Instalar paquete<br />
sudo apt-get install imagemagick</li>
<li>Converti la imagen a png<br />
convert &lt;UUID&gt;.jp2 imagen.png</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/bajando-texturas-de-opensimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subiendo Texturas a OpenSimulator</title>
		<link>http://www.marlonj.com/blog/2008/12/subiendo-texturas-a-opensimulator/</link>
		<comments>http://www.marlonj.com/blog/2008/12/subiendo-texturas-a-opensimulator/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 07:05:36 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libopenmetaverse]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=459</guid>
		<description><![CDATA[
Una de las tareas que tengo que hacer es poder subir una serie de imagenes como textutras automaticamente a OpenSimulator, asi que me di a la tarea de buscar como hacerlo y hacer un pequeño programa que ilustre los pasos que se deben seguir.
Se deben tener algunas consideraciones antes de comenzar, la primera es con [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_uploadimage01.png"><img class="aligncenter size-full wp-image-461" title="OpenSim Upload Image" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_uploadimage01.png" alt="" width="500" height="363" /></a></p>
<p>Una de las tareas que tengo que hacer es poder subir una serie de imagenes como textutras automaticamente a OpenSimulator, asi que me di a la tarea de buscar como hacerlo y hacer un pequeño programa que ilustre los pasos que se deben seguir.</p>
<p>Se deben tener algunas consideraciones antes de comenzar, la primera es con respecto al tamaño de las imagenes, las cuales deben tener un tamaño divisible por dos y deben ser cuadradas o rectangulares respetando ciertas reglas en la relacion del ancho y el alto, tambien se debe tener encuenta que una imagen mayor a 1024 pixeles se considera muy grande y es dificil de cargar en el cliente, se recomiendan tamaños como 256x256, 512x512.</p>
<p>Para mayor informacion :<br />
<a title="SecondLife Sistema de Imagenes" href="http://wiki.secondlife.com/wiki/Image_System" >http://wiki.secondlife.com/wiki/Image_System</a><br />
<a title="Image Sizes for Second Life" href="http://www.taoofjay.com/?p=3" >Image Sizes for Second Life<br />
</a></p>
<p>Tambien debemos tener encuenta el formato de codificacion de la imagen, ya que el cliente utiliza imagenes JPEG-2000, si se tiene un editor de imagenes que genere este formato es ideal utilizarlo, pero la mayoria de las veces las imagenes a subir estan en formatos PNG,JPG entre otros, por lo que se debe convertir la imagen utilizando por ejemplo la libreria openjpeg.</p>
<p><span id="more-459"></span></p>
<div id="attachment_460" class="wp-caption aligncenter" ><a href="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_01.png"><img class="size-full wp-image-460" title="Imagen A Subir" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_01.png" alt="Imagen a Subir" width="350" height="350" /></a><p class="wp-caption-text">Imagen a Subir</p></div>
<p>La textura a utilizar como prueba tiene formato PNG y un tamaño de 512x512</p>
<p><strong>Escribir el Programa :</strong></p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para nuestro programa<br />
mkdir TextureUploader<br />
cd TextureUploader</li>
<li>Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll.config .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.StructuredData.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/log4net.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/openjpeg-dotnet.dll .</li>
<li>Crear el programa en C#<br />
vi TextureUploader.cs
<pre class="csharp"><span>using</span> <span>System</span>;
<span>using</span> <span>System</span>.<span>Drawing</span>;
<span>using</span> OpenMetaverse;
<span>using</span> OpenMetaverse.<span>Capabilities</span>;
<span>using</span> OpenMetaverse.<span>Imaging</span>;
&nbsp;
<span>public</span> <span>class</span> TexturaUploader <span>&#123;</span>
	<span>public</span> <span>static</span> <span>void</span> Main<span>&#40;</span><span>string</span><span>&#91;</span><span>&#93;</span> args<span>&#41;</span> <span>&#123;</span>
&nbsp;
		<span>// Realizar el login</span>
		GridClient client = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> GridClient<span>&#40;</span><span>&#41;</span>;
		LoginParams loginParams = client.<span>Network</span>.<span>DefaultLoginParams</span><span>&#40;</span>
			<span>&quot;Juan&quot;</span>,<span>&quot;Perez&quot;</span>,<span>&quot;1234&quot;</span>,<span>&quot;ImageUploader&quot;</span>,<span>&quot;0.1&quot;</span><span>&#41;</span>;
		loginParams.<span>URI</span> = <span>&quot;http://192.168.1.3:9000&quot;</span>;
		<span>if</span><span>&#40;</span>!client.<span>Network</span>.<span>Login</span><span>&#40;</span>loginParams<span>&#41;</span><span>&#41;</span> <span>&#123;</span>
			Console.<span>WriteLine</span><span>&#40;</span>client.<span>Network</span>.<span>LoginMessage</span><span>&#41;</span>;
			<span>return</span>;
		<span>&#125;</span>
&nbsp;
		<span>// Convertir imagen a JPEG-2000</span>
		Bitmap bitmap = <span>&#40;</span>Bitmap<span>&#41;</span> <span>System</span>.<span>Drawing</span>.<span>Image</span>.<span>FromFile</span><span>&#40;</span><span>&quot;OpenSIM_01.png&quot;</span><span>&#41;</span>;
		<span>byte</span><span>&#91;</span><span>&#93;</span> data  = OpenJPEG.<span>EncodeFromImage</span><span>&#40;</span>bitmap,<span>false</span><span>&#41;</span>;
&nbsp;
		<span>// Obtener el identificador del directorio de las texturas</span>
		UUID folderID = client.<span>Inventory</span>.<span>FindFolderForType</span><span>&#40;</span>AssetType.<span>Texture</span><span>&#41;</span>;
&nbsp;
		<span>// Crear un nuevo item con los datos de la imagen, en el directorio de texturas</span>
		client.<span>Inventory</span>.<span>RequestCreateItemFromAsset</span><span>&#40;</span>data,<span>&quot;image01&quot;</span>,<span>&quot;Image Upload&quot;</span>
			,AssetType.<span>Texture</span>,InventoryType.<span>Texture</span>,folderID
			,<span>delegate</span><span>&#40;</span>CapsClient capsClient, <span>long</span> bytesReceived,
				<span>long</span> bytesSent, <span>long</span> totalBytesToReceive, <span>long</span> totalBytesToSend<span>&#41;</span> <span>&#123;</span>
				<span>if</span><span>&#40;</span>bytesSent &amp;gt; <span>0</span><span>&#41;</span>
                                	Console.<span>WriteLine</span><span>&#40;</span><span>String</span>.<span>Format</span><span>&#40;</span><span>&quot;Texture upload: {0} / {1}&quot;</span>,
						bytesSent,totalBytesToSend<span>&#41;</span><span>&#41;</span>;
			<span>&#125;</span>
			,<span>delegate</span><span>&#40;</span><span>bool</span> success, <span>string</span> status, UUID itemID, UUID assetID<span>&#41;</span> <span>&#123;</span>
                        	Console.<span>WriteLine</span><span>&#40;</span><span>String</span>.<span>Format</span><span>&#40;</span>
                                	<span>&quot;RequestCreateItemFromAsset() returned: Success={0}, Status={1}, ItemID={2}, AssetID={3}&quot;</span>,
                                	success, status, itemID, assetID<span>&#41;</span><span>&#41;</span>;
			<span>&#125;</span>
		<span>&#41;</span>;
&nbsp;
		<span>// Salir</span>
		client.<span>Network</span>.<span>Logout</span><span>&#40;</span><span>&#41;</span>;
	<span>&#125;</span>
<span>&#125;</span></pre>
</li>
<li>Compilar el programa :<br />
gmcs -lib:. -r:System.Drawing,OpenMetaverse.dll,OpenMetaverseTypes.dll TextureUploader.cs</li>
<li>Ejecutar el programa :<br />
mono TextureUploader.exe</li>
</ul>
<p>Al momento de ejecutar el programa una excepcion fue lanzada :<br />
Unhandled Exception: System.DllNotFoundException: libopenjpeg-dotnet-2.1.3.0-dotnet-1</p>
<p>Se debe a que no tenemos la libreria de enlace entre openjpeg y .NET, la busque en la distribucion del la libreria pero no la encontre asi que la descargue de internet al directorio.</p>
<ul>
<li>wget http://opensimulator.org/svn/opensim/trunk/bin/libopenjpeg-dotnet-2.1.3.0-dotnet-1.so</li>
</ul>
<p>Ahora podemos ejecutar el programa otra vez :</p>
<pre>marlonj@blackbox:~/tmp/MyBot$ mono TextureUploader.exe
47 [1] INFO  - No log configuration found, defaulting to console logging
521 [2] INFO  - : Connecting to (192.168.1.3:9000)
673 [3] INFO  - : Received a region handshake for OpenSim Test (192.168.1.3:9000)
752 [4] WARN  - : Received a duplicate of packet #2, current type: ParcelOverlay
1229 [1] INFO  - : Logging out
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 1201 / 91313
RequestCreateItemFromAsset() returned: Success=True, Status=, ItemID=ecd6a5e5-24b9-415b-b57d-07a87c674c65, AssetID=226c7ea3-8f57-4a87-88af-960593dc1db0
6231 [1] INFO  - : NetworkManager shutdown initiated
6232 [1] INFO  - : Caps system for OpenSim Test (192.168.1.3:9000) is aborting</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/subiendo-texturas-a-opensimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creando el Primer Bot con LibOpenMetaverse</title>
		<link>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/</link>
		<comments>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 02:55:41 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libopenmetaverse]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=449</guid>
		<description><![CDATA[Despues de compilar la libreria de linopenmetaverse me dedique hacer el primer programa con la libreria, donde un avatar se autentique con el servidor y permanezca en el mundo un determinado tiempo y despues salga de este, esto con el fin de conocer el uso de la libreria y los pasos requeridos para compilar el [...]]]></description>
			<content:encoded><![CDATA[<p>Despues de compilar la libreria de linopenmetaverse me dedique hacer el primer programa con la libreria, donde un avatar se autentique con el servidor y permanezca en el mundo un determinado tiempo y despues salga de este, esto con el fin de conocer el uso de la libreria y los pasos requeridos para compilar el programa.</p>
<p>Al principio solo dejaba al avatar cinco segundos en el mundo, pero al tratar de entrar de nuevo el servidor me sacaba diciendo que el avatar ya estaba logueado, entonces probe con 60 segundos, 30 segundos, al final me quede con 15 segundos asegurando asi que el proceso de autenticacion y loqueo se cumpla totalmente, para luego proceder a cerrar la conexion.</p>
<p><a href="http://www.marlonj.com/blog/wp-content/uploads/2008/12/mybot01.png"><img class="aligncenter size-full wp-image-451" title="MyBot" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/mybot01.png" alt="" width="500" height="312" /></a></p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para nuestro programa<br />
mkdir MyBot<br />
cd MyBot</li>
<li>Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.StructuredData.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/log4net.dll .</li>
<li>Crear el programa en C#<br />
vi MyBot.cs
<pre class="csharp"><span>using</span> <span>System</span>;
<span>using</span> <span>System</span>.<span>Threading</span>;
<span>using</span> OpenMetaverse; <span>// Libreria de Acceso OpenSimulator</span>
&nbsp;
<span>public</span> <span>class</span> MyBot
<span>&#123;</span>
        <span>public</span> <span>static</span> <span>void</span> Main<span>&#40;</span><span>&#41;</span>
        <span>&#123;</span>
                <span>// Crear cliente</span>
                GridClient client = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span>new</span></a> GridClient<span>&#40;</span><span>&#41;</span>;
&nbsp;
                <span>// Informacion acerca del avatar y la aplicacion</span>
                LoginParams loginParams =
                         client.<span>Network</span>.<span>DefaultLoginParams</span><span>&#40;</span>
                                <span>&quot;Juan&quot;</span>,<span>&quot;Perez&quot;</span>,<span>&quot;1234&quot;</span>,<span>&quot;MyBot&quot;</span>,<span>&quot;0.1&quot;</span><span>&#41;</span>;
&nbsp;
                <span>// Colocamos la direccion de nuestro simulador</span>
                loginParams.<span>URI</span> = <span>&quot;http://192.168.1.3:9000/&quot;</span>;
&nbsp;
                <span>// Tratamos de entrar</span>
                <span>if</span><span>&#40;</span>client.<span>Network</span>.<span>Login</span><span>&#40;</span>loginParams<span>&#41;</span><span>&#41;</span>
                <span>&#123;</span>
                        <span>// Si entramos sacamos un mensaje,</span>
                        <span>// esperamos 15 segundos</span>
                        <span>// y salimos del mundo</span>
                        Console.<span>WriteLine</span><span>&#40;</span><span>&quot;Entrando ...&quot;</span><span>&#41;</span>;
                        Thread.<span>Sleep</span><span>&#40;</span><span>15000</span><span>&#41;</span>;
                        client.<span>Network</span>.<span>Logout</span><span>&#40;</span><span>&#41;</span>;
                <span>&#125;</span>
                <span>else</span>
                        <span>// Si no fue posible loguearse, mostrar error</span>
                        Console.<span>WriteLine</span><span>&#40;</span>client.<span>Network</span>.<span>LoginMessage</span><span>&#41;</span>;
        <span>&#125;</span>
<span>&#125;</span></pre>
</li>
<li>Compilar el programa :<br />
gmcs -lib:. -r:OpenMetaverse.dll MyBot.cs</li>
<li>Ejecutar el programa :<br />
mono MyBot.exe</li>
</ul>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="302" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=eacd546eb9&amp;photo_id=3090949407" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=63881" /><embed type="application/x-shockwave-flash" width="400" height="302" src="http://www.flickr.com/apps/video/stewart.swf?v=63881" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=eacd546eb9&amp;photo_id=3090949407"></embed></object></p>
<p>Para verificar que esto esta funcionando puede abrir el visor y entrar con un usuario a la zona inicial de la region, cuando ejecute el programa Juan Perez aparecera por unos momentos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

