Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
使用JavaFX实现三维变换gizmo_Java_Javafx_Javafx 3d_Fxyz3d - Fatal编程技术网

使用JavaFX实现三维变换gizmo

使用JavaFX实现三维变换gizmo,java,javafx,javafx-3d,fxyz3d,Java,Javafx,Javafx 3d,Fxyz3d,我的目标是在JavaFX中创建一个简单的平移和旋转gizmo 有很多例子可以说明如何在C++中实现这一点。但是我很难将这段代码翻译成JavaFX。主要是因为使用JavaFX不容易访问基础数学(例如,从透视摄影机获取摄影机矩阵)。我很难弄清楚如何从可用的JavaFX组件中获得正确的成分 我的计划是实现用于按下和拖动的MouseeEvent处理程序,然后在相应的变换空间(平移、旋转)中投影拖动运动。但我真的不知道从哪里开始 我试着在线搜索JavaFX中的任何实现,但什么都找不到 我希望这个社区的人能

我的目标是在JavaFX中创建一个简单的平移和旋转gizmo

有很多例子可以说明如何在C++中实现这一点。但是我很难将这段代码翻译成JavaFX。主要是因为使用JavaFX不容易访问基础数学(例如,从透视摄影机获取摄影机矩阵)。我很难弄清楚如何从可用的JavaFX组件中获得正确的成分

我的计划是实现用于按下和拖动的MouseeEvent处理程序,然后在相应的变换空间(平移、旋转)中投影拖动运动。但我真的不知道从哪里开始

我试着在线搜索JavaFX中的任何实现,但什么都找不到

我希望这个社区的人能帮助我翻译我在本帖开始时链接的C++教程,或者帮助我为下面链接的代码中的GIZO组件添加正确的拖动处理程序。 下面是一个要点,其中包含一个简单3D场景的测试应用程序,该场景包含gizmo和一个简单的相机实现(多亏了这个库)。它有很多线条,但大多数都是由于用于创建视觉元素的类,真正重要的类是Gizmo类

(代码太长,无法包含在此处)

编辑#10月1日至8日:

我已经尝试为每个拖动锥体设置一个拖动检测处理程序,然后在场景中设置一个拖动处理程序。我不希望拖动事件返回的坐标取决于节点是否相交。我尝试了下面链接的代码,但没有给出正确的结果。我想,如果我已经解决了这个问题,我可以得到gizmo的平移部分功能,然后只剩下旋转:

final PickResult currentPickResult = me.getPickResult();
final Node currentNode = currentPickResult.getIntersectedNode();
final Point3D currentPoint;
if(currentNode != null)
    currentPoint = currentNode.localToParent(currentPickResult.getIntersectedPoint());
else
    currentPoint = currentPickResult.getIntersectedPoint();
编辑#2-10月8日:

因此,在我链接到JavaFX的教程中,我对移植代码做了一些努力,我设法在com.sun.JavaFX包中找到了一些(实验性)代码,这些代码似乎提供了我计算数学所需的所有成分。但我并不完全理解教程中的所有数学部分。无论如何,以下是我目前进展的要点:

小发明看起来不错。然而,在3D中拖动并非易事。这有一个可能的解决方案,也链接到另一个不同方法的问题。@JoséPereda干杯,我确实记得在那篇文章和另一篇类似的文章中遇到了绊脚石,这肯定是有帮助的。我目前正在尝试从拾取结果中获取相同的坐标,而不管节点是否相交。我用我目前的尝试编辑了我的文章,但结果不一样。我还尝试用localToScene替换localToParent。小发明看起来不错。然而,在3D中拖动并非易事。这有一个可能的解决方案,也链接到另一个不同方法的问题。@JoséPereda干杯,我确实记得在那篇文章和另一篇类似的文章中遇到了绊脚石,这肯定是有帮助的。我目前正在尝试从拾取结果中获取相同的坐标,而不管节点是否相交。我用我目前的尝试编辑了我的文章,但结果不一样。我还尝试用localToScene替换localToParent。