Statistics
| Revision:

gvsig-3d / 2.1 / trunk / doc / af-visor-3d.rst @ 476

History | View | Annotate | Download (17.9 KB)

1
===================================================
2
Visor 3D básico que integra Nasa WW SDK
3
===================================================
4

    
5
----------------------
6
Análisis funcional
7
----------------------
8

    
9
:Company:   Asociación gvSIG
10
:Author:    DiSiD Technologies, S.L.
11
:Revision:  $Rev: $
12
:Date:      $Date: 2015-02-02 $
13
:Copyright: All rights reserved
14

    
15
.. contents::
16
   :depth: 2
17
   :backlinks: none
18

    
19
.. sectnum::
20
   :depth: 2
21
   :start: 1
22

    
23
.. |year| date:: %Y
24

    
25
.. header:: 
26
      
27
   .. class:: headertable
28

    
29
   +-----------------------+-------------------------+
30
   |.. class:: center      |.. class:: right         |
31
   |                       |                         |
32
   | Análisis funcional    |###Page###               |
33
   +-----------------------+-------------------------+ 
34

    
35

    
36
.. footer:: 
37

    
38
    .. include:: <isonum.txt>
39

    
40
    .. class:: center
41

    
42
    *Análisis funcional del nuevo documento 3D que integra Nasa WW SDK*
43

    
44
    |copy| |year| ** 
45

    
46
Introducción
47
============
48

    
49
Descripción
50
-------------
51

    
52
Este documento pretende realizar un análisis funcional del visor 3D basado en la librería NASA World Wind SDK. Este documento explica en detalle las fases en las que se divide el proyecto y las siguientes funcionalidades:
53

    
54
* Crear visor 3D
55
* Navegación espacio tridimensional
56
* Actualizar visor 3D
57
* Definición modos de carga
58
* Aumento o reducción de la exageración vertical
59
* Modificación de las preferencias del visor
60
* Sincronización de enfoques
61

    
62
Funcionalidades
63
===============
64

    
65
Crear visor 3D
66
--------------
67

    
68
El visor 3D será una ventana complementaria a la vista 2D. Dicha ventana se debe poder mover, maximizar y minimizar. El visor estará compuesto por dos componentes:
69

    
70
* Un primer componente integrará la librería NASA WW SDK. Será el que muestre toda la información en 3D, botones de navegación, un minimapa que muestre la región de visualización en la parte superior izquierda, un indicador de dirección e inclinación del enfoque en la parte superior derecha y la escala del mapa en la parte inferior derecha.
71
* Un segundo componente en forma de barra en la parte inferior del visor que mostrará información sobre la altitud del enfoque, las coordenadas del ratón y la elevación en el punto del ratón (la elevación en el punto del ratón sólo estará disponible si hay una capa de elevación cargada).
72

    
73
El siguiente mockup muestra una aproximación de la visualización de una vista 2D y un visor 3D:
74

    
75
.. image:: images/view3d-mockup.png
76

    
77
.. note::
78
   Cèsar comenta que tiene dudas sobre como el usuario puede identificar facilmente el visor 3D de una vista fácilmente. La idea es evitar que el usuario no sepa a que vista pertenece un visor en concreto cuando tiene muchas vistas/visores abiertos. Una solución que propongo sería indicar de algún modo la vista enlazada ya sea en el título de la ventana del visor o un componente con el nombre de la vista entre el minimapa y el indicador del norte.
79

    
80
Para crear un nuevo visor el usuario dispondrá de dos entradas de menú con sus respectivos botones. Un primer botón para crear una visor esférico y un segundo botón para crear un visor plano. Estas entradas de menú y botones estarán visibles cuando se seleccione una vista pero solo habilitados cuando se active una vista 2D con una capa o más y sin visores registrados. Si la vista seleccionada ya tiene un visor registrado, la extensión que corresponde al tipo de visor registrado se deshabilitará para evitar tener dos visores del mismo tipo sobre la misma vista. Cuando se cree un nuevo visor 3D se deben sincronizar los enfoques. (Ver `Sincronización de enfoques`_). 
81

    
82
.. note:: 
83
  Las herramientas que ejecutan acciones sobre los visores como puedan ser "Actualizar visor" o "Sincronizar visor" solo efectuarán la acción sobre el visor activo, sin tener en cuenta que la vista pueda tener otro visor de diferente tipo.
84

    
85
Navegación espacio tridimensional
86
---------------------------------
87

    
88
El usuario podrá navegar por el visor mediante dos métodos. Por un lado pulsando los botones integrados en la vista y por otro lado usando las diferentes teclas del ratón.
89

    
90
Navegación mediante botones integrados en el visor
91
**************************************************
92

    
93
Los botones se situarán en la parte inferior izquierda del visor. Las posibles opciones de navegación son las siguientes:
94

    
95
* Pan: botón con forma de cruceta circular que permite al usuario desplazarse. El usuario mediante clicks con el botón primario debe ser capaz de desplazar en cualquier dirección. La dirección del desplazamiento varía en función de la posición de los clicks realizados por el usuario respecto al centro mientras que la velocidad de desplazamiento varía en función de la distancia al centro de la cruceta.   
96
* Zoom: dos botones situados uno encima del otro. Al pulsar sobre el botón superior, el zoom aumentará sobre el punto central del visor mientras que al pulsar el botón inferior, el zoom disminuirá sobre el punto central del visor.
97
* Rotación: dos botones situados uno encima del otro. El superior indica rotación en sentido antihorario mientras que el inferior sentido horario. La rotación se realiza sobre el punto central del visor. 
98
* Elevación respecto al plano: dos botones situados uno encima del otro. El superior permite al usuario aumentar la elevación del enfoque hasta un ángulo máximo de 90 grados respecto al plano. El inferior permite al usuario disminuir la elevación del enfoque hasta un ángulo máximo de 15 grados aproximadamente respecto al plano.
99

    
100
Navegación mediante el ratón
101
****************************
102

    
103
Los funcionalidad asignada a los botones del ratón serán:
104

    
105
- Botón primario: permite al usuario desplazarse por el mapa haciendo click y arrastrando con el botón primario el mapa hasta la nueva posición. Si el usuario realiza un click sin arrastrar, el plano se desplazará situando el punto indicado como punto central.
106
- Botón secundario:  permite al usuario rotar el mapa en todas las direcciones. La rotación se realizará manteniendo pulsado el botón secundario y moviendo el ratón. EL funcionamiento será distinto según la dirección del movimiento. 
107

    
108
  - Si el movimiento es hacia la derecha, la vista rotará en sentido horario.
109
  - Si el movimiento se realiza hacia la izquierda, la vista rotará en sentido antihorario.
110
  - Si el movimiento se realiza hacia bajo, la vista se inclina hasta un ángulo de 0 grados respecto a la capa.
111
  - Si el movimiento se realiza hacia arriba, la vista se inclina hasta un ángulo de 90 grados respecto a la capa.
112

    
113
- Botón central: permite al usuario aumentar o disminuir el zoom de la vista. El usuario deberá de pulsar y mantener el botón primario sobre la vista. Si el usuario mueve el ratón hacia arriba se aumentará el zoom, mientras que si el usuario mueve el ratón hacia bajo se reducirá el zoom. El aumento o reducción del zoom será proporcional a la distancia entre el punto inicial y la posición actual del puntero, a mayor distancia mayor aumento/reducción del zoom. Si el usuario mueve el ratón en dirección horizontal no se realizará ninguna acción.
114
- Rueda central: tendrá asignado la herramienta Zoom in/out. El funcionamiento varía con respecto a la herramienta. Si desplazamos la rueda hacia delante se aumentará el zoom, en cambio si desplazamos hacia atrás la rueda se reducirá el zoom.
115

    
116
Actualizar visor 3D
117
-------------------
118

    
119
Herramienta con entrada de menú y botón en la barra de botones de gvSIG. Esta herramienta será visible cuando se active un visor 3D y estará activa cuando se seleccione un visor 3D.
120
Permite al usuario actualizar el visor 3D el cual tomará de nuevo la información necesaria de la vista 2D enlazada y mostrará de nuevo la información en 3D. Si no es capaz de acceder a la vista 2D por cualquier motivo, por ejemplo la vista 2D ya no existe, el visor mostrará un mensaje advertencia que informará al usuario de que la actualización no se ha podido realizar sin realizar ninguna modificación en el visor.
121

    
122
Definición modos de carga
123
--------------------------
124

    
125
El usuario debe ser capaz de indicar el modo de carga de una capa. El modo de carga se indicará dentro de las propiedades de la capa, en una nueva pestaña llamada "3D". Los modos de carga varían en función del tipo de capa. Las capas vectoriales solo se pueden cargar como vectoriales rasterizadas y vectoriales con simbología 3D mientras que las capas raster solo se pueden cargar como raster imagen y como elevación.
126

    
127
Los modos de carga son los siguientes:
128

    
129
* Capa vectorial rasterizada: El modo de carga "Capa vectorial rasterizada" cogerá la capa y mediante un proceso y unos parámetros se obtendrá una imagen raster. Esta imagen raster debe ser teselada y cargada en el visor 3D. Además, la imagen raster obtenida a partir de la capa vectorial debe recalcularse a medida de que el zoom aumente o disminuya para evitar la visualización de píxeles del raster. Este proceso puede ser costoso por lo que debe ejecutarse en background para que sea transparente para el usuario.
130

    
131
  Al seleccionar este modo se activará una panel para que el usuario pueda definir parámetros de rasterización. Los parámetros serán los siguientes:
132

    
133
  * Numero de bandas: numero de bandas del raster. Las bandas de un raster son capas de la misma extensión que el raster que proporcionan diversa información mediante una matriz de valores de celda. Por ejemplo, las capas de elevación normalmente tiene una única banda que indica la altura del terreno en cada una de las celdas o píxeles, mientras que un imagen Landsat tiene siete bandas distintas para representar las diferentes frecuencias del espectro electromágnetico. Por defecto el número de bandas será 3, RGB para representar las leyendas de símbolo único.
134
  * Tamaño de celda máximo y mínimo: indica el tamaño de celda máximo y mínimo en metros. Un raster con menor tamaño de celda indica una mayor resolución y mayor detalle pero también más tiempo de procesamiento, mientras que un mayor tamaño de celda indica una menor resolución y detalle pero menor tiempo de procesamiento. El tamaño mínimo y máximo servirán a la librería para calcular la imagen raster basándose en el zoom del enfoque. Cuando el zoom esté muy próximo al raster se empleará el tamaño mínimo de celda para evitar el pixelamiento mientras que, cuando el zoom este alejado del raster se empleará el tamaño de celda máximo que permitirá renderizar la capa de forma más rápida mejorando el rendimiento. Por defecto, los valores mínimo y máximo serán calculados para obtener un detalle aceptable dentro de los tiempos de repuesta aceptados.
135

    
136
* Capa vectorial con simbología 3D: El modo de carga "Capa vectorial con simbología 3D" indica que la capa se cargará en el visor de forma vectorial usando simbología 3D.
137

    
138
  .. note::
139
    Queda pendiente de analizar el modo de carga "capa vectorial con simbología 3D" debido a que esta parte del proyecto se abordará en otras fases.
140
  
141
* Capa raster como imagen: El modo de carga "Capa raster como imagen" carga la capa raster de forma teselada en el visor 3D. 
142
* Capa raster como elevación: El modo de carga "Capa raster como elevación" carga la capa raster como una capa de elevación. 
143

    
144
Al cargar las capas de la vista 2D comprobará si esta georeferenciadas. En el caso de que si estén georeferenciadas automáticamente toma la proyección y la reproyecta sobre EPSG:4326. En el caso de que no estén georeferenciadas tomará como proyección origen la proyección de la vista. 
145

    
146
Aumento o reducción de la exageración vertical
147
-----------------------------------------------
148

    
149
Herramienta compuesta por dos botones integrados en el visor. Los botones se situarán uno encima del otro. El botón superior permitirá al usuario aumentar la exageración vertical del visor mientras que el botón inferior permitirá al usuario reducir la exageración vertical del visor. Los cambios en la exageración vertical se reflejan automáticamente en el visor.
150

    
151
Modificación de las preferencias del visor
152
-------------------------------------------
153

    
154
El usuario debe de poder editar las preferencias del visor 3D mediante las preferencias de aplicación de gvSIG y las propiedades de la vista. Dependiendo de la propiedad y como afecta a la librería se encontrará en la preferencias de aplicación o en la propiedades de la vista. Las propiedades editables desde las preferencias de aplicación afectarán a nuevos visores (no tendrán efecto sobre los visores ya existentes) y serán las siguientes:
155

    
156
* Tamaño por defecto del visor: dos valores, ancho y alto, que especifican el tamaño del visor cuando se crea.
157
* Componentes por defecto
158
  
159
  * Mostrar indicador de dirección: checkbox para indicar si mostrar o no la dirección del enfoque.
160
  * Mostrar escala: checkbox para indicar si mostrar o no la escala del mapa. Si el checkbox se activa se ofrece la posibilidad de situar la escala en el centro del visor o en la parte inferior izquierda.
161
  * Mostrar minimapa: checkbox para indicar si mostrar o no el minimapa.
162
  * Mostrar estrellas: checkbox para indicar si mostrar o no las estrellas de fondo.
163
  * Mostrar atmósfera: checkbox para indicar si mostrar o no la atmósfera
164

    
165
* Animación en la sincronización de enfoques: esta opción permite habilitar/deshabilitar la opción de animar la sincronización de enfoques (ver `Sincronización de enfoques`_) y al crear un nuevo visor (ver `Crear visor 3D`_). La animación es puramente estética y es posible que el usuario para agilizar la visualización no quiera ninguna animación. Esta propiedad si que afectará a todos los visores, tanto existentes como nuevos.
166

    
167
Las propiedades editables desde las propiedades de vista solo afectarán al visor enlazado la vista. La propiedades son las siguientes:
168

    
169
* Exageración vertical: exageración vertical del visor inicial. Por defecto será uno.
170
* Añadir capa raster BlueMarble-200405 como capa raster base: Al crear un nuevo visor, este carga una capa raster global desde un servicio WMS de la NASA. Por defecto esta capa se carga como capa inicial para evitar que se muestre el visor 3D en negro. Las capas procedentes de la vista 2D se situarán encima de esta capa raster.
171
* Añadir capa de elevación Earth/NASA LandSat I3 como elevación por defecto: Al crear un nuevo visor, este carga una capa de elevación global desde un servicio WMS de la NASA. Las capas procedentes de la vista 2D se situarán encima de esta capa de elevación. En el caso de que el usuario cargue una capa de elevación propia la capa Earth/NASA LandSat I3 se deshabilitará para facilitar la visualización de la capa de elevación cargada por el usuario.
172
* Actualizar visor al activar la ventana: Al activar esta opción el visor 3D escuchará los eventos de cambio de la vista 2D que tiene enlazada. Cuando el usuario active la ventana del visor 3D, si han habido cambios, se le preguntará al usuario si decide recargar la información del visor para que se reflejen los cambios de la vista 2D. Los eventos de cambio escuchados serán cambios en el orden de capas, cambios de leyenda, cambios de visibilidad, cambios en el número de capas de la vista 2D... Por defecto esta opción estará habilitada.
173
* Sincronización automática de enfoques: Al marcar esta opción, el visor 3D escuchará los eventos de cambio de enfoque de la vista 2D enlazada para sincronizar el enfoque 3D con un angulo perpendicular al terreno. Esta sincronización se animará o no dependiendo si la opción "Animación en la sincronización de enfoques" está activada. Por defecto la opción "Sincronización automática de enfoques" estará habilitada.
174

    
175
Sincronización de enfoques
176
---------------------------
177

    
178
El usuario podrá sincronizar los enfoques del visor y la vista 2D que tenga enlazada mediante dos formas:
179

    
180
* La primera consistirá en una sincronización del enfoque manual mediante una herramienta que siempre estará visible pero sólo activa cuando se active un visor 3D. Al hacer click sobre el menú "Sincronizar enfoques" o sobre el botón automáticamente se obtendrá el enfoque de la vista 2D que tiene enlazada el visor 3D y se ajustará el enfoque en el visor con un ángulo de enfoque perpendicular al terreno. El resultado final es la vista y el visor mostrando la misma información.
181
* La segunda forma de sincronizar los enfoques es marcando la opción "Sincronización de enfoques automática" desde la propiedades de vista el cual sincronizará el enfoque del visor 3D con un ángulo perpendicular al terreno cada vez que se detecte que el enfoque en la vista 2D ha cambiado. Cuando esta opción este marcada la herramienta "Sincronizar enfoque" no tendrá efecto alguno. El resultado final es la vista y el visor mostrando la misma información.
182

    
183
Si por cualquier motivo no se pudiera acceder a la vista 2D o a su enfoque se mostraría un dialogo informando al usuario de que la operación no se ha podido realizar.
184

    
185
Modo pantalla completa
186
-----------------------
187

    
188
El usuario debe de poder activar un visor 3D y mediante una entrada de menu / botón que permita mostrar el visor en pantalla completa. Para salir de la pantalla completa se deberá pulsar la tecla [Esc].
189

    
190
Fases del proyecto
191
=====================
192

    
193
Se propone las siguientes fases del proyecto:
194

    
195
Fase 1
196
---------
197

    
198
Primera fase del proyecto. Abordará las siguientes funcionalidades:
199

    
200
* Creación de visores esféricos y planos
201
* Navegación espacio tridimensional
202
* Aumento o reducción de la exageración vertical
203
* Soporte para capas vectoriales rasterizadas y capas raster
204
* Rasterizar capas vectoriales según el nivel de zoom.
205
* Soporte para capas de elevación
206

    
207
Fase 2
208
-----------
209

    
210
Segunda fase del proyecto. Abordará las siguientes funcionalidades:
211

    
212
* Asignación de modos de carga mediante las propiedades de capa.
213
* Herramienta para actualizar la información de un visor.
214
* Editar y mostrar las preferencias del visor.
215
* Sincronización de enfoques.
216
* Pantalla completa
217

    
218
Fase 3
219
-------------
220

    
221
Tercera fase del proyecto. A priori de momento no se abordará. La funcionalidades son las siguientes:
222

    
223
* Soporte para capas vectoriales usando la simbología 3D.
224

    
225
.. note::
226
  Queda pendiente el análisis funcional de la fase 3.