使用鼠标移动旋转固定摄像机下的3D视图

3

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

问题
- 我有一个节点网络,在屏幕上以(x,y,z)坐标表示。
- 鼠标指针的位置用屏幕上的(x,y)坐标表示(就像普通的一样)。

=> 我想使用鼠标拖动(在x和y方向上的变化量)旋转节点网络的视图。

  • 将鼠标向左拖动将导致节点沿垂直轴向左旋转("旋转"在这里没有操作上的定义,但我希望您能理解我的意思)。

  • 将鼠标向屏幕底部拖动会使节点沿着水平轴旋转,朝向查看者方向。

我认为我需要一种采用鼠标坐标变化作为输入并返回每个节点其坐标相应变化的方法。


- 这里没有相机移动。
- 解决方案是在Java中开发的-也许Java3D等库在这里是相关的?

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

1个回答

4

Try using the orbit behavior class

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接