anvaka / ngraph.pixi

PIXI.js graph renderer
MIT License
26 stars 16 forks source link

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

Closed fobdy closed 8 years ago

fobdy commented 8 years ago

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

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

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

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

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

anvaka commented 8 years ago

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

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

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

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

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

fobdy commented 8 years ago

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

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