如何在JavaFX 3D中制作矢量图形样式线?

时间:2015-10-29 03:15:16

标签: java javafx 3d java-8 javafx-3d

为了概括我的总体目标,我希望展示一组世界政治边界(国家)和州,可以像谷歌地球那样进行缩放和平移。我的数据集足够详细,有大约1,200,000个纬度/经度点来定义我想要显示的边界。我正在探索使用JavaFX 3D来利用硬件图形加速。

我这样做的表现可以接受,但是我遇到了javafx.scene.shape.Polyline渲染方式的问题。当我尝试在360x200单位2d平面周围的场景图中绘制代表我的世界政治边界的折线时,当我放大时就像是一个低分辨率图像一样,它会严重像素化。

我真正想要的是在屏幕上呈现恒定的“宽度”,无论我离线对象有多近或多远。我可能正在使用错误的形状对象,但其他对象显然不符合我想做的事情。我也尝试了'Path / LineTo',结果相同。

F(X)yz看起来很有希望,但我希望避免使用第三方库。

过去我曾使用原版java3d并且不记得遇到这个问题。我使用了LineArray。

你有没有关于如何使用JavaFX 3D(java 1.8)绘制线条/光线/矢量看起来相同的建议,无论你是怎样'近/远',或者是F(X)yz my最佳选择?渲染设置提示?

1 个答案:

答案 0 :(得分:3)

我前段时间曾问similar question而且由于JavaFX缺乏3D组件,我担心F(X)yz仍然是最好的方法。

在您的特定情况下,PolyLine3D就是您想要的。它使用引擎盖下的网格视图来实现3D环境中的硬件加速。另一种方法是自己对边界进行三角测量并使用TriangleMesh。由于您希望线宽保持相同的大小,因此每次缩放地图时都必须这样做。