11.07.2015 Views

Download document (10.35 MB) - Escuela Superior de Informática ...

Download document (10.35 MB) - Escuela Superior de Informática ...

Download document (10.35 MB) - Escuela Superior de Informática ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.2. Líneas <strong>de</strong> investigación abiertas 129edición fuera necesaria en el menor número <strong>de</strong> casos posibles.Así, la mejora <strong>de</strong>l módulo <strong>de</strong> edición permitirá ahorrar tiempo, incluso en aquellas capturasque requieran poca intervención directa <strong>de</strong>l usuario.La mejora consistiría en modificar directamente la posición <strong>de</strong> las marcas en el mo<strong>de</strong>lo3D mediante el uso <strong>de</strong>l ratón o el teclado. Para ello, el primer paso sería seleccionar el objetoen el espacio 3D a mover. OpenGL proporciona el modo ren<strong>de</strong>rizado GL SELECTION,aunque es posible utilizar otros métodos. Uno <strong>de</strong> ellos sería dibujar cada marca con un colordiferente, mediante la primitiva glReadPixels se podría leer el píxel <strong>de</strong> la ubicación <strong>de</strong>lpuntero <strong>de</strong>l ratón y, examinando el color, se podría <strong>de</strong>terminar qué marca se ha seleccionado.Otra opción sería disparar un rayo <strong>de</strong>s<strong>de</strong> el puntero <strong>de</strong>l ratón y obtener los objetos en los queintersecciona. Mediante una doble llamada a la función gluUnProject <strong>de</strong>s<strong>de</strong> la posición <strong>de</strong>lratón, se obtendría el plano cercano (con winz = 0,0) y el plano lejano (con winz = 1,0).Con los resultados obtenidos <strong>de</strong> la plano cercano restados a los <strong>de</strong>l plano lejano se obtendríael vector <strong>de</strong> dirección XY Z <strong>de</strong>l rayo trazado.Volviendo a la opción <strong>de</strong>l modo SELECT, para realizar una selección se le <strong>de</strong>be indicar aOpenGL el modo <strong>de</strong> trabajo mediante:glRen<strong>de</strong>rMo<strong>de</strong> ( GL SELECT ) ;y se <strong>de</strong>be <strong>de</strong>signar un array para ser usado como buffer en el que OpenGL <strong>de</strong>vuelva lainformación <strong>de</strong> selección:GLuint b u f f e r [ n ] ;g l S e l e c t B u f f e r ( n , b u f f e r ) ;<strong>de</strong>spués se fijaría la transformación <strong>de</strong> proyección,glMatrixMo<strong>de</strong> ( GL PROJECTION ) ;g l L o a d I d e n t i t y ( ) ;indicando como primera transformación (la última que se realizará), la transformación ala ventana <strong>de</strong> selección, en torno al cursor. Esto se llevará a cabo mediante la llamada:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!