Should I use Java3D in my aplication?

hello,

I need to build a networked virtual environment, and need to create the 3d space, and some 3d objects to play around. I asked at the JOGl forum if using JOGl was my best choice, and they said that I should use Java3D or Xith3D:

http://www.java-gaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=jogl;action=display;num=1087577051

As far as I know, I would get best performace using Opengl, and would get the project better organized and would deal with the 3D objects in a network better using Java3D or Xith3D. Am I correct?

Also, I would like to know if Java3D really is slow, takes more space, more memory and stuff, is it true?

Is it possible to use Java3D in my aplication? Couse a important part of the project is study he behaves of the virtual environments when more users connect to it. Would it be a issue when sending packages over the network with informations about the objects(like position, moviments, if it´s selected by other users and more)?

Thanks for ya help.

uderman

[quote]As far as I know, I would get best performace using Opengl, and would get the project better organized and would deal with the 3D objects in a network better using Java3D or Xith3D. Am I correct?
[/quote]
No. The high-level system are built to keep performance high in complex environments. For simple environments, you will be faster with low-level APIs like JOGL, but the higher the structures get, the more you’ll start to reinvent Xith/Java3D.
Maybe your scenestructure doesn’t match a scenegraph; in this case, yes, start with JOGL and build your own high-level stuff.

Depends. Mostly yes. For a VR-type of application you might draw benefit from Java3Ds asynchronous behaviour system. A thing that Xith doesn’t have. Or if you wanna run in a CAVE… that’s what Java3D was made for.

This is more a networking question and doesn’t depend so much on the rendering API.

[quote] Depends. Mostly yes. For a VR-type of application you might draw benefit from Java3Ds asynchronous behaviour system. A thing that Xith doesn’t have. Or if you wanna run in a CAVE… that’s what Java3D was made for.
[/quote]
As I do this sort of work for a living, I’m going to have to register a strong disagreement here. Asynchronous changes to a scene graph really don’t help writing a large scale application at all. In reality, what happens is that it causes a lot of horrible rendering artifacts. For example, getting two transforms updated at different times in the tree leads to odd movement (jitter) of objects. Every real world Java3D app ends up synchronising every access to the scene graph through a single WakeupOnElapsedFrames() behaviour. Perhaps they’ll also use the AWT event behaviour too, but all the others are ignored. They’re great for very simple apps, but for anything robust, they don’t cut it. In that respect, Xith3D, Java3D, Aviatrix3D and all the other scene graph APIs end up doing and looking like exactly the same thing.

Hmmm…

I am using multiple asynchronous WakeupOnElapsedFramesBehaviors, as well as the AWT behaviors, and have had a perfectly good experience with them. In fact, I have found it to be very nice for partitioning off my behaviors. Some behaviors wake up every frame, and some every third frame. I can tune each behavior separately, as needed. Depends on what it is being used for, I guess.

In our case, we are writing a strategy game, not an action game with a lot of animated stuff going on all of the time. But there are multiple animations, particle systems, morphing behaviors, picking, etc. all going on. Some of our behaviours are driven by external (e.g. network) events, and some by user input, and some by elapsed frames. I haven’t seen any “jitters”, per se. I am not entirely happy with the response time of the AWT event handling, but it has not been a big issue for our game, so far.

BTW, we are using Java3D.

Interesting to hear. I considered FlyingGuns to be a small thing … there a single WakeUpOnElapsedFrame drives the whole game, all effects and so on…

Sure, you cannot control camera and a moving object it points to by different behaviours, just bc. of the jitter.

I felt that behaviors waking up on collisions or so would be used for large-scale applications giving a more autonomous habit. But of course that has been a guess.

Also add www.mojomonkeycoding.com to the list 3d for Java. The developers are very active.