对3D图形渲染库的建议?

时间:2010-02-06 06:17:46

标签: java graph 3d

所以我不确定stackoverflow是如何友好的这个问题,因为它没有快速明确的答案,但在这里我们去......

我有一个java程序,可以为有向图生成数据。现在我需要渲染这个图。数据需要以3D格式布局,我希望能够定义边缘所在的平面。(每个边缘只需占用3D空间的1个平面)。我还需要能够在图表中导航。因为我知道这种东西很难,所以我要去购物。

到目前为止,我已经研究过(没有特别的顺序):

  • JUNG:缺乏3D支持
  • Cytoscape:不确定我能够定义多少边缘绘图,还没有看到它的非生物信息学应用
  • JGraph:我还没有看到任何3D应用程序
  • Perfuse:看起来很有前途,有没有人知道其他任何事情?
  • Gephi:文档看起来很稀缺
  • 处理:这对java有好处吗?

我也在考虑做一些opengl + swing渲染的组合来从多个2D图形创建一个3D图形。

我也不反对从另一种语言链接的想法

任何想法?谢谢。

8 个答案:

答案 0 :(得分:2)

我建议将Java3D用于可视化部分

要进行图表的布局,您可以在JUNG中查找算法并检查是否可以轻松扩展到3D。

JUNG layout demo

答案 1 :(得分:1)

有一些3D图形可视化器。

我所知道的3D观众是:

  1. UBIGraph - demos页面上有一些不错的动画。
  2. Wilmascope - opensource,用 Java3D
  3. 编写

    由于wilmascope是开源的,如果布局不适合你,你可以扩展它以满足你的要求。然而,在3D中布置图表并不容易。

    您还可以查看sourceforge上的Cuttlefish。有一个video on YouTube显示了它的使用示例。

答案 2 :(得分:0)

你可能想要考虑python。来自python的matplotlib。您可能必须将数据输出为中间格式并在数据上运行python脚本,因为matplotlib具有cpython绑定,但该库具有一些用于绘图和报告的强大功能。

答案 3 :(得分:0)

我玩过Processing和OpenGL last term。 不确定绘制2D平面是否是最佳方法。 但是你可以使用Processing在3d中绘制你的图形点 如果你想。这是来自openprocessing的小程序。

我们研究了一点信号处理,并使用OctaveGNUPlot来绘制信号 在2d(使用绘图,词干等)和3d(使用网格)

octave mesh http://www.network-theory.co.uk/docs/octave3/mesh.png

我用google搜索java gnuplot,似乎找到了一些方便的链接......

查看GnuPlot Programming Interfaces上的Java链接,例如: thisjavaplotjgnuplot

对于某些硬核图形,无论是2d还是3d,gnuplot似乎是一个非常强大的选择。

答案 4 :(得分:0)

看看Java vtk。 vtk是一个复杂的野兽,但非常强大。

答案 5 :(得分:0)

NAViGaTOR可让您修复不同3D平面中的节点。因此,如果在同一平面中固定边的相邻节点,则相应的边也将在该平面中。但是,它不支持有向边 - 您只需获得图形的无向表示。

答案 6 :(得分:0)

我建议您尝试http://code.google.com/p/jzy3d,这将真正帮助您做您想做的事情。它是一个用于快速绘制曲面,散点图和3d基元(球体,线,点等)的Java库。 问候, 马丁

答案 7 :(得分:0)

VisAD

  

VisAD是一个用于交互和协作的Java组件库   数值数据的可视化和分析。 VisAD这个名字是一个   “可视化算法开发”的首字母缩写词。系统   结合:

     
      
  • 使用纯Java实现平台独立性,并支持地理分布之间的数据共享和实时协作   用户。对分布式计算的支持集成在最低层   使用Java RMI分布式对象的系统级别。
  •   
  • 一般数学数据模型,几乎可以适应任何数字数据,支持不同用户之间的数据共享,   不同的数据来源和不同的科学学科,以及   提供独立于存储格式的数据透明访问   位置(即内存,磁盘或远程)。数据模型已经   适应netCDF,HDF-5,FITS,HDF-EOS,McIDAS,Vis5D,GIF,JPEG,   TIFF,QuickTime,ASCII和许多其他文件格式。
  •   
  • 支持交互式3-D,数据融合,多种数据视图,直接操作,协作和支持的通用显示模型   虚拟现实。显示模型已经适应Java3D和   Java2D并用于ImmersaDesk虚拟现实显示器。
  •   
  • 与可视化集成的数据分析和计算,以支持计算转向和其他复杂的交互模式。
  •   
  • 支持两个不同的社区:基于VisAD创建特定于域的系统的开发人员以及这些特定于域的系统的用户。 VisAD旨在支持各种各样的   用户界面,从简单的数据浏览器小程序到   复杂的应用程序,允许科学家团体   协同开发数据分析算法。
  •   
  • 开发人员可扩展性尽可能多。
  •