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