JavaFX: перемещение камеры вокруг точки поворота Неожиданное поведение - PullRequest
2 голосов
/ 18 октября 2019

В настоящее время я пытаюсь повернуть перспективную камеру вокруг точки поворота (0,0,0), однако получаю нежелательные результаты. Сама камера вращает свой взгляд, а не переводит камеру.

Поэтому я хотел бы, чтобы она всегда смотрела в сторону точки поворота (0,0,0) и перемещалась вокруг этой точки.

В настоящее время я вижу, как это поведение переводится по оси Z:

Z Axis

И это по оси Y:

Y Axis

Код:

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());
    });
...