2010-02-06 14 views
6

Así que no estoy seguro de cómo stackoverflow amigable es esta pregunta, ya que no tiene una respuesta clara y clara, pero aquí vamos ...sugerencias para una biblioteca de representación gráfica en 3D?

Tengo un programa de Java que genera datos para un gráfico dirigido. Ahora necesito renderizar este gráfico. Los datos deben estar dispuestos en 3D, y quiero poder definir en qué plano vive un borde. (Cada borde solo necesitará ocupar 1 plano del espacio 3D). También necesito la habilidad de navegar alrededor del gráfico. Como sé que este tipo de cosas son difíciles, voy de compras.

Hasta ahora he mirado hacia (en ningún orden en particular):

  • JUNG: carece de soporte 3D
  • Cytoscape: no está seguro de cuánto voy a ser capaz de definir el dibujo de borde , no he visto una aplicación bioinformática no de él todavía
  • JGraph: yo no vi ninguna aplicaciones 3D todavía
  • Perfuse: parece prometedor, ¿alguien sabe algo más al respecto?
  • Gephi: Documentación parece escasa
  • de procesamiento: tiene esto juega bien con java?

También estoy considerando hacer una combinación de renderizado opengl + swing para crear un gráfico 3D a partir de múltiples gráficos 2D.

Tampoco soy adverso a la idea de vincular de otro idioma

alguna idea? Gracias.

Respuesta

2

Yo recomendaría el uso de Java 3D para la visualización de la parte

para hacer el diseño de la gráfica se podría buscar una algoritmos en JUNG y comprobar si el se puede extender fácilmente a 3D.

JUNG layout demo

+0

Terminé yendo por una ruta diferente, pero esta es la más cercana. Como estamos haciendo muchas cosas personalizadas, vamos a combinar un par de técnicos diferentes. – Sandro

0

es posible que desee considerar python. matplotlib de pitón. Probablemente tengas que enviar tus datos a un formato intermedio y ejecutar un script de Python en los datos porque matplotlib tiene enlaces cpython, pero la biblioteca tiene algunas características excelentes para graficar e informar.

+0

Gracias, estaba pensando en usar matplotlib, ¿sabes de lo más alto si tiene soporte para diseños personalizados? (Como probablemente necesite) – Sandro

+0

hasta donde yo sé, permite cualquier tipo de diseño que te guste, pero podría estar utilizándolo "dentro de la caja", así que quizás no he encontrado problemas de diseño con los que te puedas encontrar. – joejoeson

0

He jugado con Processing y OpenGL last term. No estoy seguro si dibujar planos 2D es el mejor enfoque. Pero puede hacer ciertamente dibujar sus puntos de gráfico en 3d usando Processing si lo desea. Aquí hay un applet del openprocessing.

Se estudiaron señal de procesamiento de un bit y que usamos Octave y GNUPlot para trazar señales en 2D (usando trama, vástago, etc.) y 3d (usando malla)

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

Googled gnuplot java y parecía que se encuentran algunos enlaces buenos ...

Echa un vistazo a los enlaces Java en GnuPlot Programming Interfaces, como: this, javaplot, jgnuplot, etc.

Para algunos gráficos duros, ya sea en 2D o 3D, gnuplot parece ser una opción bastante poderosa.

+0

El problema es que no tengo datos de coordenadas. En cambio, solo tengo una lista de los nodos que apuntan a otros nodos. ¿Sabes si alguna de esas herramientas hará eso por mí? – Sandro

+0

Lo siento, he entendido algo más por la representación gráfica en 3D :) ¿Está más cerca de lo que estás buscando? http://www.openprocessing.org/visuals/?visualID=2049 –

0

eche un vistazo a Java vtk. vtk es una bestia compleja, pero muy poderosa.

1

Hay algunos visualizadores de gráficos 3D por ahí.

Los espectadores 3D que conozco son:

  1. UBIGraph - la página demos tiene algunas animaciones agradables en él.
  2. Wilmascope - de código abierto y escrito en Java 3D

Desde wilmascope es de código abierto, si los diseños no le conviene que podría extender para satisfacer sus necesidades tal vez. Sin embargo, no es fácil establecer un gráfico en 3D.

También puedes echar un vistazo a Cuttlefish en sourceforge. Hay un video on YouTube que muestra un ejemplo de su uso.

0

NAViGaTOR le permite corregir nodos en diferentes planos 3D. Entonces, si arreglas los nodos adyacentes de un borde en el mismo plano, entonces el borde correspondiente también estará en ese plano. Sin embargo, no admite bordes dirigidos: obtendrá una representación no dirigida de su gráfico.

0

Te sugiero que pruebes http://code.google.com/p/jzy3d, lo que realmente te ayudará a hacer lo que quieras. Es una biblioteca java para trazar superficies, dispersiones y primitivas 3d (esferas, líneas, puntos, etc.) rápidamente. Saludos, Martin

0

VisAD

Visad es una biblioteca de componentes Java para interactivo y de colaboración visualización y análisis de datos numéricos. El nombre VisAD es un acrónimo para "Visualización para el desarrollo de algoritmos". El sistema combina :

  • el uso de Java puro para la independencia de plataforma y para apoyar el intercambio de datos y la colaboración en tiempo real entre usuarios distribuidos geográficamente .La compatibilidad con la informática distribuida se integra en los niveles más bajos de del sistema utilizando los objetos distribuidos de Java RMI.
  • Un modelo de datos matemática general que puede adaptarse a prácticamente cualquier dato numérico, que soporta el intercambio de datos entre los diferentes usuarios, fuentes de datos diferentes y diferentes disciplinas científicas, y que proporciona acceso transparente a los datos independientes del formato de almacenamiento y ubicación (es decir, memoria, disco o control remoto). El modelo de datos ha sido adaptado a netCDF, HDF-5, FITS, HDF-EOS, McIDAS, Vis5D, GIF, JPEG, TIFF, QuickTime, ASCII y muchos otros formatos de archivo.
  • Un modelo de pantalla general que admite interactividad tridimensional, fusión de datos, vistas de datos múltiples, manipulación directa, colaboración y realidad virtual . El modelo de visualización se ha adaptado a Java3D y Java2D y se utiliza en una pantalla de realidad virtual ImmersaDesk.
  • Análisis de datos y cómputo integrados con visualización para soportar la dirección computacional y otros modos de interacción complejos.
  • Soporte para dos comunidades distintas: desarrolladores que crean sistemas específicos de dominio basados ​​en VisAD y usuarios de esos sistemas específicos de dominio. VisAD está diseñado para admitir una amplia variedad de interfaces de usuario , que van desde simples applets de explorador de datos hasta aplicaciones complejas que permiten a los grupos de científicos desarrollar algoritmos de análisis de datos en colaboración.
  • Extensibilidad del desarrollador de tantas formas como sea posible.
+0

Esto se parece más a una biblioteca de trazado. – ziggystar

Cuestiones relacionadas