Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web








CURSO VRML
por el arquitecto y profesor
Gonzalo Vélez Jahn
(ARQUITECTURA-L)



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


Siguiente entrega.
Indice del CURSO VRML.