所以我不确定stackoverflow是如何友好的这个问题,因为它没有快速明确的答案,但在这里我们去......
我有一个java程序,可以为有向图生成数据。现在我需要渲染这个图。数据需要以3D格式布局,我希望能够定义边缘所在的平面。(每个边缘只需占用3D空间的1个平面)。我还需要能够在图表中导航。因为我知道这种东西很难,所以我要去购物。
到目前为止,我已经研究过(没有特别的顺序):
我也在考虑做一些opengl + swing渲染的组合来从多个2D图形创建一个3D图形。
我也不反对从另一种语言链接的想法
任何想法?谢谢。
答案 0 :(得分:2)
我建议将Java3D用于可视化部分
Java 3D Tutorial介绍概念
Download Site包含库和一些演示项目,以便快速入门。
要进行图表的布局,您可以在JUNG中查找算法并检查是否可以轻松扩展到3D。
答案 1 :(得分:1)
有一些3D图形可视化器。
我所知道的3D观众是:
由于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的小程序。
我们研究了一点信号处理,并使用Octave和GNUPlot来绘制信号 在2d(使用绘图,词干等)和3d(使用网格)
octave mesh http://www.network-theory.co.uk/docs/octave3/mesh.png
我用google搜索java gnuplot,似乎找到了一些方便的链接......
查看GnuPlot Programming Interfaces上的Java链接,例如: this,javaplot,jgnuplot等
对于某些硬核图形,无论是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是一个用于交互和协作的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旨在支持各种各样的 用户界面,从简单的数据浏览器小程序到 复杂的应用程序,允许科学家团体 协同开发数据分析算法。
- 开发人员可扩展性尽可能多。