为了概述我的总体目标,我想显示一组世界政治边界(国家)和可以像谷歌地球一样缩放和平移的状态。我的数据集足够详细,有大约 1,200,000 个纬度/经度点来定义我想要显示的边界。我正在探索使用 JavaFX 3D 来利用硬件图形加速。
这样做我获得了可接受的性能,但我遇到了 javafx.scene.shape.Polyline 呈现方式的问题。当我尝试在 360x200 单位 2d 平面周围的场景图中绘制表示我的世界政治边界的折线时,当我放大时它会严重像素化,就好像该线是低分辨率图像一样。
我真正想要的是无论我离线对象有多近或多远,线在屏幕上都呈现为恒定的“宽度”。我可能使用了错误的形状对象,但其他对象显然不适合我想要做的事情。我也试过 'Path/LineTo' 结果相同。
F(X)yz看起来很有希望,但我希望避免使用第三方库。
过去我用过原来的java3d并且不记得有这个问题。其中我使用了 LineArray。
对于如何使用 JavaFX 3D (java 1.8) 绘制看起来相同的线/射线/vector ,无论您离它有多“近/远”,您有什么建议吗,或者 F(X)yz 我的最好的选择?渲染设置提示?
最佳答案
我问了一个similar question前一段时间,由于 JavaFX 缺少 3D 组件,我担心 F(X)yz 仍然是最好的方法。
在您的特定情况下,PolyLine3D
就是您想要的。它使用引擎盖下的 GridView 在 3D 环境中启用硬件加速。另一种方法是自己对边界进行三角测量并使用 TriangleMesh
。由于您希望线宽保持相同大小,因此每次缩放 map 时都必须这样做。
关于java - 如何在 JavaFX 3D 中制作 vector 图形样式线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33405363/