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.
SecondLIfe Viewer 2 y OpenSimulator 0.6.9 rc2
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.
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.
Preparativos :
Abrir una consola
Instalar paquetes adicionales de Mono que no vienen con la instalación por defecto de Ubuntu
sudo apt-get install libmono-microsoft8.0-cil
Descargar o copiar la URL del paquete Binario
en este caso encontramos que la versión mas reciente es la 0.6.8
Abrir una consola
Descargar el paquete
wget http://dist.opensimulator.org/opensim-0.6.8-binaries.zip
Expandir el paquete
unzip opensim-0.6.8-binaries.zip
Cambiar al directorio
cd opensim-0.6.8-binaries/bin
Ejecutar el servidor para crear una nueva Region
./OpenSim.exe
Crear la Nueva Región :
En este caso crearemos una Region llamada Ingenio, con un avatar maestro llamado Master Ingenio y de clave abcde :
Al ejecutar el OpenSimulator este solicita la información del la Region, ejemplo :New region name []: Ingenio
Region UUID [aba75aca-58f6-47b4-a860-95396ea2c236]:
Region Location [1000,1000]:
Internal IP address [0.0.0.0]:
Internal port [9000]:
Allow alternate ports [False]:
External host name [SYSTEMIP]:
Master Avatar UUID [00000000-0000-0000-0000-000000000000]:
Master Avatar first name (enter for no master avatar) []: Master
Master Avatar last name []: Ingenio
Master Avatar sandbox password []: abcde
Al terminar la instalacion debe aparecer el prompt de la region :
Region (Ingenio) #
Instalar Visor Oficial de Second Life :
Ir a la pagina de descargas de Second Life y descargar el visor mas actual :
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 visor favorito y entrar al servidor de OpenSimulator o SecondLife
En este momento el servidor debe compilar el script y muestra en el chat :
[11:54] Compile successful
[11:54] Primitive: Canal : 61b5e9ca-9378-4254-af36-d78d6ed839de
La cadena : 61b5e9ca-9378-4254-af36-d78d6ed839de es el identificador del canal por el cual escucha el prim, es diferente para cada prim
Enviar Datos con C# :
Se utilizara la libreria XmlRpcCS para realizar la comunicación entre la aplicación y el objeto en OpenSimulator o SecondLife.
Abrir una consola
Crear el directorio para el cliente
mkdir clientxmlrpc
Cambiar al directorio
cd clientxmlrpc
Copiar la libreria al directorio actual
cp ../XmlRpcCS/XmlRpcCS.dll .
Crear un archivo Client.cs y adicionamos el siguiente codigo :
usingSystem.Collections;
using Nwc.XmlRpc;
publicclass Client {publicstaticvoid Main(){// Informacion del Servidor de Second Life// Canal por donde escucha el clientestring server = "http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi";
string channel = "eafc58de-5d8a-364e-d6d8-4c4cab0129f4";
// Parametros
Hashtable args = new Hashtable();
args.Add("Channel",channel);
args.Add("IntValue",12345);
args.Add("StringValue","Hello World!");
// Cliente XMLRPC
XmlRpcRequest request = new XmlRpcRequest();
request.MethodName = "llRemoteData";
request.Params.Add(args);
// Invocacion y Resultado
Hashtable ret = (Hashtable) request.Invoke(server);
System.Console.WriteLine(ret["StringValue"]);
System.Console.WriteLine(ret["IntValue"]);
}}
Compilamos el codigo :
gmcs -lib:. -r:XmlRpcCS.dll Client.cs
Ejecutamos
mono Client.exe
Debe mostrar en pantalla los valores enviados por el objeto
Exito
1221
Mienstras tanto en OpenSimulator debe aparecer en el chat la informacion enviada
Hello World!!! 12345
Para usar el mismo codigo con OpenSimulator la cadena server debe tener la direccion de nuestro servidor : http://<ipServidor>:<puerto>/cgi-bin/xmlrpc.cgi
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 :
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.
Requerimientos :
Debemos instalar lo paquetes para compilar la libreria
sudo apt-get install nant mono-2.0-devel libmono-winforms2.0-cil mono-1.0-devel
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.
Ahora podemos acceder a través del url rtsp://<ipServidor>/default.sdp el cual puede ser utilizado en teléfonos móviles, Second Life o OpenSimulator para acceder al vídeo en vivo.
Para comenzar a trabajar con Sloodle dentro de Second Life, debemos obtener una copia de los objetos que nos permiten comunicar nuestro sitio de Moodle con el aula de clase virtual basada en Second Life.
Requisitos :
Tener una cuenta en
Second Life
Tener instalado el visor de Second Life
Pasos :
Crear controlador de Sloodle dentro de un curso
Obtener los objetos de Sloodle dentro de Second Life
Configurar los objetos para acceder al curso de Moodle
LibSecondLife es un proyecto que nace a partir de la ingenieria inversa cuando varios desarrolladores quieren entender como funciona el cliente de SecondLife y como se comunica con los servidores, de este esfuerzo nace una libreria que permite acceder a los servidores de SecondLife y que puede utilizarse ahora en nuevos clientes de SecondLife y herramientas de terceros multiproposito. Ha sido tan grande el esfuerzo que hoy ya se tiene una libreria que posee un sinumero de clases que permiten interactuar no solo con los servidores de SecondLife, si no tambien con el OpenSimulator, permitiendo crear aplicaciones que se integren con estos mundos virtuales ampliando las posibilidades de desarrollo, como tambien la creacion de herramientas web que interactuen directamente con los avatars, prims y demas elementos. La libreria ha sido desarrollada en c# y puede ser utilizada en la plataforma Windows a traves del framework 2.0 de .NET o en las plataformas Unix a traves de Mono.
Actualmente la libreria esta en un proceso de cambio de nombre debido a que infringe el uso del nombre SecondLife, dando paso a la libreria libopenmv perteneciente al proyecto OpenMetaverse que pretende crear un metaverso basado en software libre.
Podemos reproducir un video de YouTube dentro de nuestra region de OpenSimulator utilizando el visor de SecondLife, lastimosamente este no soporta contenido flash en este momento pero podemos convertir los videos a un formato que sea compatible con QuickTime para poderlo visualizar dentro de nuestra region en el OpenSimulator.
Existen varios servicios que nos permiten convertir un video de YouTube en un archivo mp4, como por ejemplo (http://www.youtubemp4.com) el cual es compatible con QuickTime, estos son los pasos que debemos seguir para colocar un video de YouTube dentro de nuestra region.
Seleccionar Video en YouTube :
Ir al sitio de YouTube
Buscar el video que queremos mostrar, por ejemplo :
http://www.youtube.com/watch?v=QATAtvkDPVA
Tome la direccion del video y copie el identificador de este
Genere la direccion del video en mp4
http://www.youtubemp4.com/video/QATAtvkDPVA.mp4
Reproducir dentro de el OpenSimulator :
Abrir el visor de Second Life conectado a nuestro servidor OpenSimulator
Crear un cubo y darle forma de pantalla
Editar la Textura y asignarle por ejemplo la textura steel
Ir al menu World
Seleccionar la opcion About Land
Ir a la pestaña Media
Pulsar el boton Set... al frente del cuadro Media URL:
Digitar la direccion de uno de los videos de nuestro servidor DSS, por ejemplo :
http://www.youtubemp4.com/video/QATAtvkDPVA.mp4
Pulsar sobre la Textura a Reemplazar y seleccionar la misma que colocamos al cubo
Seleccione la opcion Auto Scale si desea que el video ocupe toda la superficie donde se va a visualizar
En la parte inferior del visor se encuentra una camara de cine y los botones reproducir y detener
Pulse el boton reproducir
En la pantalla debe visualizarse el video seleccionado.
Nota :
Esto funciono correctamente en las plataformas Windows y Ubuntu 8.10
Es posible que el servicio de www.youtubemp4.com pronto desaparezca como suele suceder con algunos servicios de este tipo, entonces no es recomendable depender de estos.
Despues de probar el envio de video a los diferentes clientes en las dos Linux y Windos, es hora de probar la transmision del video del servidor de streaming Darwin al cliente de Second Life conectados a una region en un OpenSimulator. Esto deberia funcionar de igual manera ya que el cliente de Second Life utiliza el QuickTime player al menos en la version de Windows, por tal motivo debemos poder ver los videos que se pudieron ver en la prueba con este. En Linux el visor utiliza GStreamer para reproducir el video y donde existen mas restricciones de formato.Para reproducir video dentro de OpenSimulator debemos crear un objeto sobre el cual se visualizara el video, se le debe asignar una textura que es reemplazada por el video al momento de reproducir este y se debe asignar la ruta del video dentro de las opciones de la parcela.
Abrir el visor de Second Life conectado a nuestro servidor OpenSimulator
Crear un cubo y darle forma de pantalla
Editar la Textura y asignarle por ejemplo la textura steel
Ir al menu World
Seleccionar la opcion About Land
Ir a la pestaña Media
Pulsar el boton Set... al frente del cuadro Media URL:
Digitar la direccion de uno de los videos de nuestro servidor DSS, por ejemplo :
rtsp://192.168.1.3/sample_50kbit.3gp
Pulsar sobre la Textura a Reemplazar y seleccionar la misma que colocamos al cubo
Seleccione la opcion Auto Scale si desea que el video ocupe toda la superficie donde se va a visualizar
En la parte inferior del visor se encuentra una camara de cine y los botones reproducir y detener
Pulse el boton reproducir
En la pantalla debe visualizarse el video seleccionado.
Pruebas en Windows, cliente de SecondLife:
Fue posible reproducir todos los archivos de video, menos el archivo mp3.
Pruebas en Linux Ubuntu 8.10, , cliente de SecondLife :
rtsp://<IpServidor>/sample_100kbit.mov
Error : ** Message: don't know how to handle application/x-rtp, ...
rtsp://<IpServidor>/sample_100kbit.mp4
Crash : bus_callback:338: GST warning: Internal data flow problem.
rtsp://<IpServidor>/sample_300kbit.mov
Error : ** Message: don't know how to handle application/x-rtp, ...
rtsp://<IpServidor>/sample_300kbit.mp4
Error :bus_callback:338: GST warning: Internal data flow problem.
rtsp://<IpServidor>/sample_50kbit.3gp
OK, autoescala el contenido, sin sonido
** Message: don't know how to handle audio/AMR, channels=(int)1, rate=(int)8000
rtsp://<IpServidor>/sample_h264_100kbit.mp4
Error :bus_callback:338: GST warning: Internal data flow problem.
rtsp://<IpServidor>/sample_h264_1mbit.mp4
Error :bus_callback:338: GST warning: Internal data flow problem.
rtsp://<IpServidor>/sample_h264_300kbit.mp4
Error :bus_callback:338: GST warning: Internal data flow problem.
El unico formato que sirvio en ambas plataformas fueron los archivos 3gp, estoy seguro que existe un formato de video estandard para los visores de SecondLife.
Uno de los proyectos para el 2009 es trabajar mas en la parte de educación en Second Life, como también explorar OpenSimulator (Servidor de aplicaciones 3D, que se utiliza para crear mundos virtuales), pensando en esto hoy instale en mi computador de escritorio que tiene Ubuntu 8.10 Desktop una versión de opensim, aquí están los pasos.
Instalación Servidor
Instalar el servidor de SSH para acceder remotamente por consola :
sudo apt-get install openssh-server
Conectarse al servidor utilizando ssh
ssh usuario@servidor
Editar el archivo : /etc/apt/sources.list
y adicionar al final del archivo la linea :
deb http://pkg.knifejaw.com/ubuntu opensim releases
Actualizar la lista de paquetes
apt-get update
Instalar el opensimulator
apt-get install opensimulator
Esto descargara las librerías de mono si no se tienen instaladas
Nota :
Para que compilen los scripts para los objetos se debe instalar el gmcs
sudo apt-get install mono-gmcs
El OpenSimulator queda instalado en /usr/lib/opensim y los logs pueden ser encontrados en /var/log/opensim. Se debe proceder a iniciar el servidor ya que este no provee scripts para iniciar o terminar
Ejecutar Servidor :
Cambiar el directorio activo al del opensim
cd /usr/lib/opensim/bin
Ejecutar el servidor
sudo ./OpenSim.exe
Configurar el servidor, deje los valores por defecto o modifique
REGION CONFIG #1: Region Name [OpenSim Test]:
REGION CONFIG #1: Grid Location (X Axis) [1000]:
REGION CONFIG #1: Grid Location (Y Axis) [1000]:
REGION CONFIG #1: Internal IP Address for incoming UDP client connections [0.0.0.0]: <IPServidor>
REGION CONFIG #1: Internal IP Port for incoming UDP client connections [9000]: <IPServidor>
REGION CONFIG #1: External Host Name [127.0.0.1]: <IPServidor>
REGION CONFIG #1: First Name of Master Avatar [Test]:
REGION CONFIG #1: Last Name of Master Avatar [User]:
REGION CONFIG #1: (Sandbox Mode Only)Password for Master Avatar account [test]:
El servidor suministra un shell para la ejecución de comandos
Region (root) # :
Para terminar la ejecución del servidor ejecute el comando :
quit
Conectarse a la Región :
Para conectarse al servidor puede utilizarse alguno de los visores como el Liden Client, el Hippo Viewer o el RealXtend, para nuestro caso utilizaremos el Linden Client
Para conectarse a la región puede utilizarse el visor de SecondLife
http://secondlife.com/support/downloads.php
Ejecutar el visor suministrado el enlace a la pagina de login y el
./secondlife -loginuri http://<IpServer>:9000/ -loginpage http://<IpServer>:9000/?method=login