Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swing JavaFXGUI,用于复杂3D图形的最简单方法_Swing_Opengl_Javafx_Jogl_Javafx 3d - Fatal编程技术网

Swing JavaFXGUI,用于复杂3D图形的最简单方法

Swing JavaFXGUI,用于复杂3D图形的最简单方法,swing,opengl,javafx,jogl,javafx-3d,Swing,Opengl,Javafx,Jogl,Javafx 3d,我正在使用Swing和OpenGL(带有JOGL)创建一个计算齿轮箱零件的软件。 使用该软件,计算出的零件以3D显示。下图显示了一个示例部件: 首先,指定/计算几何图形(尖端/根部直径、宽度、齿数…),并根据该数据创建三维零件。这个示例部分使用JOGL代码制作,因为它对我来说很容易使用,并且可以集成到Swing GUI中 现在,a对JavaFX应用程序GUI进行了一些研究,并决定继续用JavaFX制作我的软件,因为它提供了我需要的一切,看起来更好,等等。问题是我不能使用我的JOGL OpenG

我正在使用Swing和OpenGL(带有JOGL)创建一个计算齿轮箱零件的软件。 使用该软件,计算出的零件以3D显示。下图显示了一个示例部件:

首先,指定/计算几何图形(尖端/根部直径、宽度、齿数…),并根据该数据创建三维零件。这个示例部分使用JOGL代码制作,因为它对我来说很容易使用,并且可以集成到Swing GUI中

现在,a对JavaFX应用程序GUI进行了一些研究,并决定继续用JavaFX制作我的软件,因为它提供了我需要的一切,看起来更好,等等。问题是我不能使用我的JOGL OpenGL图形

因此,以下是我的可能性:

  • 寻找一种将OpenGL图形集成到JavaFX应用程序中的方法——但我在谷歌上搜索了一下,这似乎非常困难,可能的解决方案似乎非常缓慢
  • 使用JavaFX集成3D图形(TriangleMesh)——但这很难理解,我也找不到学习它的好例子
  • 还有其他解决办法吗

你能帮我找到一个好的解决办法吗?你会怎么做?我最喜欢的是继续使用OpenGL,但是有什么好的解决方案吗?

如果您正在寻找一些JavaFX 3D资源,可以帮助您确定其是否已经成熟,这些资源包括:

  • OpenFJX项目中的3DViewer
  • 互动英语和英语
  • ,一个新的JavaFX 3D库,它提供了基础JavaFX 8 3D软件包所没有的其他原语、复合对象、控件和数据可视化
  • ,repository包含了“在天空中建造城堡。使用JavaFX 3D对历史宝藏建模”一文中所示示例的代码,该文发表于Oracle Java杂志,2014年11月/11月发行
使用F(X)yz中的多段线3D和Multimel3DFX plaftorm,我能够挤出正齿轮的二维多段线,因此您可以看到它在JavaFX 3D子场景中的渲染方式:

这些也是使用F(X)yz库生成的数学3D模型,所有这些模型都基于
三角网格


正如您所见,JavaFX 3D API有其优点和缺点,可以轻松扩展以实现复杂任务。

您尝试过我的多种建议吗?您可能会遇到一些性能问题,但这也取决于网格的复杂性。我理解您对三角形网格的失望和担忧。我花了一段时间才适应它。我对openGL没有做太多的工作,但归根结底,网格结构非常相似。。点(顶点)、纹理坐标(uv)和面(三角形)。转换它们应该非常简单。@goussej:谢谢链接
@jdub有什么好的文档或教程吗?我有一些例子,但无法解开,什么是TexCoords和Faces,以及如何计算正确的值。我应该从哪里开始呢?看起来Jose在下面的评论中照顾了你…哇-这看起来很有希望。非常感谢你的帮助。我已经下载了F(X)yz并查看了所有示例。我还从您那里下载了Multimel3DFX,但是在哪里可以运行应用程序来查看您描述的城堡?如何拉伸多段线3D?图片中的直齿轮看起来非常漂亮。谢谢,在F(x)yz中,你会发现(在代码中)足够的信息让你开始使用任何三角形网格。但是,如果您向我们提供有关您的形状的一些详细信息,您可以提出功能要求,我们可以添加一些示例齿轮,如我的回答中所示。MultiMedia3DFX项目有一个小模型要测试,大模型不可用。我已经了解了如何拉伸多段线(宽度在构造函数中)以及如何启动MultiMedia3DFX(NavigationFX.java)的模型。这已经足够玩几个小时了:-)但还有一个问题-在OpenGL中,我必须为照明指定三角形的坐标和垂直于该三角形的向量(三角形中两个向量的叉积)。但是在JavaFX-3D中是如何实现的呢?在我的示例中,我没有看到几何体点和面/纹理值之间有任何联系。我在哪里可以找到一个很好的解释呢?现在,您只需要顶点坐标、纹理坐标和面(顶点和纹理的索引列表)。法线不是必需的,但它们可用于计算平滑组。正如我所说,在F(X)yz
org.fxyz.shapes.primitives
包中,您将找到足够的示例来开始。顺便说一下,如果你认为这是一个有效的答案,那就把它标记为接受,这样别人也会发现它有用。