Gire un objeto 3D en 3 ejes en JavaFX correctamente
Entonces, el método que he usado hasta ahora para rotar objetos en JavaFX fue que lo coloqué en 3 grupos, cada uno de ellos con una rotación adjunta y bloqueada en un solo eje de esta manera:
Rotate heading, roll, pitch;
Group normalrotate, rollrotate, verticalrotate;
heading.setAxis(new Point3D(0,1,0));
normalrotate.getTransforms().add(heading);
roll.setAxis(new Point3D(0,0,1));
rollrotate.getTransforms().add(roll);
pitch.setAxis(new Point3D(1,0,0));
verticalrotate.getTransforms().add(pitch);
e hice un setAngle () por cada vez que necesitaba rotar el objeto. Esto funcionó muy bien solo para rumbo y balanceo hasta que decidí que también necesitaba lanzar. Ahora, muchos tutoriales para OpenGL y similares dicen que las mezclas rotatorias o los cuaterniones son los mejores para este tipo de rotaciones, pero el javadoc carece de datos útiles que lo registren.
Ejemplo: lo que sucede cuando giro un objeto 180 grados en el eje y (y lo que debería haber sucedido en azul transparente) ¿Me estoy perdiendo de algo? Toda ayuda será apreciada.