一个3D图形渲染库的建议?

6
我不确定这个问题是否适合在stackoverflow上提问,因为它没有一个快速的明确的答案,但我们来试试吧...
我有一个生成有向图数据的Java程序,现在我需要呈现这个图。数据需要以3D方式布局,并且我想能够定义每条边所在的平面。(每条边只需要占用3D空间中的一个平面)。我还需要能够在图中导航。由于我知道这种东西很难做,所以我要去找一些工具。
到目前为止,我已经研究了以下几种工具(无特定顺序):
- JUNG:缺乏3D支持 - Cytoscape:不确定我能定义多少边界绘制,还没有看到非生物信息学应用程序 - JGraph:我还没有看到任何3D应用程序 - Perfuse:看起来很有希望,有人知道其他情况吗? - Gephi:文档似乎很少 - Processing:这个工具和Java兼容吗?
我还考虑使用OpenGL + Swing渲染的组合方式从多个2D图形创建一个3D图形。
我也不排斥使用其他语言链接的想法。
有什么好的建议吗?谢谢。
8个回答

2

我最终选择了不同的路线,但这是最接近的。由于我们正在进行许多自定义操作,我们将结合几种不同的技术。 - Sandro

1

现在有一些3D图形可视化工具。

我知道的3D查看器有:

  1. UBIGraph - demos页面上有一些不错的动画效果。
  2. Wilmascope - 开源且使用Java3D编写。

由于Wilmascope是开源的,如果布局不适合您,您可以扩展它以满足您的要求。但是,在3D中布置图形并不容易。

您还可以查看sourceforge上的Cuttlefish。有一个YouTube视频展示了它的使用示例。


0

你可能想考虑使用Python。Python的Matplotlib库非常适合绘制图表和报告,但是由于Matplotlib具有CPython绑定,您可能需要将数据输出到中间格式并在数据上运行Python脚本。


谢谢,我在考虑使用matplotlib,您知道它是否支持自定义布局吗?(因为我可能会需要) - Sandro
据我所知,它允许您使用任何喜欢的布局,但是我可能会在“盒子内部”使用它,因此也许我还没有遇到您可能遇到的任何布局问题。 - joejoeson

0

我曾经使用过Processing和OpenGL (上一个术语) 进行编程。 不确定绘制2D平面是否是最佳方法。 但是,如果您想要,您可以使用Processing在3D中绘制图形点。 这里有一个来自openprocessing的小应用程序。

我们稍微学习了一下信号处理,并使用OctaveGNUPlot绘制信号 在2D(使用plot、stem等)和3D(使用mesh)

octave mesh
(来源:network-theory.co.uk

我在谷歌上搜索了Java Gnuplot,似乎找到了一些有用的链接...

可以查看GnuPlot编程接口上的Java链接,例如:this, javaplot, jgnuplot等。

对于一些高级绘图,无论是2D还是3D,Gnuplot似乎是一个非常强大的选择。


问题在于我没有坐标数据,而只有一个节点指向另一个节点的列表。你知道这些工具中是否有任何一个可以为我完成这个任务吗? - Sandro
抱歉,我对3D图形渲染的理解有些偏差 :) 这个链接是否更符合你的需求? http://www.openprocessing.org/visuals/?visualID=2049 - George Profenza

0

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


0

NAViGaTOR 可以让你在不同的三维平面上固定节点。因此,如果你在同一平面上固定边缘的相邻节点,则相应的边缘也将在该平面上。然而,它不支持有向边 - 你只会得到一个无向图的表示。


0

我建议你尝试使用http://code.google.com/p/jzy3d,它将真正帮助你实现你想要的功能。这是一个用于快速绘制曲面、散点和三维基元(球体、线条、点等)的Java库。 祝好, 马丁


0

VisAD

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

这更像是一个绘图库。 - ziggystar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接