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.

Documentos relacionados