Constructores de ColorCube
Un ColorCube es un objeto visual, un cubo con un color diferente en cada cara. ColorCube extiende la clase Shape3D; por lo tanto, es un nodo hoja. ColorCube es fácil de usar cuando se pone junto a un universo virtual.
Añadir Comportamiento de Animación
- Crear un TransformGroup fuente.
- Selecciona la capacidad ALLOW_TRANSFORM_WRITE.
- Crear un objeto Alpha (función de tiempo en Java 3D)
- Especifica los parámetros de tiempo para el alpha
- Crear el objeto interpolator.
- Tiene referencias con los objetos Alpha y TransformGroup.
- Personalizar los parámetros del comportamiento.
- Especificar la región programada.
- Configura la región programada para el comportamiento.
- Hacer el comportamiento como hijo del TransformGroup
Especificar un Comportamiento de Animación
Lista Parcial de Constructores de RotationInterpolator
Esta clase define un comportamiento que modifica el componente rotacional de su TransformGroup fuente linearizando la interpoalización entre un par de ángulos especificados (usando el valor generado por el objeto Alpha especificado). El ángulo interpolado se usa para generar una transformación de rotación.
RotationInterpolator(Alpha alpha, TransformGroup target)
Este constructor usa valores por defecto de algunos parámetros del interpolador para construir una rotación completa sobre el eje y, usando el TransformGroup especificado.
Parámetros:
- alpha - la función de variación de tiempo para referencia.
- target - el objeto TransformGroup a modificar.
|
Funciones de Variación de Tiempo: Mapear un Comportamiento en el Tiempo
Constructor de Alpha
La clase Alpha proporciona objetos para convertir la hora en un valor alpha (un valor entre 0 y 1). El objeto Alpha es efectivamente una función de tiempo que genera valores alpha entre cero y uno. La función "f(t)" y las características del objeto Alpha están determinadas por parámetros definidos por el usuario:
Alpha()
Bucle continuo con un periodo de un segundo.
Alpha(int loopCount, long increasingAlphaDuration)
Este constructor toma sólo loopCount e increasingAlphaDuration como parámetros y asigna los valores por derecto a todos los demás parámetros, resultando un objeto Alpha que produce valores desde cero a uno crecientes. Esto se repite el número de veces especificado por loopCount. Si loopCount es -1, el objeto alpha se repite indefinidamente. El tiempo que tarde en ir desde cero hasta uno está especificando en el segundo parámetro usando una escala de milisegundos.
Parámetros:
- loopCount - número de veces que se ejecuta este objeto alpha; un valor de -1 especifica un bucle indefinido..
- increasingAlphaDuration - tiempo en milisegundos que tarda el objeto alpha en ir de cero a uno.
|
Región Progamada
Método setSchedulingBounds de Behavior
void setSchedulingBounds(Bounds region)
Selecciona la región programada del Behavior a unos límites especificados.
Parámetros:
- region - Los límites que contienen la región programada del Behavior.
|
Lista Parcial de Constructores de BoundingSphere
Esta clase define una región de límites esférica que está definida por un punto central y un rádio.
BoundingSphere()
Este constructor crea una límite esférico centrado en el origen (0, 0, 0) con un radio de 1.
BoundingSphere(Point3d center, double radius)
Construye e inicializa un BoundingSphere usando el punto central y el rádio especificados.
|
Construye un cubo de color del tamaño por defecto. Por defecto, una esquina está situada a 1 metro de cada uno de los ejes desde el origen, resultando un cubo que está centrado en el origen y tiene 2 metros de alto, de ancho y de profundo.
Construye un cubo de color escalado por el valor especificado. El tamaño por defecto es 2 metros de lado. El ColorCube resultante tiene esquinas en (scale, scale, scale) y (-scale, -scale, -scale).
En Java 3D, Behavior es una clase para especificar animaciones o interacciones con objetos visuales. El comportamiento puede cambiar virtualmente cualquier atributo de un objeto visual. Un programador puede usar varios comportamientos predefinidos o especificar un comportamiento personalizado. Una vez que se ha especificado un comportamiento para un objeto visual, el sistema Java 3D actualiza automáticamente la posición, la orientación, el color, u otros atributos del objeto visual.
La distinción entre animación e interacción es si el comportamiento es activado en respuesta al paso del tiempo o en respuesta a actividades del usuario, respectivamente.
Cada objeto visual del universo virtual puede tener sus propio comportamiento predefinido. De echo, un objeto visual puede tener varios comportamientos. Para especificar un comportamiento para un objeto visual, el programador crea objetos que especifiquen el comportamiento, añade el objeto visual al escenario gráfico y hace las referencias apropiadas entre los objetos del escenario gráfico y los objetos Behavior.
En un universo virtual con muchos comportamientos, se necesita una significante potencia de cálculo para calcular los comportamientos. Como tanto el renderizador como el comportamiento usan el mismo procesador, es posible que la potencia de cálculo que necesita el comportamiento degrade el rendimiento del renderizado.
Java 3D permite al programador manejar este problema especificando un límite espacial para que el comportamiento tenga lugar. Este límite se llama región programada. Un comportamiento no está activo a menos que el volumen de activación de ViewPlatformintereseccione con una región progamada del Behavior. En otras palabras, si nadie en el bosque ve el árbol caer, éste no cae. La característica de región programada hace más eficiente a Java 3D en el manejo de universos virtuales con muchos comportamientos.
Un Interpolator es uno de las muchas clases de comportamientos predefinidos en el paquete corazón de Java 3D. Basado en una función de tiempo, el objeto Interpolator manipula los parámetros de un objeto del escenario gráfico. Por ejemplo, para el RotationInterpolator, manipula la rotación especificada por un TransformGroup para afectar la rotación de los objetos visuales que son ancestros de TransformGroup.
La siguiente lista enumera los pasos envueltos para especificar una animación con un objeto interpolator. Los cinco pasos forman una receta para crear un comportamiento de animación con interpolación:
Una acción de comportamiento puede ser cambiar la localización (PositionInterpolator), la orientación (RotationInterpolator), el tamaño (ScaleInterpolator), el color (ColorInterpolator), o la transpariencia (TransparencyInterpolator) de un objeto visual. Como se mencionó antes, los Interpolators son clases de comportamiento predefinidas. Todos los comportamientos mencionados son posibles sin usar un interpolator; sin embargo, los interpolators hacen mucho más sencilla la cracción de comportamientos. Las clases Interpolators existen para proporcionar otras acciones, incluyendo combinaciones de estas acciones.
Clase RotationInterpolator
Esta clase se usa para especificar un comportamiento de rotación de un objeto visual o de un grupo de objetos visuales. Un objeto RotationIterpolator cambia un objeto TransformGroup a una rotación especififca en repuesta a un valor de un objeto Alpha. Como el valor de este objeto cambia cada vez, la rotación también cambia. Un objeto RotationInterpolator es flexible en la especificación del eje de rotación, el ángulo de inicio y el ángulo final.
Para rotaciones constantes sencillas, el objeto RotationInterpolator tiene el siguiente constructor que puede usarse para eso:
El objeto TransformGroup de un interpolador debe tener la capacidad de escritura activada.
Mapear una acción en el tiempo se hace usando un objeto Alpha. La especificación de este objeto puede ser compleja.
Clase Alpha
Los objetos de la clase Alpha se usan para crear una función que varía en el tiempo. La clase Alpha produce un valor entre cero y uno, inclusives. El valor que produce depende de la hora y de los parámetros del objeto Alpha. Los objetos Alpha se usan comunmente con un comportamiento Interpolator para proporcionar animaciones de objetos visuales.
Alpha tiene diez parámetos, haciendo la programación tremendamente flexible. Sin entrar en detalles de cada parámetros, saber que un ejemplar de Alpha puede combinarse fácilmente con un comportamiento para proporcionar rotaciones sencillas, movimientos de péndulo, y eventos de una vez, como la apertura de puertas o el lanzamiento de cohetes.
Como se mencionó anteriormente, cada comportamiento tiene unos límites programados. Estos límites se configuran usando el método setSchedulingBounds de la clase Behavior.
Hay varias formas de especificar una región programada, la más sencilla es crear un objeto BoundingSphere. Otras opciones incluyen BoundingBox y BoundingPolytope.
Clase BoundingSphere
Especificar un límite esférico se consigue especificando un punto central y un rádio para la esfera. El uso normal de este tipo de límites es usar el centro a (0, 0, 0). Entonces el radio se selecciona lo suficientemente grande como para contener el objeto visual, incluyendo todas las posibles localizaciones del objeto.
|