JavaFX:围绕枢轴点移动摄影机

JavaFX:围绕枢轴点移动摄影机,java,javafx,javafx-3d,Java,Javafx,Javafx 3d,我目前正试图围绕轴心点(0,0,0)旋转透视摄影机,但结果不理想。摄影机本身正在旋转其视图,而不是平移摄影机 因此,我希望它始终朝向轴心点(0,0,0),并围绕该点进行平移 目前,我看到这种行为在Z轴上转换: 在Y轴上: 代码: 我们应该调试我们看不见的代码吗?@TheHeadRush-oops-hahaha,我忘了粘贴它了@现在是头灌木丛加进去的!为什么你要积累新的旋转变换,而不是应用单个变换并修改其属性(角度、轴、轴)?@JoséPereda oh!我不知道你能做到,那么你会怎么做呢?

我目前正试图围绕轴心点(0,0,0)旋转透视摄影机,但结果不理想。摄影机本身正在旋转其视图,而不是平移摄影机

因此,我希望它始终朝向轴心点(0,0,0),并围绕该点进行平移

目前,我看到这种行为在Z轴上转换:

在Y轴上:

代码:


我们应该调试我们看不见的代码吗?@TheHeadRush-oops-hahaha,我忘了粘贴它了@现在是头灌木丛加进去的!为什么你要积累新的
旋转
变换,而不是应用单个变换并修改其属性(角度、轴、轴)?@JoséPereda oh!我不知道你能做到,那么你会怎么做呢?
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());
    });