Toolkits – Marcos García Ejercicio 1: Visualizador de
Transcripción
Toolkits – Marcos García Ejercicio 1: Visualizador de
Toolkits – Marcos García Ejercicio 1: Visualizador de ficheros IV y VRML Implementa un visualizador de ficheros IV y VRML, utilizando Open Inventor. Uso de la aplicación - nombre_app fichro.iv/wrl Consejos - Intenta que el código sea portable Pistas: - Inicializa la base de datos y la librería de componentes: o SoWin::init() o SoXt::init() … Utiliza un visualizador de la librería de componentes o So???ExaminerViewer, So???PlaneViewer Para la lectura del fichero utiliza la clase SoFile y la función SoBD::readAll Ejercicio 2: Visualizador de una escena simple Implementa el visualizador de un cono. a) En un primer paso utiliza varios visualizadores y constata las diferencias que existen entre ellos. b) Introduce los cambios necesarios en el árbol de escena para poder utilizar un RenderArea (Introduce una cámara y un foco de luz) Scene Graph a) b) Pistas - No te olvides del realizar un ref() de nodo root Toolkits – Marcos García Ejercicio 3: Visualizador de una escena simple II Implementa un programa que visualice la escena que se muestra a continuación. Scene Graph Notas - m_gorro: diffuseColor = [1,0,0] t_gorro: translation = [0,1.5,0] m_cara: diffuseColor = [0,0,1] m_ojo: diffuseColor = [1,1,0] ojo: radius = 0.2 t_ojo_der: translation = [0.3,0.2,0.8] t_ojo_izq: translation = [-0.3,0.2,0.8] Toolkits – Marcos García Toolkits – Marcos García Ejercicio 4: Manipuladores, Motores, Eventos, Sensores Implementa un lector de ficheros VRML y IV, introduce dos draggers que manipulen la escena. Pasos a) Crear la escena que se muestra a continuación b) Conectar los campos que se indican en el diagrama del Scene Graph. a. Conectar la rotación del dragger rot_drag con la rotacion del nodo t_fich b. Conectar la traslación del dragger tras_drag con una de las entradas del motor tras_mot c. Conectar la posición de la cámara cam con una de las entradas del motor tras_mot d. Conectar una salida del motor tras_mot con el campo traslación de t_fich e. Incluir en el motor tras_mot la expresión que se indica a continuación Salida = Entrada_dragger*Entrada_camara[2]/5 c) Añade una funcion callback asociada a los eventos de teclado, de forma que cada vez que: o se pulse una “t” se muestre el dragger encargado de la traslación o se pulse una “r” se muestre el dragger encargado de la rotación o se pulse una “n” se oculten todos los draggers d) Crea un sensor del tipo timer que se active 25 veces por segundo. Cada vez que se active, el viewer renderizará la escena Scene Graph Toolkits – Marcos García - - o_cam: position = [0, 0, 10] nearDistance = 8 farDistance = 50 rot_drag : clase SoTrackballDragger tran_drag: clase SoTranslate1Dragger tras_mot: clase SoCalculator; Uso de la aplicación - nombre_app fichro.iv/wrl Pistas - Pasa a la función encargada de realizar el render (TimeSensorCallback) el visualizador. Puedes utilizar la macro SO_KEY_PRESS_EVENT (evento, TECLA) para comprobar si la TECLA ha sido pulsada. Obliga al viewer a que el renderizado sea bajo petición, utilizando el método setAutoRedraw(FALSE); Notas: - Date cuenta de la diferencia entre manipular la escena con los draggers o manipularla con las funciones del visualizador. El visualizador mueve la cámara, los draggers mueven la escena.