【问题标题】:Suitable library for combining with D3js , to allowing drawing to webgl (2D)适合与 D3js 结合使用的库,以允许绘制到 webgl (2D)
【发布时间】:2013-04-26 12:15:02
【问题描述】:

这是我想要做的: http://mbostock.github.com/d3/talk/20111116/iris-splom.html

但我想在 webgl 2d 中做到这一点(因为 SVG 性能非常慢,10k SVG 的速度已经下降到 12 fps)

通过快速搜索,我发现了几个 webgl-2d 库:cocos2d-html5pixijs、Three.js 和 webgl-2d(已放弃?)

它们看起来很简单,但我想做的是数据可视化。cocos 和 pixjs 是 2d 游戏库。我是 webgl 和那些库的新手,所以你们能推荐一下 SO 的专家吗?

我需要的东西的总结:

互动:

  • 绘图内的矩形选择。点击选择一些元素。
  • 支持缩放和平移(如果可能的话,半缩放)

渲染器: WebGL2d(根据基准 webgl 最快)

【问题讨论】:

    标签: javascript d3.js three.js webgl cocos2d-html5


    【解决方案1】:

    根据您的要求和总结,我会推荐最新版本的 Cocos2D-html5,其中包括 WebGL 渲染支持。这就像在 cocos2d.js 设置文件中将渲染设置从 Canvas 更改为 WebGL 一样简单。例如,在 HelloHTML5World/cocos2d.js 中将 renderMode 更改为 2 以进行基于 WebGL 的渲染。

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

    Cocos2d-html5 更准确地说是一个图形库,并且可能仅与(默认)花栗鼠或 box2d 游戏物理库结合使用才能被解释为一个完整的游戏库。

    它是否支持矩形选择,或缩放和平移?是的,您可以扩展现有的库来实现这些行为。

    Cocos2d-html5 平台的其他优点是添加了对使用 Cocosbuilder 进行可视化图形编辑的支持,以及对具有 Javascript 绑定的相同代码库的跨平台原生支持(iOS、Android 等)。

    如果您有特定的平台问题,可以用代码更详细地回答这些问题。

    您可能需要查看 JS referencecocos2d-html5 forum 以开始使用。

    更新 1:查看了 iris 数据集的数据可视化代码,这些图位于 svg 元素中,小圆圈根据 x,y 坐标绘制每个数据点。这些也可以在 Cocos2d 中通过 x,y 坐标、网格、具有不同不透明度的框和数据点的小圆圈来完成。通过 javascript 代码以 json/xmll/csv 格式导入您的虹膜数据集,并通过上述 cocos2d 方法进行绘图。通过 javascript 事件回调和鼠标处理程序方法选择矩形以及相应的画布场景更新。

    Update2:再想一想,如果您发现 cocos2d 的学习曲线陡峭,您最好将自己限制在基于 WebGL 的仅图表库。这个项目VivaGraphJS 似乎适合high performance 基于WebGL。

    另外,请最好以这种格式提出问题,您在代码中尝试了什么,预期的输出是什么,您得到了什么。 SO 并不意味着库的比较。 WebGL 是一种渲染方法。例如在three.js 中的开关就像

    一样简单
    renderer = new THREE.WebGLRenderer();
    

    而不是画布之一:

    renderer = new THREE.CanvasRenderer();
    

    带来更高的性能。

    【讨论】:

    • 我想做的是将 d3 可视化与 webgl(2D) 结合起来,我将编辑更多,对于链接我想用 webgl(2d) + coscos(或任何其他)做什么样的可视化webgl 库)。
    • 哦,等等,我已经在原始帖子中使用 d3 链接到散点图。你也可以仔细检查一下吗?
    • 是的,我检查了散点图。 Cocos2d 只是另一个写入画布的 javascript 框架。您可以将其与现有的 JavaScript 代码集成,只需稍作修改。将 cocos2d 视为现有 d3.js 代码库的 webgl 绘图仪和交互库。但是,为什么投反对票?
    • 谢谢,我会先处理 D3 + cocos。我会告诉你的。我确实对你投了反对票,而不是错误地对你投了赞成票。触摸屏很疯狂..
    • 我选择放弃这个想法,我最终使用 Three.js 仅使用粒子,以及使用 three.js 的光线追踪器进行矩形选择。但这是一个很好的答案,所以我会标记为已回答。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 2016-10-21
    • 2015-04-20
    • 2016-09-27
    • 1970-01-01
    • 2019-04-09
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多