JavaFX 中的动画渲染效果

Posted

技术标签:

【中文标题】JavaFX 中的动画渲染效果【英文标题】:Animate Render Effects in JavaFX 【发布时间】:2016-01-16 05:38:28 【问题描述】:

我正在构建一个 JavaFX 应用程序,它应该在我的 RaspberryPi 上运行,该树莓派连接了一个 7" 显示器。 为了更好的造型,我正在尝试为javafx.scene.effect.GaussianBlur-Effect 制作动画。

我让它“工作”了,尽管目前性能很差(动画期间的 FPS 低)(在我的笔记本电脑上,甚至不说 Pi)。请参阅下面的代码。

有没有更高效的方法来做到这一点?还是这些效果不应该是动画的?

GaussianBlur blur = new GaussianBlur(0);
backgroundPane.setEffect(blur);
DoubleProperty value = new SimpleDoubleProperty(0);
value.addListener((observable, oldV, newV)->

     blur.setRadius(newV.doubleValue());
);

Timeline timeline = new Timeline();
final KeyValue kv = new KeyValue(value, 30);
final KeyFrame kf = new KeyFrame(Duration.millis(200), kv);
timeline.getKeyFrames().add(kf);
timeline.play();

仅供参考:在这个阶段,bakcgroundPlane 只是一个通过 CSS 添加背景图像的窗格:

.background

    -fx-background-image: url("images/bg.png");
    -fx-background-repeat: stretch;
    -fx-background-size: 800 480;
    -fx-background-position: center center;

编辑: 问题似乎与 CSS 无关。当我在 FXML 中设置图像时,它仍然会发生......

【问题讨论】:

是否有任何具体原因定义 DoubleProperty 与您动画的 changeListener 以强制更改半径?直接在 GaussianBlur 上使用 radiusProperty。 如果您提供mcve,您将有更好的机会获得帮助。我知道您当前的问题有足够的信息,有人可以复制它,但目前有人这样做比将最小的、完整的、工作的、可编译的代码复制并粘贴到他们的机器上做的工作更多。如果潜在的回答者需要做更多的工作来复制您的问题,那么您获得好的答案的机会就会减少。 【参考方案1】:

你试过enable caching和set the cache hint to speedy吗?

这些通常会对性能产生巨大影响。在我的一个小型 jfx 游戏中,它是“可玩”和个位数 fps 值之间的差异。

【讨论】:

以上是关于JavaFX 中的动画渲染效果的主要内容,如果未能解决你的问题,请参考以下文章

超给力的json格式Web动画工具 一键渲染动画效果(内含使用教程)

《企业云桌面实施》-小技巧-08-建筑设计行业-真实效果-漫游动画-三维视图渲染

AE学习笔记——第五章:效果预设和渲染导出

AE学习笔记——第五章:效果预设和渲染导出

骨骼动画—从基础建模到Threejs渲染

第四周作业