2013-07-04 5 views
3

Фон
https://marketplace.gephi.org/plugin/force-atlas-3d/Поворот 3D вид с движениями мыши - с фиксированной камерой

Проблема
- У меня есть сеть узлов, представленных в (х, у, г) координаты на экран.
- Положение указателя мыши представлено координатами (x, y) на экране (ну, как обычно).

=> Я хотел бы использовать перетаскивание мышью (изменения в x и y) для поворота представления сети узлов.

  • перемещая мышь влево приведет к вращению узлов вокруг вертикальной оси, слева («вращение» не операционно определяется здесь я знаю, но я надеюсь, что вы представить себе, что я имею в виду).

  • Перетаскивание мыши в нижнюю часть экрана приведет к вращению узлов вокруг горизонтальной оси в направлении зрителя.

Как я вижу, мне нужен метод, который меняет координаты мыши в качестве входных данных и возвращает соответствующие изменения их координат для каждого узла.

Примечания
- без камеры движение здесь.
- решение разработано на Java - возможно, некоторые библиотеки, такие как Java3D, актуальны здесь?

Любая помощь будет оценена и признана в плагине Gephi, который я строю! Спасибо!

ответ

3

Попробуйте использовать orbit behavior класс

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

 Смежные вопросы

  • Нет связанных вопросов^_^