Alternative to Java3D
Asked Answered
C

5

13

Colleagues of mine are using Java3D for visualizing results of finite element simulations. The problem is that Java3D seems to be somehow dead, and it is a pain on OSX. This is one of the reasons we are looking for alternatives. Quite a lot of work has gone into our current implementation based on Java3D, so the question is how much effort it would be to move away from Java3D. JOGL is one option, but looks like a lot of work.

Has anyone suggestions for alternatives? Any experiences with such a migration?

Chlorothiazide answered 7/8, 2011 at 14:16 Comment(4)
How do you conclude that Java3D is dead and why is it a pain on OS X?Disperse
It's not dead, but development has been put on hold since 2008.Cyclic
(Sorry for the delay, I was on holiday.)Chlorothiazide
I consider Java3D dead because development seems to have stopped, despite there are still problems, at least on OSX. It is a pain on OSX because there is no current version awailable for OSX - which means that 1) the Java3D code that runs on Windows and Linux wont run on OSX, and 2) Java3D panes cover all popup menus (despite playing around with lightweight/heavyweight), ie. popup menus are unusable when they reach into Java3D panels. So, we cannot seriously ship an OSX version of our software...Chlorothiazide
V
10

JOGL provides a direct access to OpenGL functions. These functions are mostly low level draw functions, and you have to deal with the 'state machine' nature of OpenGL while you are programming.

Java3D abstracts this state machine. It allows you to define a tree of graphic objects, placed in a virtual scene, and rendered by a camera. The manipulation of these graphic objects is easier with such a tree structure. Then, it's up to Java3D to walk through this tree and call the OpenGL drawing functions.

This kind of library is called a scenegraph. There are many scenegraph libraries in java, some are implemented on top of JOGL. I don't have a list, but this keyword will help you in your research.

In our project, we tried 3 or 4 different libraries, but no one filled all our requirements. We ended writing our own scenegraph library (on top of JOGL).

Voroshilovsk answered 7/8, 2011 at 18:52 Comment(1)
Thanks barjak - your answer provides very good orientation in what to look for.Chlorothiazide
P
6

jMonkeyEngine, Ardor3D, jPCT or Xith3D are much better options these days.

Pericycle answered 6/9, 2011 at 18:52 Comment(0)
C
3

JOGL is indeed a good option. However, it's simply a wrapper library for OpenGL. That means you'll still have to do a lot of the legwork yourself. If you're comfortable with that and it suits your needs, it's not actually all that difficult. But it might be a bit time consuming and not knowing your current code-base I don't know how easy the transfer is.

You could however go for an engine which might use JOGL. Something like JMonkey Engine to purely name an example. If you look, you'll surely find some others. Have a look at those, their ease of use and their functionality to see what best suits you. They probably won't take all the work away from you, but they might make it a bit easier.

Cyclic answered 7/8, 2011 at 14:25 Comment(2)
Thanks for your answer, I will see what I find!Chlorothiazide
Ardor3D, 3DzzD, JReality, Xith3D, Aviatrix3D and Java3D rely on JOGL too.Fetterlock
P
2

See also this Java 3D forum thread : Java3D viability questions... https://forums.oracle.com/forums/thread.jspa?threadID=2150209&tstart=15

August, InteractiveMesh

Potentiality answered 17/8, 2011 at 7:29 Comment(1)
The official Java3D forum moved to another location since its "resurrection": forum.jogamp.org/java3d-f3728156.htmlFetterlock
F
2

I use JOGL 2.0 (which is a low level Java binding for the OpenGL (and OpenGL-ES) API. I have recently helped someone to revive Java3D. Now, it relies only on JOGL 2.0 and it works better, especially on Mac OS X. You can find the source code here: https://github.com/hharrison/java3d-core

Let's have fun. It is actively maintained anew ;)

P.S: I wrote a detailed article to explain how to use the very latest version of Java3D (1.6) here.

Fetterlock answered 24/2, 2012 at 12:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.