En Java3D, las modificaiones a las escenas creadas se hacen a traves de
clases de tipo Behavior, dentro de las clases incluidas en la
distribución de Java3D se encuentran interpoladores de rotacion,
traslacion y escalamiento; asi como receptores de eventos del maouse y teclado.
Dependiedo del tipo de Behavior, es el nodo en la escena que es cambiado, en
el caso de los Behaviors de movimiento, ellos cambian un TransformGroup, mientras
que el interpolador de color modifica un material.
Para poder cambiar las caracteriticas del elemento del grafo requerido, los
Behaviors deben recibir referencias a los nodos o componentes a modificar.
Este grupo de clases atrapa los eventos de Mouse y los usa para rotar, trasladar y hacer
zoom a los objetos en la escena; normalmente se asocian al ViewPlataform para
manejar la visualizacion de la escena en forma interactiva.
Key Behavior
Esta clase atrapa los eventos del teclado para manejar la visualizacion de la
escena. Al igual que los Mouse Behavior normalmente se asocia al ViewPlataform
Interpolator
La lista de interpoladores asi como la informacion que cambian se ve en la siguiente tabla:
Behavior | Target Type |
ColorInterpolator | Material |
PathInterpolator | TransformGroup |
PositionInterpolator | TransformGroup |
RotationInterpolator | TransformGroup |
ScaleInterpolator | TransformGroup |
SwitchValueInterpolator | Switch |
TransparencyInterpolator | TransparencyAttributes |
En la mayoria de las aplicaiones uno quiere tener el control sobre los cambios
que se producen en la escena, en esta caso es necesario escribir nuestros propios
Behavior, ya sean estos para generar una animación, como para interactuar
de forma adecuada con el usuario.
Para crear nuestros proios Behaviors se puede seguir la siguiente receta:
Como se ve en la receta los Behaviors utilizan un sistema de cirterios para despertar,
estos criterios están definidos en las clases que heredan de WakeupCondition.
Para ver los posibles criterios aqui se presenta la herarquia de los WakeupCondition
Dentro de los mas útiles están las clases WakeupOnAWTEvent y
WakeupOnElapsedTime ya que con el primero se puede manejar toda la interaccion con el
ususario, y con el segundo crear animaciones.
Los constrcutores para cada uno de estos dos tipos de WakeupCondition son los siguientes:
Aqui se presenta una simple receta, para el uso de los Behaviors:
A continuación se meustran dos grafos con Behaviors incluidos: El primero modifica el TransformGroup,
el segundo la apariencia del Shape3D