¿Cómo rotar un objeto en Java 3D?

Tengo un cono que dibujé en Java 3D con el siguiente código:

Cone cone = new Cone(2f, 3f);

Transform3D t3d = new Transform3D();
TransformGroup coneTransform = new TransformGroup(t3d);
coneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

t3d.setTranslation(new Vector3f(0f,0f,0f);
coneTransform.setTransform(t3d);
coneTransform.addChild(cone);

this.addChild(coneTransform);

Supongamos que tengo el cono sentado en el punto (1,1,1) y quiero que la punta del cono apunte hacia abajo una línea imaginaria que atraviesa (0,0,0) y (1,1,1) ... cómo ¿Puedo hacer esto?

Aquí hay un ejemplo de lo que he estado intentando:

Transform3D t3d = new Transform3D();  

Vector3f direction = new Vector3f(1,2,1);    

final double angleX = direction.angle(new Vector3f(1,0,0));
final double angleY = direction.angle(new Vector3f(0,1,0));
final double angleZ = direction.angle(new Vector3f(0,0,1));

t3d.rotX(angleX);
t3d.rotY(angleY);
t3d.rotZ(angleZ);

t3d.setTranslation(direction);

coneTransform.setTransform(t3d);

¡Gracias de antemano por toda la ayuda!

Respuestas a la pregunta(5)

Su respuesta a la pregunta