В настоящее время я пытаюсь повернуть перспективную камеру вокруг точки поворота (0,0,0), однако получаю нежелательные результаты. Сама камера вращает свой взгляд, а не переводит камеру.
Поэтому я хотел бы, чтобы она всегда смотрела в сторону точки поворота (0,0,0) и перемещалась вокруг этой точки.
В настоящее время я вижу, как это поведение переводится по оси Z:
И это по оси Y:
Код:
private Rotate rotation;
private Translate pivot;
Camera camera = new PerspectiveCamera(true);
pivot = new Translate(0,0,0);
stage.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if(event.getCode() == KeyCode.A){
rotation = new Rotate(-1, 0,0,0, Rotate.Z_AXIS);
}
if(event.getCode() == KeyCode.D){
rotation = new Rotate(1, 0,0,0, Rotate.Z_AXIS);
}
if(event.getCode() == KeyCode.W){
rotation = new Rotate(-1, pivot.getX(), pivot.getY(), pivot.getZ(), Rotate.Y_AXIS);
}
if(event.getCode() == KeyCode.S){
rotation = new Rotate(1, pivot.getX(), pivot.getY(), pivot.getZ(), Rotate.Y_AXIS);
}
camera.getTransforms().add(rotation);
System.out.println("Camera: x"+camera.getTranslateX()+" y:"+camera.getTranslateY()+" z:"+camera.getTranslateZ());
});