2

我知道如果我旋转一个扩展的对象,javafx.scene.shape.Shape我可以将它转换为 3D 空间,即使它最初设计为 2D (至少据我所知)。

假设我有一个 3D 场景(使用透视相机和深度缓冲区),其中MeshView出现了各种 s。有些用于区域,有些用于线。在这两种情况下,必须对这些形状进行三角剖分才能使用 a 绘制它们TriangleMesh,这通常很重要。

现在,当我将这些线条的绘制更改为使用Polyline类时,性能崩溃是可怕的,并且出现了奇怪的伪影。我认为我可以从这样一个事实中受益,即折线的顶点较少,并且开发人员不必以编程方式进行三角测量。

是否不鼓励使用javafx.scene.shape.Shape在 3D 空间内扩展的形状?它们是如何在内部绘制的?

4

1 回答 1

5

如果问题是“我应该在 3D 空间中使用 2D Shape 对象吗?” 在 JavaFX 中,答案是否定的,因为您将获得所看到的所有糟糕的性能。但是,听起来您正在尝试使用 2D 对象并在 3D 空间中旋转它们来弥补 JavaFX 缺少 3D PolyLine 对象的缺陷。如果这是真的,请改用免费的开源 F(X)yz 库:

http://birdasaur.github.io/FXyz/

例如 PolyLine3D 类,它允许您简单地指定 Point3D 列表,它将为您连接它们:

/src/org/fxyz/shapes/composites/PolyLine3D.java

您可以在测试目录中查看有关如何使用它的示例代码:

/src/org/fxyz/tests/PolyLine3DTest.java

于 2014-12-23T13:41:52.867 回答