Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Дальнейшее развитие темы #2

Closed
3 tasks
fobdy opened this issue Nov 18, 2015 · 2 comments
Closed
3 tasks

Дальнейшее развитие темы #2

fobdy opened this issue Nov 18, 2015 · 2 comments

Comments

@fobdy
Copy link

fobdy commented Nov 18, 2015

Здравствуйте,
хочу проинформировать вас, что планирую развить вашу разработку ngraph.pixi.

В частности мне нужно решить задачу отрисовки больших графов (> 5К узлов) с приемлемым FPS и при этом иметь под рукой достаточно широкие возможности по рисованию. Пока выбор остановился на Pixi, как вроде бы единственного средства по работе с граф. примитивами на WebGL. В текущей реализации ngraph.pixi на больших графах FPS крайне мал и у меня он в районе 5. Причем мне показалось 3-я версия даже чуть медленнее. Тогда как на Sigma.js ничего не тормозит, но там дальше узлов в виде кружочков не уедешь - придется рисовать все с нуля на голом WebGL.

У меня пока такие планы:

  • Сделать, чтобы узлы рендерились как спрайты, используя ParticleContainer, при этом нужно, чтобы при зуме они перерендеривались в спрайты на более высокое разрешение. При зуме можно использовать throttle или debounce техники.
  • Добавить возможность навешивания событий мышки на узлы / ребра.
  • Возможность отрисовки подписей (на узлах и ребрах)

Пока форк лежит вот здесь https://github.com/fobdy/ngraph.pixi. Я там несколько ранее обновился до 3-ей версии Pixi. Если смотреть на отличия от вашей версии, то я добавил поддержку pan и antialias. Т.к. pan вроде после обновления до v3 ломается. Еще правда с mouse origin надо разобраться - он все в центр зумит, а надо в точку относительно мышки. Еще не нравится какое-то дерганье при зуме - надо посмотреть, чего изменить там.

Если у вас есть какие-то советы или рекомендации дабы направить меня в нужное русло, рад буду услышать.

@anvaka
Copy link
Owner

anvaka commented Nov 23, 2015

Мне нравятся ваши планы и я думаю что в этом есть очень много пользы другим программистам!

Насчет советов - постарайтесь использовать практически получившийся результат. Если есть небольшие графы - используйте ngraph.pixi для их отрисовки, создавайте сайты для анализа подобных графов.

В противном случае, разрабатывать библиотеку ради самой библиотеки это как ставить воз перед конем, так сказать.

Уверен, вы докопаетесь до сути проблемы с зумом! Попробуйте сначала на листочке решить геометрическую задачу: как масштабировать/трансформировать объекты относительно заданной точки. По-началу эти задачи у меня вызывали затруднения, но чем больше их решаешь, тем шире кругозор и тем больше спектр проблем к которым применимо решение.

Если у вас возникнут конкретные вопросы - дайте знать!

@anvaka anvaka closed this as completed Nov 23, 2015
@fobdy
Copy link
Author

fobdy commented Nov 23, 2015

Удалось поиграться с ParticleContainer — действительно быстро рисуется. Скорость отрисовки только узлов без линий:

  • 8 000 узлов ~ 25 FPS
  • 16 000 узлов ~ 12 FPS
  • Если остановить раскладку, то скорость 60 FPS - т.е. именно раскладка (layout) здесь bottleneck, а не Pixi.

Однако проблема с линиями — в Pixi они слишком сложно рисуются, и потому намного медленее, чем у вас с Vivagraph. Поэтому здесь только один выход - как-то жестко наследоваться и переопределять рисование линий в Pixi — но это очень непростая задача.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants