4

为了概述我的总体目标,我想显示一组世界政治边界(国家)和状态,可以像谷歌地球一样缩放和平移。我的数据集足够详细,有大约 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 是我的最佳选择吗?渲染设置提示?

4

1 回答 1

3

前段时间我问过一个类似的问题,我担心 F(X)yz 仍然是最好的方法,因为 JavaFX 缺乏 3D 组件。

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

于 2015-12-02T12:29:45.777 回答