Подходящая библиотека для объединения с D3js, позволяющая рисовать в webgl (2D)

Вот что я пытаюсь сделать: http://mbostock.github.com/d3/talk/20111116/iris-splom.html

Но я хочу сделать это в webgl 2d (потому что производительность SVG очень низкая, рендеринг только 10k SVG уже падает до 12 кадров в секунду)

При быстром поиске я нашел несколько библиотек webgl-2d: cocos2d-html5 , pixijs, Three.js и webgl-2d (заброшены?)

Они кажутся довольно простыми, но то, что я хочу сделать, это визуализация данных. Cocos и Pixijs - это библиотеки 2D-игр. Я новичок в webgl и этих библиотеках, поэтому эксперты SO могут порекомендовать?

краткое изложение того, что мне нужно:

Взаимодействие :

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

Рендерер: WebGL2d (согласно бенчмаркам, webgl самый быстрый)


person Phyo Arkar Lwin    schedule 26.04.2013    source источник


Ответы (1)


Основываясь на ваших требованиях и резюме, я бы порекомендовал последнюю версию Cocos2D-html5, которая включает Поддержка рендеринга WebGL. Это так же просто, как изменить настройку рендеринга с Canvas на WebGL в файле cocos2d.js файл настроек. Например, в HelloHTML5World/cocos2d.js измените renderMode на 2 для рендеринга на основе WebGL.

renderMode:0,       //Choose of RenderMode: 0(default), 1(Canvas only), 2(WebGL only)

Cocos2d-html5 является более точно графической библиотекой и может рассматриваться как полная игровая библиотека только в сочетании с библиотеками игровой физики (по умолчанию) chipmunk или box2d.

Поддерживает ли он прямоугольный выбор или масштабирование и панорамирование? Да, вы можете расширить существующие библиотеки для реализации этих функций.

Другим преимуществом платформы Cocos2d-html5 является добавленная поддержка визуального редактирования графики с помощью Cocosbuilder и встроенная межплатформенная поддержка (iOS, Android и т. д.) для той же кодовой базы с привязками Javascript.

Если у вас есть конкретные вопросы по платформе, на них можно более подробно ответить с помощью кода.

Вы можете просмотреть справочник по JS и форум cocos2d-html5 для начала работы.

Обновление 1: просмотрели ваш код визуализации данных для набора данных радужной оболочки. Графики размещены в элементе svg с крошечными кружками, отображающими каждую точку данных в соответствии с координатами x, y. Этого можно добиться и в Cocos2d с помощью координат x,y, сеток, блоков с различной непрозрачностью и крошечных кругов для точек данных. Импортируйте набор данных радужной оболочки в формате json/xmll/csv с помощью кода javascript и постройте график с помощью вышеуказанных методов cocos2d. Выбор прямоугольника с помощью обратных вызовов событий javascript и методов обработчика мыши и соответствующего обновления сцены холста.

Обновление 2: Если подумать, если вы обнаружите, что кривая обучения для cocos2d крутая, вам лучше ограничиться библиотекой только для построения диаграмм, основанной на WebGL. Этот проект VivaGraphJS кажется подходящим для высокая производительность на основе WebGL.

Также, пожалуйста, задавайте вопросы желательно в таком формате, что вы пробовали в коде, каков был ожидаемый результат, что вы получили вместо этого. SO не предназначен для сравнения библиотек. WebGL — это метод рендеринга. Переключатель, например, в three.js так же прост, как

renderer = new THREE.WebGLRenderer();

вместо холста:

renderer = new THREE.CanvasRenderer();

что приводит к более высокой производительности.

person S G    schedule 02.05.2013
comment
Что я хочу сделать, так это объединить визуализацию d3 с webgl (2D), я буду редактировать больше, для ссылок, какие визуализации я хотел бы сделать с помощью webgl (2d) + coscos (или любой другой библиотеки webgl). - person Phyo Arkar Lwin; 02.05.2013
comment
О, подождите, у меня уже есть ссылка на диаграммы рассеяния с использованием d3 в исходном посте. Не могли бы вы проверить и там внимательно? - person Phyo Arkar Lwin; 02.05.2013
comment
Да, я проверил диаграммы рассеяния. Cocos2d — это еще один фреймворк javascript, записывающий на холст. Вы можете интегрировать его с вашим существующим кодом javascript с небольшими изменениями. Рассматривайте cocos2d просто как плоттер webgl и интерактивную библиотеку для существующей кодовой базы d3.js. Но почему отрицательный голос? - person S G; 03.05.2013
comment
Спасибо, я собираюсь сначала сделать с кокосами D3 + и я дам вам знать. Я проголосовал за вас вместо того, чтобы по ошибке проголосовать за вас. Сенсорные экраны сумасшедшие.. - person Phyo Arkar Lwin; 03.05.2013
comment
Я решил отказаться от этой идеи, в итоге я использую Three.js только с частицами и трассировщиком лучей three.js для прямоугольных выделений. Но это хороший ответ, поэтому я отмечу ответ. - person Phyo Arkar Lwin; 06.10.2014
comment
@SG: Спасибо за отличную информацию. Мне нужно установить относительное горизонтальное положение узлов, возможно ли это с помощью Viva? - person Mohsen; 15.02.2021