当前位置: 首页 > 知识库问答 >
问题:

JavaFX动画/视图3D(带有窗格)

郑鸿朗
2023-03-14

我第一次使用JavaFX来尝试制作一个应用程序,我可以用它来演示一个带有按钮控件的简单动画。为此,我使用了BoarderPane作为初级阶段,左侧、右侧和底部都使用了GridPanes。

然而,对于中心,我需要能够画一个球内有一条线,我可以旋转不同的视图,同时能够动画,或至少快照移动内的线。

我试过用一个窗格做中心,但不起作用。我试着把它变成自己的场景和副场景,但都不起作用。我不能使用画布,因为它只适用于2D动画。

JavaFX围绕枢轴旋转相机

JavaFX画布以固定中心旋转图像(且不反弹)

共有1个答案

华锦程
2023-03-14

每当您想要混合2D和3D(以及相机)时,您必须为3D内容使用子场景容器

子场景提供场景的不同部分的分离,每个部分都可以用不同的相机、深度缓冲区或场景抗锯齿来渲染。一个子场景嵌入到主场景或另一个子场景中。

如果您有一个BorderPane容器,您可以完美地将子场景添加到它的中心。

private final Rotate rotate = new Rotate(0, 0, 0, 0, javafx.geometry.Point3D.ZERO.add(1, 1, 1));

@Override
public void start(Stage primaryStage) throws Exception {

    final Timeline timeline = new Timeline(
        new KeyFrame(Duration.seconds(10), 
            new KeyValue(rotate.angleProperty(), 360)));

    final Qubit3D qubit = new Qubit3D();

    final BorderPane root = new BorderPane(qubit);

    final Button buttonAnimate = new Button("Animate");
    buttonAnimate.setOnAction(e -> {
        rotate.setAngle(0);
        timeline.playFromStart();
    });

    root.setLeft(new StackPane(buttonAnimate));
    final Button buttonStop = new Button("Stop");
    buttonStop.setOnAction(e -> timeline.stop());
    root.setRight(new StackPane(buttonStop));

    Scene scene = new Scene(root, 600, 400, true, SceneAntialiasing.BALANCED);
    scene.setFill(Color.BISQUE);

    primaryStage.setScene(scene);
    primaryStage.setTitle("Qubit3D Sample");
    primaryStage.show();

    qubit.rotateRod(rotate);

}

我对Qubit3D添加的唯一修改是:

public void rotateRod(Rotate rotate) {
    rodSphere.getTransforms().setAll(rotate);
}

如果运行它:

注意,您可以与球体交互(通过鼠标拖动事件),同时您也可以开始/停止球体和杆的完全旋转。

 类似资料:
  • 当前为 5.4 版本,稍后将升级到 5.5。在 5.5 中,本节内容被拆分成了多个小节。 使用动画视图 在 Unity 中,动画视图用于预览和编辑游戏对象的动画剪辑。动画视图可以通过菜单 Window -> Animation 打开。 查看游戏对象上的动画 动画视图和层级视图、场景视图以及检视视图紧密耦合。类似于检视视图,动画视图将显示当前选中对象的动画的时间轴和关键帧。你也可以在层级视图或场景视

  • 我们知道 3D 精灵对游戏很重要,也学会了如何操纵,但是可能还希望能有一些更丰富的效果。 那就添加动画吧! 要运行 3D 动画,你需要使用 Animation3D 和 Animate3D 对象,首先用 Animation3D 加载一个动画文件,然后使用 Animate3D 完成添加。 示例: // the animation is contained in the .c3b file auto a

  • 我看过一些样品,但没有一个适合我的需要。 我已经为动画创建了两个xml文件,但我不知道在更改的可见性时如何启动它们。

  • 我是一个Java/JavaFX程序员新手,我正在开发一个简单的JavaFX建筑设计工具,在这个工具中,您可以画出墙壁、地板等,因此对象(主要是线、圆、多边形、矩形图像)是在屏幕上绘制和创建的,而不是在运行之前创建的。

  • 我试图制作一个可滚动的图表,无论游标在滚动条中的位置如何,Y轴都在视图中(默认情况下,由于Y轴信息位于视图的末尾,只有在滚动到足以看到末尾时,您才会看到它) 下面是我试图完成的一个示例: 请注意,即使滚动条的位置在中间,Y轴文本(价格)仍然在视图中 有什么想法来绕过上述问题或更好的方法来实现这一点? 谢谢

  • 动画视图指南 在 Unity 中的动画视图中,你可以直接创建和修改动画剪辑。动画视图的功能强大、操作简单,被设计为外部 3D 动画软件的替代品。除了运动动画外,编辑器还可以为材质和组件添加动画,以及基于动画事件修改动画剪辑,动画事件是一些在特定时间点被调用的函数。 更多相关信息请阅读 动画导入 和 动画脚本。 本章接下来的内容将详细介绍动画视图的个个方面。