elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Anomación Java3D
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Anomación Java3D  (Leído 1,535 veces)
Fonsito19

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Anomación Java3D
« en: 6 Octubre 2013, 23:54 pm »

Hola gente!!

  Estoy desarrollando el juego del air-hockey en Java3D. Ya tengo implementados los métodos más importantes para poder probar la aplicación completa.
  Tengo las siguientes clases: una clase Mazo, una llamada Disco, otra Mesa y otra en la que junto todos los objetos y dibujo la escena (clase principal).

  Cuando muevo el mazo hacia el disco y este detecta una cierta distancia límite, significa que hay colisión y, por tanto, que el mazo al golpear el disco este se ha de mover en función del ángulo y velocidad que el mazo le imprima.
   Esto funciona correctamente, el disco se mueve a su posición destino; sin embargo, me gustaría que en lugar de que el disco se cambie de posición directamente de un punto a otro, se deslizara para crear la apariencia real de este juego. Es decir, añadir una animación al movimiento.

  Dando un vistazo a mi manual de Java 3D he visto que hay clases que extienden de: Interpolator. Viendo un ejemplo de una concreta: PositionPathInterpolator, me pareció la más idónea para mi juego.
Así que la adapte y añadí un método que se encargará de la animación y es el siguiente:


public PositionPathInterpolator animacionDisco() {

   Alpha rotAlpha = new Alpha();
   rotAlpha.setMode(Alpha.INCREASING_ENABLE);
   rotAlpha.setLoopCount(1);
   rotAlpha.setIncreasingAlphaDuration(500);

   Point3f[] pos = new Point3f[2];
   pos[0] = UtilidadesGeometria.Vector3f2Point3f(objeto.getDisco().getPosicion());
   pos[1] = UtilidadesGeometria.Vector3f2Point3f(objeto.getDisco().getPosicionDestino());
   //pos[2] = UtilidadesGeometria.Vector3f2Point3f(objeto.getDisco().getPosicionDestino());
         
   PositionPathInterpolator rotPosInterpolation = new
   PositionPathInterpolator(rotAlpha, modificarTG, translation, knots, pos);

   rotPosInterpolation.setSchedulingBounds(bounds);
   rotPosInterpolation.setEnable(true);
   rotPosInterpolation.setKnot(0,knots[0]);
   rotPosInterpolation.setKnot(1,knots[1]);
   //rotPosInterpolation.setKnot(2,knots[2]);

   return rotPosInterpolation;
}

  Donde modificarTG es de tipo TransformGroup, atributo de la clase que apunta al TransformGroup del propio disco; y translation es de tipo Transform3D, atributo de la clase y que se inicializa por medio de su constructor por defecto.
Este método está dentro de la clase que controla el comportamiento del Disco cuando se mueve.

  La llamada al método anterior se hace de la siguiente forma:

BranchGroup nuevoBG = new BranchGroup();         
nuevoBG.addChild(animacionDisco());      
nuevoBG.compile();
locale.addBranchGraph(nuevoBG);

  Creo una nueva rama BranchGroup a la que añado la animación y posteriormente se la añado al locale general de la escena que se le pasa por parámetros a esta clase.

  La cuestión es que tal y como está ahora mismo, los movimientos son estáticos, es decir, desaparece de un punto y aparece en otro pero el movimiento no es por animación, sin embargo, si comento la llamada al método como es lógico el disco no se mueve. Lo que significa que entra en el método animación pero no lo llega a hacer.

¿Podéis indicarme por dónde puede ir el fallo o posibles soluciones?
Muchas gracias!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Java3d: Textura de cubo en java3D sale semitransparente
Java
Nabucodonosor 0 5,666 Último mensaje 20 Mayo 2010, 00:47 am
por Nabucodonosor
Ejemplos Java3d
Java
Shon 2 12,349 Último mensaje 4 Noviembre 2010, 19:53 pm
por Shon
como crear un programa en 3d con java3d
Java
fernandocap 0 1,889 Último mensaje 24 Marzo 2013, 16:50 pm
por fernandocap
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines