Diferencia entre revisiones de «Tutorial:ODE y robots modulares:Caida libre (III)»
(→Conceptos previos) |
(→Movimiento de la cámara) |
||
Línea 109: | Línea 109: | ||
* '''Botón central''': Movimiento hacia arriba/abajo o izquierda/derecha | * '''Botón central''': Movimiento hacia arriba/abajo o izquierda/derecha | ||
Pulsando '''control-v''' se obtienen las coordenadas ''x,y,z'' y las orientaciones ''pitch, yaw, roll'' de la cámara. Esto nos permite introducirlas en nuestro código para que la cámara se sitúe inicialmente en el punto seleccionado. | Pulsando '''control-v''' se obtienen las coordenadas ''x,y,z'' y las orientaciones ''pitch, yaw, roll'' de la cámara. Esto nos permite introducirlas en nuestro código para que la cámara se sitúe inicialmente en el punto seleccionado. | ||
+ | Es posible también '''congelar la simulación''' pulsando '''control-P'''. Y utilizar los movimientos de la cámara para observar los objetos desde diferentes puntos de vista. | ||
== Descripción == | == Descripción == |
Revisión del 04:15 7 ene 2009
Contenido
[ocultar]Simulación de un cubo en caida libre (III): 3D
|
|
|
Introducción
En este ejemplo añadiremos visualización en 3D a la simulación del cubo en caida libre. Para ello utilizaremos la librería drawstuff, creada por Russell L. Smith (el autor del ODE). Esta, a su vez, utiliza OpenGL.
Las simulaciones con visualización en 3D son muy interesantes, ya que con un sólo golpe de vista nos permite conocer cómo ha evolucionado nuestro sistema. Sin embargo, es importante tener en cuenta que el ODE nos permite realizar simulaciones sin visualización. Esto es muy útil para realizar búsquedas mediante algoritmos genéritos, en las que hay que evaluar centenares de individuos intermedios. La visualización 3D se utiliza para observar los resultados obtenidos, pero no los el resto de individuos.
Objetivos
- Añadir visualización 3D a las simulaciones con ODE, usando la librería drawstuff.
Código
Programa principal | |
Creación y dibujo del cubo | |
Definición de las constantes. | |
Definición de los prototipos de body.cpp y las estructuras de datos. |
Compilación
Todos los ejemplos de este tutorial compilan tecleando "make". Sin embargo se describe a continuación cómo se compila directamente usando el GCC:
g++ -o box3 -Iinclude box3_ex/box3.cpp box3_ex/body.cpp libdrawstuff.a -lm -lode -lX11 -lGL -lGLU
Ejecución
Para probar el ejemplo, teclear:
./box3
En la consola aparecerán los siguientes mensajes. El primero lo genera la propia librería drawstuff. Muestra cuáles son las teclas que se pueden emplear para mover la cámara, parar la simulación, simular un paso, volcar las imágenes a ficheros, etc:
Simulation test environment v0.02 Ctrl-P : pause / unpause (or say `-pause' on command line). Ctrl-O : single step when paused. Ctrl-T : toggle textures (or say `-notex' on command line). Ctrl-S : toggle shadows (or say `-noshadow' on command line). Ctrl-V : print current viewpoint coordinates (x,y,z,h,p,r). Ctrl-W : write frames to ppm files: frame/frameNNN.ppm Ctrl-X : exit.
Change the camera position by clicking + dragging in the window. Left button - pan and tilt. Right button - forward and sideways. Left + Right button (or middle button) - sideways and up.
Los últimos mensajes los imprime la aplicación box3:
Keys: 1: Drop the box q: Quit
La tecla '1' sitúa la caja en su posición inicial, por lo que vuelve a caer. La tecla 'q' finaliza la simulación.
Capturas de pantalla
Visualización de la caida del cubo, en tres instantes diferentes:
Vídeo
![]() |
Video en MPEG |
Conceptos previos
Sistema de referencia
En la figura 1 se muestra el aspecto del mundo virtual dibujado con la librería drawstuff. Está formado por un cielo, el suelo y unos puntos de referencia en el suelo. El sistema de referencia es como el mostrado en la figura 2. El eje y se dirige hacia el punto azul y el eje x hacia el rojo.
Texturas y sombras
La librería drawstuff dibuja por defecto los objetos con texturas, incluyendo el suelo y el cielo, y proyecta las sobras de los objetos sobre el suelo. Esto da una mayor sensación de realismos (Figura 4). Sin embargo, para que las simulaciones se ejecuten más rápidamente, es posible eliminar las texturas pulsando control-T (Figura 5) y las sombras con control-S (figura 6).
Movimiento de la cámara
La drawstuff permite que el usuario pueda mover la cámara pinchando en la ventana de la simulación y arrastrando el ratón. Según el botón empleado se consiguen diferentes efectos:
- Botón izquierdo: Cambio de la orientación de la cámara. Hacia arriba y abajo (cabeceo) o hacia los lados (viraje)
- Botón derecho: Movimiento hacia adelante/atras o izquierda/derecha.
- Botón central: Movimiento hacia arriba/abajo o izquierda/derecha
Pulsando control-v se obtienen las coordenadas x,y,z y las orientaciones pitch, yaw, roll de la cámara. Esto nos permite introducirlas en nuestro código para que la cámara se sitúe inicialmente en el punto seleccionado. Es posible también congelar la simulación pulsando control-P. Y utilizar los movimientos de la cámara para observar los objetos desde diferentes puntos de vista.
Descripción
|
|
|