Suggestions for a 3D graphics rendering library?

So I'm not sure how compatible this question is with stackoverflow, since it has no quick answer, but here we go ...

I have a Java program that generates data for a directed graph. Now I need to display this graph. The data must be laid out in 3D, and I want to be able to determine in which plane the edge is. (Each edge will only need to deal with 1 plane of 3D space). I also need the ability to navigate around the schedule. Since I know that this kind of thing is complicated, I go shopping.

So far I have studied (in a specific order):

  • JUNG: no 3D support
  • Cytoscape: I don’t know how much I can define border drawing until I see an application that is not related to bioinformatics.
  • JGraph: I have not seen 3D applications yet
  • Perfuse: looks promising, does anyone else know about this?
  • Gephi: The documentation looks scarce.
  • Handling: Does this work well with java?

I am also considering using the opengl + swing combination to create a 3D plot of several 2D plots.

I also do not deny the idea of ​​communicating with another language

Any ideas? Thanks.

+6
java graph 3d
source share
8 answers

I would recommend using Java3D for the rendering part.

To mock up your graph, you can search for algorithms in the JUNG and see if it can easily be expanded to 3D.

JUNG Demo

+2
source share

There are several 3D visualizers.

The 3D viewers that I know of are:

Since wilmascope is open source, if the layouts do not suit you, you can expand it to suit your requirements. However, creating graphics in 3D is not easy.

You can also take a look at Cuttlefish at sourceforge. There is a video on YouTube showing an example of its use.

+1
source share

you can consider python. matplotlib from python. You probably have to output your data in an intermediate format and run a python script for the data, because matplotlib has cpython bindings, but the library has some great features for graphical display and reporting.

0
source share

I played with Processing and OpenGL for the last time . Not sure if drawing 2D planes is the best approach. But you can, of course, draw the points of the graph in 3d using Processing if you want. Here is the applet from openprocessing .

We studied signal processing a bit and used Octave and GNUPlot to plot signals in 2d (using plot, stem, etc.) and 3d (using mesh)

octave mesh
(source: network-theory.co.uk )

I googled on java gnuplot and seemed to find some handy links ...

Check Java links for GnuPlot programming interfaces such as: this , javaplot , jgnuplot , etc.

For some hardcore graphics, whether 2D or 3D, gnuplot seems like a pretty powerful choice.

0
source share

take a look at Java vtk. vtk is a complex beast, but very powerful.

0
source share

NAViGaTOR allows you to fix nodes in different three-dimensional planes. Therefore, if you fix the neighboring nodes of an edge in the same plane, then the corresponding edge will also be in this plane. However, it does not support directional edges - you just get an undirected view of your graph.

0
source share

I suggest you try http://code.google.com/p/jzy3d , which really helps you do what you want. This is a java library for fast printing of surfaces, dispersion and 3D primitives (spheres, lines, points, etc.). Regards, Martin

0
source share

Visad

VisAD is a Java component library for interactive and collaborative visualization and analysis of numeric data. The name VisAD is the abbreviation for Visualization for Algorithm Development. The system combines:

  • Using pure Java for platform independence and supporting real-time data exchange and interaction between geographically distributed users. Support for distributed computing is integrated at the system level using distributed Java RMI objects.
  • A general mathematical data model that can be adapted to almost any numerical data, which supports the exchange of data between different users, various data sources and various scientific disciplines, and that provides transparent access to data regardless of storage format and location (i.e. memory, disk or remote). The data model has been adapted to netCDF, HDF-5, FITS, HDF-EOS, McIDAS, Vis5D, GIF, JPEG, TIFF, QuickTime, ASCII and many other file formats.
  • A common display model that supports interactive three-dimensional, data fusion, multiple representations of data, direct manipulation, collaboration, and virtual reality. The display model has been adapted for Java3D and Java2D and is used in the ImmersaDesk virtual view.
  • Data analysis and calculation integrated with visualization to support calculation control modes and other complex interactions.
  • Support for two different communities: developers who create domain-specific systems based on VisAD and users of these domain-specific systems. VisAD is designed to support a wide range of user interfaces, ranging from simple data browser applets to those that allow teams of scientists to jointly develop data analysis algorithms.
  • Developer extensibility as many features as possible.
0
source share

All Articles