Difference between revisions of "BogotaClimateChange:Climate Simulation Visualization"
From hpcwiki
Jvictorinog (Talk | contribs) (→Funcionamiento básico) |
Jvictorinog (Talk | contribs) (→Orden de llamados:) |
||
Line 46: | Line 46: | ||
La función WrapperGL::reshape() configura una proyección de perspectiva. Y en la función WrapperGL::glut_display() configura una proyección Ortogonal | 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() | * Widget::Widget() | ||
* Window::Window() | * Window::Window() | ||
Line 101: | Line 101: | ||
− | + | ====Funciones y utilidades de OpenGL==== | |
== Visualización de campos WRF == | == Visualización de campos WRF == |
Revision as of 17:10, 1 October 2013
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 en Draw de la ventana
- 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)