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.
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.
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.
Las islas estan en construccion pero ya tengo mi usuario.
Enlaces :
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 boton del inventario, abrir el directorio de texturas, click derecho sobre la imagen a descargar y Copiar el AssetUUID

El identificador es una cadena alfanumerica que utilizaremos para solicitar la imagen, ejemplo : 12C00245-3432-4E1E-91E7-C2FD5C104E31
Escribir el Programa :
using System; using System.IO; using System.Threading; using OpenMetaverse; public class ImageDownloader { public static void Main(string[] args) { // Realizar el login GridClient client = new GridClient(); LoginParams loginParams = client.Network.DefaultLoginParams( "Juan","Perez","1234","TextureDownloader","0.1"); loginParams.URI = "http://192.168.1.3:9000"; if(!client.Network.Login(loginParams)) { Console.WriteLine(client.Network.LoginMessage); return; } // Evento a esperar la descarga AutoResetEvent downloadEvent = new AutoResetEvent(false); // Identificador de la textura a descargar UUID textureID = UUID.Parse("12C00245-3432-4E1E-91E7-C2FD5C104E31"); // Evento de descarga de la imagen client.Assets.OnImageReceived += delegate(ImageDownload image, AssetTexture asset) { // Si todo funciona bien, guarde como imagen jp2 if(image != null && image.Success) try { File.WriteAllBytes(image.ID + ".jp2",asset.AssetData); } catch(Exception e) { Console.WriteLine(e); } // Dispare el evento de descarga downloadEvent.Set(); }; // Solicite la descarga de la textura client.Assets.RequestImage(textureID,ImageType.Normal,1000000.0f,0,0); // Si nos cansamos de esperar notifique if(!downloadEvent.WaitOne(120*1000,false)) Console.WriteLine("Time Out"); // Salir client.Network.Logout(); } }
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
"ScienceSim es un mundo virtual creado para la comunidad interesada en la computacion de alto rendimiento (HPC), puede ser utilizada para educacion, colaboracion o visualizacion" http://sciencesim.com
El pasado mes de noviembre de 2008 durante la conferencia de Super Computacion, un evento patrocinado por la IEEE y ACM, Wilfred Pinfold anuncio que los asistentes a la conferencia planean crear un nuevo mundo virtual llamado "ScienceSim". Este proyecto es soportado por Intel y el comite de la conferencia y busca utilizar estos ambientes virtuales colaborativos para realizar investigacion de punta. A traves de este proyecto se pretende crear una nueva herramienta que utilice las caracteristicas innovadoras de los ambientes virtuales para facilitar la educacion y la colaboracion.
Intel crea este mundo basado en OpenSimulator para que la comunidad cientifica lo utilice como una herramienta para la simulacion de algunos de los resultados de investigaciones que tienen que ver con la computacion de alto desempeño, como son el modelado de sistemas y la visualizacion de datos, entre muchos otros, ademas le suma la posibilidad de utilizar la plataforma de forma educativa para enseñar de manera intuitiva utilizando estos modelos. Adicional a esto los mundos virtuales se veran beneficiados con el proyecto al entrar en el mundo de la computacion intensiva, pues aunque estan enmarcados en la computacion distribuida todavia algunos servicios son centralizados y no sacan provecho de la capacidad de computo actual.
Asi que Intel es otra de las grandes compañias que se suma a estos esfuerzos para desarrollar mejores mundos virtuales.
Enlaces :
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 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.
Para mayor informacion :
http://wiki.secondlife.com/wiki/Image_System
Image Sizes for Second Life
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.
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.
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.
using System; using System.Threading; using OpenMetaverse; // Libreria de Acceso OpenSimulator public class MyBot { public static void Main() { // Crear cliente GridClient client = new GridClient(); // Informacion acerca del avatar y la aplicacion LoginParams loginParams = client.Network.DefaultLoginParams( "Juan","Perez","1234","MyBot","0.1"); // Colocamos la direccion de nuestro simulador loginParams.URI = "http://192.168.1.3:9000/"; // Tratamos de entrar if(client.Network.Login(loginParams)) { // Si entramos sacamos un mensaje, // esperamos 15 segundos // y salimos del mundo Console.WriteLine("Entrando ..."); Thread.Sleep(15000); client.Network.Logout(); } else // Si no fue posible loguearse, mostrar error Console.WriteLine(client.Network.LoginMessage); } }
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.