繁体   English   中英

JavaFX透视图旋转

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM