我想知道是否有可能在JavaFX中的正方形上执行透视旋转。当我通常在x轴上旋转它时,我只得到一个压缩的正方形,但是我想用透视来模拟真实的旋转。结果应该看起来像这样
当然取决于学位。有没有办法实现这一点,最好的情况是可以指定一定程度。
以下是压缩代码:
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
Rectangle rectangle = new Rectangle();
rectangle.setWidth(500);
rectangle.setHeight(500);
rectangle.setRotationAxis(Rotate.X_AXIS);
rectangle.setRotate(50);
Scene scene = new Scene(root, 1000, 1000);
root.getChildren().addAll(rectangle);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:1)
JavaFX支持真正的3D,所以没有必要搞砸这个只是一个效果的PerspectiveTransform。您只需使用PerspectiveCamera设置正确的3D场景,就可以得到您想要的内容。
答案 1 :(得分:1)
按default,Scene
使用ParallelCamera
,但未定义任何视角。因此,x和y坐标的坐标映射实际上与z坐标无关。
要在场景中查看三维效果,请指定PerspectiveCamera
:
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
Rectangle rectangle = new Rectangle();
rectangle.setWidth(500);
rectangle.setHeight(500);
rectangle.setRotationAxis(Rotate.X_AXIS);
rectangle.setRotate(50);
Scene scene = new Scene(root, 1000, 1000);
scene.setCamera(new PerspectiveCamera());
root.getChildren().addAll(rectangle);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
(如您所见,您的角度计算方向与您想要的角度相反。)
如果需要,您可以进一步配置PerspectiveCamera
的属性,例如视野。请参阅documentation。