我在 JavaFX 8 中构建了一个应用程序,可以在屏幕上旋转和移动 TriangleMesh 对象。我使用 www.interactivemesh.org 中的库来读取 STL 文件并创建 TriangleMesh 对象。
当我将 TriangleMesh 对象写回 STL 时,原始数据将被保存。 JavaFX 不会更改原始数据。我登录了 jira,他们说这就是它应该如何工作的。
保存网格数据时如何变换?我希望有一个跨平台库可以转换网格,从而可以轻松地与 JavaFX 8 集成。
我找到了 hg.postspectaulous.com/toxiclibs/wiki/Home。他们开发了自己的 TriangleMesh 和其他对象。如果一切都失败了,我可能会编写一个转换器来将 JavaFX TriangleMesh 转换为它们的转换器,然后使用它们的转换来转换数据,以便我可以将其保存为 STL。我不确定他们是否真的更改了数据以便我可以实际使用它
我还发现我可能需要查看 JOGL(OpenGL 的 Java 绑定(bind))。
最佳答案
请参阅 javafx.scene.Node 的 javadoc:
变换 Node.getLocalToSceneTransform()
“保存计算出的局部到场景变换的仿射变换。这是该节点的父节点和该节点中所有变换的串联,包括所有便利变换。””
请参阅 javafx.scene.transform.Transform 的 javadoc:
Point3D变换(Point3D点)
“通过此变换来变换指定点。”
- 从 TriangleMesh 的 Shape3D 节点获取“LocalToSceneTransform”
- 将变换方法应用于每个三角形的三个 Point3D
- 通过翻转 y 值和 z 值,将 Point3D 从 JavaFX 3D 坐标系转换为 STL 之一
- 使用变换转换后的三个Point3D来计算面/三角形法线
关于java - 在 JavaFX 中旋转和移动 TriangleMesh。保存时如何转换数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993026/