[英]JavaFX perspective rotation
我想知道是否有可能在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);
}
}
JavaFX支持真正的3D,因此无需弄混仅是Effect的PerspectiveTransform。 您只需要使用PerspectiveCamera设置正确的3D场景,就可以准确地获得所需的内容。
默认情况下 , 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
属性,例如视野。 请参阅文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.