Transformación de modelos de OpenDX a VRML

Anuncio
Transformación de modelos de OpenDX a VRML
Luis M. de la Cruz Salas
DCI, DGSCA­UNAM
[email protected]
Resumen
En este tutorial se muestra la manera de visualizar datos escalares y vectoriales definidos en una malla tridimensional, uniforme y estructurada, utilizando el software OpenDX[1]. Este software es de dominio público y permite analizar datos de diferentes áreas de investigación. La desventaja de este software es que no contiene herramientas para realidad virtual (esteroscopía, manejo de dispositivos, etcétera). Para mitigar esta desventaja, en este tutorial se muestra cómo transformar visualizaciones generadas con este software al formato VRML. Se utilizarán datos de simulaciones de dinámica de fluidos en todos los ejemplos aquí presentados. Para instalar y aprender a usar OpenDX con más detalle, se recomienda revisar [2].
Áreas de aplicación
Dinámica de Fluidos, Astronomía, Ingeniería.
Palabras clave
OpenDX, VRML, CFD.
1. Introducción
En esta parte se describirá el formato de los datos que se utilizarán en los ejemplos. Para hacer referencia a las opciones del menú de OpenDX se utilizará el tipo de letra Nimbus Sans L 10 pts bold y Courier 8 pts para códigos y contenidos de archivos.
1.1. Malla
Los datos generados en una simulación de dinámica de fluidos generalmente están referenciados a una malla, la cual puede ser regular o irregular, uniforme o no uniforme, estructurada o no estructurada. En este tutorial nos enfocaremos a la visualización de datos numéricos definidos en mallas tridimensionales, estructuradas, regulares y uniformes, como la que se muestra en la figura 1.
Figura 1. Malla estructurada, regular uniforme en 3D.
Transformación de modelos de OpenDX a VRML
2/7
1.2. Datos escalares y vectoriales
Los datos que se visualizarán son referenciados como campos escalares y vectoriales. Un campo escalar representa una variable del problema que se está analizando (p. ej. temperatura, presión, etcétera) y se define un valor de esta variable para cada nodo de la malla . En un campo vectorial se representan variables con más de una componente (p. ej. velocidad, vorticidad, etcétera), en tres dimensiones se definen tres valores por cada nodo de la malla, de tal manera que este tipo de información se puede mostrar usando flechas posicionadas en los nodos de la malla. Los datos con los que se trabajará en este tutorial, están en formato ASCII ordenados por bloques, es decir, se tiene una lista de números que corresponden a valores definidos en puntos de la malla. Por ejemplo:
1.1840e­07 1.5087e­07 2.6402e­07 5.1147e­07 ...
1.0040e­06 1.9557e­06 3.7552e­06 7.1038e­06 ...
1.3237e­05 2.4326e­05 4.3792e­05 7.4935e­05 ... 2.2674e­07 2.8135e­07 5.3546e­07 9.7357e­07 ... ...
Suponiendo que estos datos representan un campo escalar, entonces el valor 1.1849e­07 correspondería al primer nodo de la malla, el 1.5087e­07 al segundo, y así sucesivamente. Si por el contrario, representasen a un campo vectorial en 3D, entonces los valores 1.1849e­07, 1.5087e­07 y 2.6402e­07 corresponderían al primer nodo, los siguientes tres al segundo nodo, y así sucesivamente. En este ejemplo trabajaremos con tres archivos cuyos nombres son: ”temp.00015” (temperatura), ”velc.00015” (velocidad) y ”vort.00015” (vorticidad). El primero es un campo escalar y los dos últimos son campos vectoriales en 3D. Estos archivos se encuentran en el material adicional a este tutorial.
2. Descripción del formato de los datos En esta sección mostraremos cómo describir la información del archivo ”temp.00015” dentro de OpenDX, y después se dirá cómo hacer lo mismo para los archivos ”velc.00015” y ”vort.00015”. Estos archivos están descritos en un cubo de longitud 1 en cada eje y en una malla de 49 X 49 X 49 nodos.
1. Ejecutar OpenDX (en Linux esto se hace con el comando: dx ). Seleccionar Import Data del menú principal para obtener el Data Prompter, el cual se muestra en la figura 2.
Figura 2. Data Prompter, donde se define el formato de los datos.
L.M. de la Cruz, DGSCA­UNAM 2006
Transformación de modelos de OpenDX a VRML
3/7
2. Seleccionar Grid or Scattered file (General Array Format), véase figura 3. Por omisión, el tipo de malla (Grid type) es estructurada regular uniforme (primera opción); vamos a leer una variable (Number of variables = 1); un solo paso en el tiempo (Single time step activado) y la organización de los datos es en bloque (Block).
Figura 3. Opciones del Data Prompter para distintos tipos de mallas.
3. Vamos ahora a describir los datos, para esto pulsamos el botón Describe Data... para obtener la caja de diálogo que se muestra en la figura 4.
Figura 4. Caja de diálogo para la descripción de los datos.
L.M. de la Cruz, DGSCA­UNAM 2006
Transformación de modelos de OpenDX a VRML
4/7
En Data file poner el nombre del archivo a leer, en este caso: ”temp.00015”; en Grid size se pone el tamaño de la malla, que en este caso es de 49 x 49 x 49; en Grid positions escribir los valores del origen de la malla y el incremento en cada dirección, en este caso el origen es (0,0,0) y las deltas (1/48, 1/48, 1/48), es decir, en cada campo de texto origin, delta se debe poner 0, 0.020833333. En la región de la derecha en el campo de texto Field name, se debe escribir el nombre que se usará para el campo que se va a leer, en este caso poner Temperatura. Se puede observar que se enciende un botón amarillo, el cual indica que se debe presionar el botón Modify para salvar los cambios. Una vez que se presiona este botón, desaparece esta alerta. Seleccionar File > Save As... para guardar el archivo, poner la cadena ”temp” en el browser, OpenDx agregará a esta cadena la extensión “.general”, de tal manera, que el archivo final se llamará “temp.general”. Cerrar en File > Close.
4. Hacer lo mismo para la descripción de los datos contenidos en el archivo ”velc.00015” (repetir el paso 3). En este caso, seleccionar Column en Data order, escribir Velocidad en Field name y en Structure seleccionar 3­
vector, para que OpenDX sepa que se trata de un campo vectorial en 3D. Usar la cadena ”velc” para salvar el archivo de descripción y cerrar. Dado que el archivo “vort.00015” contiene el campo vectorial de la vorticidad, la descripción de estos datos es similar a la del archivo “velc.00015”, en este caso se puede usar Vorticidad en Field name y vort.general para guardadar la descripción.
5. Cerrar el Data prompter y OpenDX. En este momento debemos tener tres archivos que definen la estructura de los datos: ”temp.general”, ”velc.general” y ”vort.general”. Usaremos estos archivos para importar los datos en OpenDX. Los tres archivos deberían tener información similar a la que sigue (”temp.general”):
file = temp.00015
grid = 49 x 49 x 49
format = ascii
interleaving = record
majority = row
field = Temperatura
structure = scalar
type = float
dependency = positions
positions = regular, regular, regular, 0, 0.020833333, 0, 0.020833333, 0, 0.020833333
end
3. Visualización y conversión a VRML
En esta sección se verá cómo construir una visualización con varios elementos gráficos y posteriormente cómo transformarlos a formato VRML2.
1.
Ejecutar OpenDX y en el menú principal seleccionar New Visual Program..., esto abrirá el Visual Program Editor o VPU, figura 5. Del lado izquierdo se observa una lista de módulos que son utilizados para crear programas visuales. Del lado derecho se encuentra el canvas donde se realiza el programa visual.
2.
Seleccionar el módulo Import de la lista y posteriormente hacer click dentro del canvas con el botón izquierdo del ratón. De esta manera, se agregan módulos al programa visual.
3.
Agregar también los módulos ShowBox e Image. Conectar los módulos como se muestra en la figura 6 (a). Las conexiones se realizan pulsando el botón izquierdo del ratón en la salida del módulo correspondiente y luego, sin soltar, seleccionar una entrada de otro módulo, ahí soltar el botón del ratón.
L.M. de la Cruz, DGSCA­UNAM 2006
Transformación de modelos de OpenDX a VRML
5/7
Figura 5. Editor de programas visuales (VPU).
(a)
(b)
Figura 6. (a) Programa visual simple que muestra una caja, (b) Programa visual que genera un plano de corte coloreado, una isosuperfice y una caja.
4.
Hacer doble click en el módulo Import para obtener la caja de diálogo en donde se pueden modificar los parámetros de éste. En general, todos los módulos de OpenDX tienen tres secciones: Notation (nombre del módulo), Inputs (parámetros modificables por el usuario) y Outputs (las salidas que genera el módulo). En la sección Inputs, en la columna Value del renglón name, colocar el nombre del archivo que se va a importar, en este primer caso es ”temp.general”. Ejecutar en Execute >Execute Once del menú principal del VPU. Con esto obtenemos la ventana de imagen en donde se verá el resultado del programa visual (en este caso sólo la caja que rodea al dominio).
L.M. de la Cruz, DGSCA­UNAM 2006
Transformación de modelos de OpenDX a VRML
6/7
5.
Agregar ahora los módulos AutoColor, MapToPlane, Isosurface y Collect. Conectarlos como se muestra en la figura 6 (b). Para agregar más entradas al módulo Collect, primero lo seleccionamos y posteriormente vamos a Edit > Input/Output Tabs > Add Input Tab del menú principal del VPU.
6.
Si se desea se pueden modificar los parámetros de los módulos haciendo doble click en cada uno de ellos. Por omisión, AutoColor mapea el color rojo al máximo valor y azul al mínimo e interpola colores en valores intermedios; MapToPlane dibuja un plano en el centro de la caja; Isosurface dibuja una superficie donde la variable (temperatura) vale cero. La ejecución de este programa incorpora varios elementos gráficos a la visualización, los cuales se muestran en la figura 7.
Figura 7. Elementos gráficos generados por el programa de la figura 6 (b).
7.
Todos los elementos mostrados en la figura 7 pueden ser exportados al formato VRML. Para hacer esto se debe agregar el módulo Export. Conectar la salida de Collect a la primera entrada de Export. Abrir el módulo Export y escribir la cadena ”grafico” en el campo de texto de name, después elegir el formato “vrml” en format. Esto generará el archivo ”grafico.wrl”, el cual estará en formato VRML2.0. Ejecutar el programa una vez más y checar que se ha generado el archivo antes mecionado.
8.
Se recomienda guardar cada elemento gráfico por separado. La figura 8 muestra cómo hacer esto (usar nombres distintos en cada módulo Export).
Figura 8. Generación de tres archivos diferentes para cada elemento gráfico. L.M. de la Cruz, DGSCA­UNAM 2006
Transformación de modelos de OpenDX a VRML
9.
7/7
De igual manera, podemos visualizar y exportar elementos gráficos generados por un campo vectorial. La figura 9 (a) muestra un programa visual cuyo resultado se observa en la figura 9 (b).
(a)
(b)
Figura 9. (a) Programa visual que genera la visualización de la figura 12. En este caso se guardan todos los elementos gráficos en un solo archivo VRML2.0. (b) Listón y campo vectorial generado con el programa visual de la izquierda.
En el programa visual de la figura 9 (a) consiste de lo siguiente: se importa el archivo ”velc.00015”, del cual construimos la caja (ShowBox), hacemos una reducción por un factor de 3 con Reduce, después se construye un plano cuya normal es (­1,0,1), en este plano se dibujan flechas de tipo rocket, con shape = 0.5, y scale = 2.0. Luego se dibuja una trayectoria que sigue el flujo de la velocidad con StreamLine. El quinto parámetro de StreamLine recibe a la vorticidad como entrada para generar la torsión. Esta vorticidad se obtiene del archivo ”vort.00015”, el cual se importa con otro Import. Se colorea la trayectoria y se dibuja en modo listón con Ribbon.
4. Comentarios finales
Algunos visualizadores de VRML tienen problemas con los objetos dibujados con líneas (Amira por ejemplo). Para evitar problemas, se recomienda construir la caja de los ejemplos anteriores usando el modulo Tube y ajustar el diámetro del tubo. Conectar el módulo Tube como sigue: Streamline ­> Tube ­> Collect.
Referencias
[1] OpenDX, www.opendx.org.
[2] Departamento de Visualización: Documentos, www.labvis.unam.mx/recursos.html. L.M. de la Cruz, DGSCA­UNAM 2006
Descargar