为了概括我的总体目标,我希望展示一组世界政治边界(国家)和州,可以像谷歌地球那样进行缩放和平移。我的数据集足够详细,有大约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最佳选择?渲染设置提示?
答案 0 :(得分:3)
我前段时间曾问similar question而且由于JavaFX缺乏3D组件,我担心F(X)yz仍然是最好的方法。
在您的特定情况下,PolyLine3D
就是您想要的。它使用引擎盖下的网格视图来实现3D环境中的硬件加速。另一种方法是自己对边界进行三角测量并使用TriangleMesh
。由于您希望线宽保持相同的大小,因此每次缩放地图时都必须这样做。