martes, 29 de junio de 2010

Changing the layer properties. Legend and labelling.

En el siguiente vídeo veremos cómo cargar un archivo SHP y modificar la forma en la que se visualiza su información sobre el mapa. En este caso, trabajaremos con un archivo que contiene un conjunto de puntos georreferenciados representando ciudades del mundo. Una vez cargado el archivo, cambiaremos la representación de los puntos, haciendo que las ciudades pertenecientes a un mismo país aparezcan con el mismo color. Por último, etiquetaremos los puntos mostrando el nombre de la ciudad que representan. Utilizamos un tipo especial de texto que oculta aquellas etiquetas que se encuentran detrás de otras, facilitando así su lectura.

In the next video we show how to load a SHP file and modify how its data is represented in the map. In this case, we work with a file that contains a set of geopositioned points representing cities of the world. Once the file is loaded, we change the color of the points, making the cities of the same country share the same color. Finally, we add labels to the points, showing the name of the cities. We utilize a special type of text that hides labels that are behind others, improving the readability.



viernes, 28 de mayo de 2010

Stereoscopic and display modes support tutorial


- Español -

En este vídeo tutorial se va a demostrar la capacidad de visualización estereoscópica de gvSIG 3D además de las posibilidades de visualización que la herramienta ofrece.

Tal y como se observa, en el vídeo, existen dos botones que nos facilitan lo que estamos buscando. El de modos de visualización y estéreo y el de pantalla completa .

Los modos de visualización nos permiten elegir el modo de estéreo que se desea y algunos parámetros que permiten ajustarlo. La distancia entre los ojos puede variar levemente entre una persona u otra, así como la distancia a la que se encuentra la pantalla. La distancia de fusión es el punto a partir del cual los objetos representados salen por detrás del plano de la pantalla (profundidad) o por delante (salen flotando).

Con estos valores, gvSIG 3D calcula automáticamente cuál es la mejor forma de separar las dos imágenes para luego combinarlas correctamente con el modo de estéreo elegido.

El modo de pantalla completa, permite configurar gvSIG 3D, para mostrar la vista activa en pantalla completa. Además permite cambiar algunos parámetros como elegir que pantalla se desea utilizar, por si se hacen uso de varias pantallas o por si lo que se requiere es una ventana suelta de visualización.

Además en las últimas revisiones se añadió soporte (sólo en pantalla completa), para un modo de visualización específico para monitores auto-estereoscópicos Philips WowVX (3D sin necesidad de gafas).

- English -


This video tutorial shows the stereocopic capabilities and display modes than gvSIG 3D offers to the users. There are two buttons that gives us access to the required tools: the stereo visualization tool and the fullscreen tool

Visualization modes allow us to select the stereo mode and change the parameters to set it up. The interocular distance could slightly  change between different people. The same occurs with the screen distance. Fusion distance is the required distance where rendered objects appear back to the display plane or in front of it (floating).

With all of this parameters, gvSIG 3D automatically calculates which is the best mode to separate the two stereo images.

The full screen tool allow us to set up the active 3D view in full screen. It also allows change some parameters like the active display (if you have more than one displays) or if you prefer a single independent windowed 3D view.

Lastest versions of gvSIG 3D add support for a specific full screen mode for the auto-stereoscopic displays Philips WowVX (3D without glasses).



martes, 25 de mayo de 2010

Editing 3D Objects Video Tutorials

En los siguientes vídeos vamos a ver ejemplos de uso de las herramientas de edición de modelos 3D, ampliamente mejoradas en el último build de gvSIG3D (14). Estas herramientas permiten importar modelos creados en programas como Google Sketchup (Collada .dae) o 3DStudio (.3ds), entre otros, y realizar transformaciones sobre ellos en la vista de gvSIG.

Following videos show some examples of the edition tools implemented in the last gvSIG3D build (14). These tools allow to import models created with applications like Google Sketchup (Collada .dae) or 3DStudio (.3ds) and apply transformations to them inside gvSIG.


En el primer vídeo podemos observar la carga, traslación y escalado de un modelo de la "Ciutat de les Arts i les Ciencies de Valencia", posicionándolo en su lugar sobre una capa raster de la ciudad.


First video shows how to load, translate and scale a 3D model. In this case we are loading a model of the "Ciutat de les Arts i les Ciencies" of Valencia. We place the model in its right position over a raster layer.



En el segundo video se muestra la capacidad de editar varios modelos al mismo tiempo, permitiendo agruparlos y desagruparlos para una mayor facilidad de uso.

Second video shows how to work with more than one object at the same time, allowing us to group and ungroup them.




En el último vídeo, se utilizan las herramientas de traslación y rotación para adaptar la posición del objeto sobre la superficie de una capa de elevación que se encuentra inclinada.

Last video shows the use of the rotation tool to adapt the object position to a sloping surface of an elevation layer.




viernes, 21 de mayo de 2010

Using a contour file shp as elevation data in a 3D view (with Sextante) - Video tutorial

Español

En este tutorial aprenderemos como convertir un archivo shp con cotas de elevacion para utilizarlo posteriormente en una vista 3D. Utilizando la extensión de Sextante (disponible en la web de gvSIG), podemos convertir ficheros vectoriales para conseguir nuevas fuentes de datos para nuestros proyectos 3D, tal y como se muestra en el siguiente video.

English

In this tutorial, we will learn how to convert a contour lines shp into a raster file with elevation data ready to use into a 3D View. Using the Sextante extension (available on gvSIG web), we can convert our vector files to get new data sources for the 3D view as shown in the following video.

martes, 18 de mayo de 2010

Nuevo build de gvSIG3D (Build number 14)!!



Español

Desde el equipo de gvSIG 3D nos complace anunciar un nuevo build de gvSIG 3D que podéis descargar desde [1]. Este build ha sido posible gracias al apoyo que la comunidad de usuarios ha demostrado. En esta ocasión queremos agradecer especialmente a Victoria Agazzi su colaboración. También a Paqui Mercadé y Sergio Clark por su tiempo testeando la extensión 3D.

Algunas de las mejoras más importantes son:
  • Integrada nueva versión de osgVP (2.2.1)
  • Amplias mejoras en la carga de modelos 3D.
  • Soporte para archivos COLLADA.
  • Soporte para drivers Mesa en linux.
  • Arreglado bug que no permitía visualizar imagenes jpg desde servidor WMS.
  • Arreglado bug en propagación de elevaciones.
  • Arreglado bug en geometrías con Z.
  • Añadido Sextante en la distribución para Mac OSX.
  • Traducción completa al inglés.
  • Multiple minor bug fixes.
Esperamos que con este nuevo build continuéis dándonos sugerencias y reportando problemas para poder seguir mejorando.

Conviene recordar que las versiones en desarrollo están orientadas a que los usuarios puedan evaluar y testear las nuevas funcionalidades de gvSIG, pero no son versiones que deban ser usadas en entornos de producción.


English


We are pleased to announce a new build of gvSIG3D available in
[1]. This development has been possible thanks to the community support. We'd like to thanks specially Victoria Agazzi for her collaboration. Also to Paqui Mercadé and Sergio Clark for his time testing the 3D extension.

Among the new features, we shall emphasize:
  • osgVP version upgraded to 2.2.1
  • Big improvements in 3D models loading.
  • Support for COLLADA files.
  • Support for Mesa drivers in linux
  • Fixed bug in WMS services with jpeg images.
  • Fixed bug with elevation propagation.
  • Fixed bug in Z geometries.
  • Sextante added in Mac OSX distribution.
  • Complete english translation.
  • Multiple minor bug fixes.
We encourage everyone to try this version and await your comments and suggestions in the blog as well as in the mailing list in order to keep improving the framework.

These development versions are oriented to test and evaluate new functionalities of gvSIG, so it's not recommended to use it in a production environment.

[1] https://gvsig.org/web/projects/gvsig-desktop/devel

viernes, 30 de abril de 2010

Problemas con drivers y gvSIG 3D en Ubuntu

Hace tiempo que la comunidad nos está reportando errores con la extensión 3D y algunas tarjetas gráficas: fundamentalmente con las ATI y las INTEL. Esto ocurre en sistemas operativos linux cuando se está utilizando el driver libre, también conocido como driver Mesa, y que viene por defecto. El error es grave, puesto que al intentar arrancar una vista 3d todo gvSIG se cierra sin dejar rastro[1].


Descripción del problema


Para entender bien el problema se debe valorar el efecto que tiene usar un determinado driver sobre el rendimiento gráfico del sistema. Si los drivers no están instalados correctamente o si no son los adecuados la carga recae sobre el procesador. Así una tarjeta de última generación apenas podría mover aplicaciones 3D complejas.

En sistemas operativos Windows esto no suele dar mayor problema, puesto que la instalación de drivers es una labor sencilla, y normalmente, los aporta el fabricante.

En linux la cosa cambia, hay drivers libres y drivers privados. Y según la tarjeta gráfica que tengas podrás utilizar unos u otros. Históricamente las tarjetas NVIDIA han tenido mejor soporte con su driver privado, aunque ahora esto está cambiando. Para aumentar la confusión, las tarjetas ATI disponen de drivers libres (llamados Mesa) y drivers privados (conocidos como fglrx). Los mismos drivers Mesa sirven también para una amplia gama de tarjetas, entre los que se incluyen las Intel. En Ubuntu si tienes una ATI o una Intel se activa por defecto el driver Mesa.

El modo de aportar aceleración gráfica en linux es mediante la adición del módulo DRI(direct rendering) y GLX en la carga de las X. Estos módulos suelen enlazar con una librería llamada libGL y que aporta la implementación de la API de OpenGL que es necesaria para obtener aceleración gráfica. De modo que cada driver aporta su implementación de OpenGL que está optimizado para un determinado tipo de tarjetas.

En gvSIG3D se hace un uso extenso de OpenGL desde el grafo de escena en el que se basa. Por lo que el driver utilizado es de suma importancia.

Por otro lado está el tema del manejo de memoria y la carga de librerías. En linux cada proceso tiene su espacio de memoria reservado, y a la vez comparte un espacio global con el resto del sistema. La carga de librerías dinámicas por parte de un proceso se realiza mediante la llamada dlopen (dynamic library open).

Por defecto cada proceso realiza la carga de librerías en su espacio de memoria. De esta manera un proceso no tendrá acceso al espacio de memoria de otro. Tampoco tendrá acceso a los símbolos que cargan sus librerías a no ser que estas librerías se carguen en el espacio global de memoria del sistema.

Retomando el hilo inicial (gvSIG3D hace crash! con mi tarjeta ATI o Intel en Ubuntu), parece ser que el problema reside en que las librerías DRI y GLX del driver Mesa, ya no enlazan con libGL directamente.

Por tanto esta librería ya no se encuentra cargada en el espacio global de memoria. En consecuencia el driver no es capaz de encontrar los símbolos de OpenGL requeridos a no ser que se carguen en el espacio global de memoria.

En C++ es posible arreglar este problema mediante el uso del flag RTDL_GLOBAL en la llamada dlopen() haciendo algo parecido a esto antes de levantar un contexto de render[2]:

/* Make sure libGL symbols will be visible to the driver */
glhandle = dlopen("libGL.so", RTLD_NOW | RTLD_GLOBAL);
/**para más info mirar en [3]**/

Sin embargo la problemática asociada con gvSIG3D va más allá. En nuestro caso es jogl (JavaOpenGL) el que levanta el contexto de render. Java carga la librería jogl mediante la llamada System.loadLibrary() e internamente lanza este dlopen() . Sin embargo la llamada no se realiza con el flag RTLD_GLOBAL (que haría visible al driver los símbolos requeridos). Como esta llamada la realiza Java internamente, nos impide poder definir los flags.


Soluciones


En este momento estamos decidiendo que solución adoptar, puesto que arreglar el fallo con mediación del usuario es bastante sencillo. Se trata de precargar la librería antes de ejecutar el programa, de este modo los símbolos estarán disponibles.

En caso de tener Ubuntu en una consola ejecutar :

1. glxinfo | grep rendering

Si en la consola aparece "direct rendering: Yes " puedes seguir el proceso . Si no, no tienes aceleración 3D, estás usando el procesador en lugar de la tarjeta gráfica. El rendimiento será muy bajo.

2. glxinfo | grep renderer

Si aparece algo como "OpenGL renderer string : Mesa DRI ..." estás utilizando los drivers mesa. Enhorabuena :D, quizá el fallo pueda solucionarse, aunque es posible que el rendimiento no sea muy alto.

3. export LD_PRELOAD=/usr/lib/libGL.so.1

y después en la misma consola (muy importante) ejecutar la aplicación gvSIG (mediante el script gvSIG.sh.) en la que tengas instalada la extensión 3D.

4. ./ruta-a-gvSIG_1.9/bin/gvSIG.sh

gvSIG debe de estar iniciándose....

5. Intenta abrir una vista 3D.

Sin embargo hacerlo de manera automática y para todos los usuarios (todas las tarjetas/drivers) ya no es tan sencillo. Entre las opciones que estamos discutiendo se encuentran las siguientes:

1. Levantar nosotros mismos el contexto de render, y así al mismo tiempo eliminamos la dependencia que tenemos con jogl.

2. Intentar averiguar mediante script que tipo de driver/tarjeta tiene el usuario y ejecutar el LD_PRELOAD en función de que implementación de libGL se esté usando.

3. Añadir este problema a la lista de problemas conocidos y dejar la solución en forma de parche, para aquel que se la quiera descargar.

Esperamos aportar la solución definitiva en el siguiente build (bn14). Para los que necesiten una solución inmediata pueden utilizar el procedimiento que se indica arriba.

Si el procedimiento no te ha funcionado, contacta con nosotros en las listas de gvSIG o en este mismo blog. Suerte!



[1]http://forge.osor.eu/tracker/?func=detail&group_id=89&aid=13153&atid=732
[2]http://www.xfree86.org/current/DRI11.html
[3]http://www.mail-archive.com/mesa3d-dev@lists.sourceforge.net/msg01152.html

martes, 20 de abril de 2010

Rasterize SHP layers and apply Transparency - Video Tutorial

Español

Esta vez vamos a aprender a rasterizar capas vectoriales y a aplicar transparencia sobre ellas. En el video se observa como variar la transparencia dinámicamente hasta lograr el nivel deseado.

English

This time we are going to learn to rasterize vectorial layers and to apply transparency to them. The video shows how to vary the alpha value until the desired level is achieved.