CURSO VRML |
|
entrega 18
-------------------------------------------------------------------------
6.10- Nodos GEOMETRICOS. Consideraciones / Ejemplos.
La unica innovación significativa en el tema de nodos geometricos incor-
porada en la versión 2.0 concierne al nodo EXTRUSION.
Extrusion($crossSection, $spine, $scale, $orientation, $beginCap, $endCap,
$creaseAngle, $solid, $convex, $ccw)
El nodo Extrusión constituye un importante recurso de apoyo a la genera-
cion de formas en VRML, ya que permite especificar formas geométricas
basadas en una seccion transversal bidimensional extruida siguiendo un
"espinazo" o curva tridimensional constituida por una serie de vertices
conectados secuencialmente . Dicha seccion puede ser cambiada de escala
y rotada en cada punto del "espinazo" para producir una amplia variedad
de formas.
Recuerdese que la acción de EXTRUIR en el mundo real equivale a producir
una forma al empujar una masa en estado plastico -llamese arcilla, acero
o pasta de dientes- a traves de una abertura que posee una determinada
forma. El caso mas sencillo es el del tubo de pasta de dientes que utili-
zamos cada mañana, presionandolo con nuestros dedos para hacer emerger la
pasta almacenada en el. Tambien, y en un plano mas tecnico se utiliza es-
ta tecnica para producir bloques huecos de arcilla o perfiles de acero
empleados en construccion una vez rigidizados.
En el caso de la extrusión virtual, a la que aqui nos referimos, una des-
cripcion tecnica del proceso para construir formas mediante esta tecnica
es la siguiente:
a) Se precisa la forma de la curva que tendra la seccion transversal
de extrusion a ser utilizada. Esta seccion se aloja en el plano XZ
e, inicialmente se le asignara una determinada escala. Para ello,
se utilizara el parametro de ESCALA ("scale"), donde su primer
valor permite escalar la dimension X y su segundo valor permite
escalar la dimension Z.
b) Seguidamente, se rota la sección inicial (Campo "beginCap") alre-
dedor de su origen, utilizando para ello el primer parametro de
ORIENTACION y se la translada, siguiendo el vector dado, para
ubicarla como el primer vertice de la "espina" o "espinazo"
a lo largo de la cual se cumplira el proceso de extrusion.
c) Se extruye el primer tramo de la forma uniendo, a traves del
espacio, las dos secciones ya definidas ("beginCap", "endCap)..
d) Se repite el proceso descrito en a), b) y c) pero aplicándolo al
vertice en el cual se encuentra ahora la forma extruida.
-------------------------------------------------------------------------
6.11- Nodos.INTERPOLADORES. Consideraciones / Ejemplos.
CONSIDERACIONES
Los nodos interpoladores han sido diseñados para apoyar animación basada
basada en cuadros clave ("keyframed"). Existen seis tipos de nodos inter-
poladores, cada uno de ellos basado en el tipo de valor que sera inter-
polado.
- COLORINTERPOLATOR
- COORDINATEINTERPOLATOR
- NORMALINTERPOLATOR
- ORIENTATIONINTERPOLATOR
- POSITIONINTERPOLATOR
- SCALARINTERPOLATOR
Todos los nodos interpoladores comparten un conjunto comun de campos y de
semantica.
Un nodo interpolador define a una función lineal "piecewise" f(t) en el
intervalo (-infinito, infinito).dicha funcion está definida por n valores
de t, denominados clave ("key"), y los n correspondientes valores de f(t)
denominados valor de clave ("keyValue).Las claves deberan ser monotonicas
no decrecientes y no estan restringidas a ningun intervalo. Un nodo
interpolador evalua f(t) para cualquier valor dado de "t", utilizando
para ello set_fraction eventIn.
La ubicacion de un nodo interpolador en el grafo escena no afecta su
operacion. Por ejemplo, si un nodo "padre" de un nodo interpolador es un
nodo "Switch" con un campo "whichChoice" fijado en -1 (es decir ignorar
los nodos "hijos"), el interpolador continuara especificando como previa-
mente estaba estipulado (recibe y envia eventos).
EJEMPLO:
El siguiente ejemplo ilustra el uso de un "Scalar interpolator" simple
Que contiene una lista de valores flotantes ("float values") (11.0, 99.0
Y 33.0), los tiempos de "keyframes" (0.0, 5.0, y 10.0), y da como resul-
Tado un valor unico flotante para cualquier tiempo:
ScalarInterpolator {
key [ 0.0, 5.0, 10.0]
value [11.0, 99.0, 33.0]
}
Para un "n" input de 2.5 (via set_fraction), este "ScalarInterpolator"
Enviaria un valor de salida de:
eventOut SFFloat value_changed 55.0
# = 11.0 + ((99.0-11.0)/(5.0-0.0)) * 2.5
A lo que el "CoordinateInterpolator" mencionado abajo definira un arreglo
de coordenadas para cada valor "keyframe" y seguidamente enviara un
arreglo de coordenadas como salida:
CoordinateInterpolator {
key [ 0.0, 0.5, 1.0]
value [ 0 0 0, 10 10 30, # 2 keyValue(s) at key 0.0
10 20 10, 40 50 50, # 2 keyValue(s) at key 0.5
33 55 66, 44 55 65 ] # 2 keyValue(s) at key 1.0
}
En este caso, existiran dos coordenadas por cuadro ("frame"). Las prime-
ras dos coordenadas (0,0,0) y (10,10,30) representen el valor del cuadro
0.0; las segundas coordenadas (10,20,10) y (40,50,50) representan ese
valor en el cuadro 0.5 y asi sucesivamente.
-------------------------------------------------------------------------
6.12- Nodos SENSORES. Consideraciones / Ejemplos.
Existen diferentes tipos de nodos sensores entre los que destacan:
- ProximitySensor
- TimeSensor
- VisibilitySensor
Asi como una variedad de otros recursos sensores denominados dispo-
Sitivos señaladores ("Pointing Devise Sensors") y arrastradores:
- Anchor.
- CylinderSensor
- PlaneSensor
- SphereSensor
- TouchSensor
Los sensores son nodos "hijos" en la jerarquía y, por tanto, deben
hallarse prohijados por nodos de agrupación.
Existen tres tipos de Nodos Sensores: Los nodos sensores basicos,los nodos
señaladores y los nodos de arrastre.
a)- Son Nodos SENSORES BASICOS :
el ProximitySensor, el TimeSensor y el VisibilitySensor.
b)- Son Nodos SEÑALADORES ("pointing device sensors "):
el TouchSensor, el PlaneSensor yel SphereSensor.
c)- Son Nodos ARRASTRADORES ("Drag Sensors")
el CylinderSensor, el PlaneSensor y el SphereSensor.
Las principales caracteristicas de estos tres grupos de Nodos son:
A- NODOS SENSORES BASICOS
El PROXIMITYSENSOR detecta cuando el participante navega una region
invisible, especificada, del mundo. Es decir, cuando aquel entra, sale y
se mueve dentro de una region del espacio (definida por una caja). Un
sensor de proximidad puede ser activado o desactivado mediante el envio
de un evento capacitado ("enabled event") con un valor de TRUE o FALSE.
Un evento discapacitado no envia eventos de salida. La caja antes men-
cionada esta definida por sus campos de centro y de tamaño. El campo
centro define el punto central de la region de proximidad en el espacio
del objeto. El campo tamaño ("size") especifica un vector que contiene
el ancho (x) la altura (y) y la profundidad (z) de la caja que abarca
la region.
Los sensores de proximidad son afectados por las transformaciones jerar-
Quicas de sus nodos padres.
El TIMESENSOR constituye un reloj sin geometria ni ubicacion asociada a
el. Es utilizado para activar y detener nodos basados en tiempo tales
como los interpoladores.
Los TimeSensors generan eventos mientras transcurre el tiempo. Son utili-
zados para motorizar simulaciones y animaciones continuas y, en general,
actividades periodicas (p.ej. una actividad por minuto) y/o eventos de
ocurrencia individual tales como un reloj con alarma.
El VISIBILITYSENSOR detecta cuando una parte especifica del mundo se hace
invisible al usuario. Este sensor detecta cambios de visibilidad de una
caja rectangular a medida que el usuario navega el mundo. El sensor de
visibilidad es utilizado tipicamente para detectar cuando el usuario puede
ver un objeto o region especifica en la escena y para activar o desactivar
algun comportamiento o animacion con el objeto de atraer al usuario a
mejorar su comportamiento.
Los sensores de proximidad, tiempo y visibilidad son aditivos. Cada uno se
procesa independientemente a despecho que los otros existan o se solapen.
B- NODOS SEÑALADORES ("Pointing Devise Sensors")
--> TOUCHSENSOR
--------------
--> PLANESENSOR
----------
--> SPHERESENSOR
------------
Los DISPOSITIVOS SEÑALADORES sirven para detectar aquellos eventos tales
como la activacion por el participante de una determinada pieza geometrica
(por ejemplo TouchSensor).
C- NODOS ARRASTRADORES ("Drag Sensors")
--> CYLINDERSENSOR
--------------
--> PLANESENSOR
----------
--> SPHERESENSOR
------------
Los sensores de arrastre, o arrastradores, constituyen un subconjunto de
Los sensores señaladores. . Son aquellos sensores en los que los movimien-
Tos del puntero ocasionan la generacion de eventos de acuerdo a la "forma
"virtual" del sensor. Por ejemplo la salida del SphereSensor conduce a
al giro, por parte del usuario, de un objeto alrededor del centro del
mencionado sensor.
...sigue
|
|