Resistance is Futile

Primeras Impresiones ScienceSim

ScienceSim

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 :


Bajando Texturas de OpenSimulator

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

OpenSim Textura

El identificador es una cadena alfanumerica que utilizaremos para solicitar la imagen,  ejemplo :  12C00245-3432-4E1E-91E7-C2FD5C104E31

Escribir el Programa :

  • Abrir una consola
  • Crear el directorio para nuestro programa
    mkdir TextureDownloader
    cd TextureDownloader
  • Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll.config .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.StructuredData.dll .
    cp <directorio libopenmv>/trunk/bin/log4net.dll .
    cp <directorio libopenmv>/trunk/bin/openjpeg-dotnet.dll .
    wget http://opensimulator.org/svn/opensim/trunk/bin/libopenjpeg-dotnet-2.1.3.0-dotnet-1.so
  • Crear el programa en C#
    vi TextureDownloader.cs

    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 &amp;&amp; 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();
            }
    }
  • Compilar el programa :
    gmcs -lib:. -r:System.Drawing,OpenMetaverse.dll,OpenMetaverseTypes.dll TextureDownloader.cs
  • Ejecutar el programa :
    mono TextureDownloader.exe

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

  • Instalar paquete
    sudo apt-get install imagemagick
  • Converti la imagen a png
    convert <UUID>.jp2 imagen.png

ScienceSim

ScienceSim

"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 :


Subiendo Texturas a OpenSimulator

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.

(more...)


Creando el Primer Bot con LibOpenMetaverse

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.

  • Abrir una consola
  • Crear el directorio para nuestro programa
    mkdir MyBot
    cd MyBot
  • Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.StructuredData.dll .
    cp <directorio libopenmv>/trunk/bin/log4net.dll .
  • Crear el programa en C#
    vi MyBot.cs

    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);
            }
    }
  • Compilar el programa :
    gmcs -lib:. -r:OpenMetaverse.dll MyBot.cs
  • Ejecutar el programa :
    mono MyBot.exe

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.


Page 5 of 9« First...34567...Last »
Powered by WordPress | Designed by Elegant Themes