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