3

背景
https://marketplace.gephi.org/plugin/force-atlas-3d/

问题
- 我在屏幕上有一个以 (x,y,z) 坐标表示的节点网络。
- 鼠标指针的位置在屏幕上用 (x,y) 坐标表示(嗯,和正常情况一样)。

=> 我想使用鼠标的拖动动作(x 和 y 的变化)来旋转节点网络的视图。

  • 将鼠标向左拖动会导致节点围绕垂直轴向左旋转(“旋转”在此处未在操作上定义我知道,但我希望你能想象我的意思)。

  • 将鼠标拖到屏幕底部会导致节点围绕水平轴向观察者的方向旋转。

正如我所看到的,我需要一种将鼠标坐标的变化作为输入的方法,并为每个节点返回它们坐标的对应变化。

注意
- 这里没有相机移动。
- 解决方案是用 Java 开发的 - 也许像 Java3D 这样的一些库在这里是相关的?

任何帮助将不胜感激 - 并在我正在构建的 Gephi 插件中得到承认!谢谢!

4

1 回答 1

4

尝试使用轨道行为

OrbitBehavior orbit = new OrbitBehavior(canvas, OrbitBehavior.REVERSE_ROTATE);
orbit.setSchedulingBounds(new BoundingSphere());
universe.getViewingPlatform().setViewPlatformBehavior(orbit);

它在所有方向上旋转视图。但是,您可以通过将 Y 旋转移动乘数设置为 0 来将旋转限制在左右方向(取决于鼠标的方向),如下所示:

orbit.setRotXFactor(2);//or any other value
orbit.setRotYFactor(0);
于 2013-11-10T10:01:36.470 回答