来自TriangleMesh的Javafx 8 3d高度贴图
刚刚制作了这个小应用程序,想与大家分享 我从几个示例中提取代码,并对其进行调整以满足我的需要 您可以在此处获取来源: 这里有几个截图给你。。。 如果你觉得它有趣或有用,或者想帮助改进它。。。请随意这样做或这样说 编辑:好的,似乎在一些图像上引入了很多延迟,我尝试实现一个时间表,希望将一些处理推到GPU上。。(我相信这就是它的工作原理)。。有人能想出更好的方法来创建更新线程吗来自TriangleMesh的Javafx 8 3d高度贴图,3d,javafx-8,3d,Javafx 8,刚刚制作了这个小应用程序,想与大家分享 我从几个示例中提取代码,并对其进行调整以满足我的需要 您可以在此处获取来源: 这里有几个截图给你。。。 如果你觉得它有趣或有用,或者想帮助改进它。。。请随意这样做或这样说 编辑:好的,似乎在一些图像上引入了很多延迟,我尝试实现一个时间表,希望将一些处理推到GPU上。。(我相信这就是它的工作原理)。。有人能想出更好的方法来创建更新线程吗 Timeline defaultTimeline = new Timeline(); defaultTimel
Timeline defaultTimeline = new Timeline();
defaultTimeline.getKeyFrames().addAll(new KeyFrame(new Duration(14 - (System.currentTimeMillis() % 14)), (ActionEvent t) -> {
Timeline everySecond = new Timeline();
everySecond.setCycleCount(Timeline.INDEFINITE);
everySecond.getKeyFrames().addAll(new KeyFrame(Duration.valueOf(14 + "ms"), (ActionEvent event) -> {
update();
}));
everySecond.play();
System.err.println("Playing");
}));
defaultTimeline.play();
以及更新方法:
private void update() {
if(pixelSkipSlider.isValueChanging()){
if(meshView.getMesh() != null){
meshView.setMesh(MeshUtils.createHeightMap(meshImageView.getImage(), (int)pixelSkipSlider.getValue() , (float)maxHeightSlider.getValue(), (float)scaleSlider.getValue()));
}
}
if(maxHeightSlider.isValueChanging()){
if(meshView.getMesh() != null){
meshView.setMesh(MeshUtils.createHeightMap(meshImageView.getImage(), (int)pixelSkipSlider.getValue() , (float)maxHeightSlider.getValue(), (float)scaleSlider.getValue()));
}
}
if(scaleSlider.isValueChanging()){
if(meshView.getMesh() != null){
meshView.setMesh(MeshUtils.createHeightMap(meshImageView.getImage(), (int)pixelSkipSlider.getValue() , (float)maxHeightSlider.getValue(), (float)scaleSlider.getValue()));
}
}
}
在被问到这个问题时,我不知道JavaFX属性的invalidated()方法, 重写此方法并使用它是我更新属性的首选方法
通过这样做,平台的性能达到了应有的水平,我的问题也消失了。这看起来很棒,也很有趣,但这不是一个问题。StackOverflow是一个问答网站,所以请求关闭是一个离题的话题。我编辑了它,因为我确实有一些问题,谢谢你的提醒。