BogotaClimateChange:Climate Simulation Visualization
From hpcwiki
Revision as of 17:07, 1 October 2013 by Jvictorinog (Talk | contribs)
Contents |
WRF Data Extraction
path scripts to generate fields
/home/jvictorino/wrf/scripts
path fields data generated
/home/jvictorino/wrf/wrf_data
4D fields generated {lats 287, lons 280, levs 34, times 265} XX corresponds with time index:
- tempXX.dat: temperature
- PsXX.dat: pressure
- UXX.dat: Meridional component of wind
- VXX.dat: Zonal component of wind
- WXX.dat: Verical component of wind
3D fields generated {lats 287, lons 280, times 265}:
- relhum.dat: Relative Humidity
- raina.dat: acummulated rain
- cldfrac.dat: cloud fraction
Terrain Elevation Rendering
Data source: ASTER_GDEM
Demo versión 0.1 de Render de elevación del terreno en los cerros orientales de Bogotá, resolución 30 metros, región de 5.4 Km x 5.4 Km. Usando OpenGL.
Temperature 3D, 10 layers, selected region.
Physically-based Cloud Generation
GUI OpenGL
Elementos de la libreria
Estructura de la interfaz
Funcionamiento básico
Orden de llamados:
- Constructor de la clase Widget
- Constructor de la ventana de usuario que desciende de Widget
- Constructor WrapperGL
- Llamado a la función init() de la ventana llamada por WrapperGL::init()
- Llamado a la función resize() de la ventana llamada por WrapperGL::reshape()
- Llamado a la función draw() de la ventana llamada por WrapperGL::glut_display()
- Automáticamente se llama por segunda a la función draw() de la ventana
- El motor gráfico queda escuchando los eventos activados
La función WrapperGL::reshape() configura una proyección de perspectiva. Y en la función WrapperGL::glut_display() configura una proyección Ortogonal
-Estado inicial de OpenGL
- Widget::Widget()
- Window::Window()
- No usar directivas de OpenGL
- WrapperGL::WrapperGL()
glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); glutInitWindowSize(pmain_widget->get_width(), pmain_widget->get_height()); if(gameMode){ glutGameModeString("800x600:32@60"); glutEnterGameMode(); } else glutCreateWindow(pmain_widget->get_title().c_str()); glClearColor(1.0, 1.0, 1.0, 0.1); glutDisplayFunc(glut_display); glutReshapeFunc(glut_reshape); glutMouseFunc(glut_mouse_press); glutMotionFunc(glut_mouse_drag); glutPassiveMotionFunc(glut_mouse_move); glutKeyboardFunc(glut_key_pressed); glutKeyboardUpFunc(glut_key_released); glutSpecialFunc(glut_special_key_pressed); glutSpecialUpFunc(glut_special_key_released);
- WrapperGL::init()
glClearColor(c[0], c[1], c[2], c[3]);
- Window::init()
- Espacio disponible para configurar el estado de OpenGL, excepto la proyección
- Antes de ejecutar glutMainLoop()
- WrapperGL::reshape()
glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (double)w/h, 1, 10000); glMatrixMode(GL_MODELVIEW);
- Window::resize()
- No cambiar perspectiva
- Cambiar propiedades de los Widgets para ajustar a las nuevas dimensiones
- WrapperGL::glut_display()
glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D(0, w, 0, h); glScalef(1, -1, 1); glTranslatef(0, -h, 0);
glMatrixMode(GL_MODELVIEW); glPushMatrix(); pmain_widget->draw(); // Draw de la ventana glPopMatrix(); glutSwapBuffers();
- Window::draw()
- Pintar escena 3D y widgets
- Window::draw()
- glut_exec()...
-Funciones y utilidades de OpenGL
Visualización de campos WRF
Descripción de objetos
TODO List
- Propose a model for cloud generation based on single cells in a simulation domain (WRF)