What kinds of experiences does everyone here have with 3d in Java?

I’m looking at using Java for a 3d game, nothing too big - but doing things Unity (Free) can’t do. The problem with this is the #1 contender, jMonkey, seems… Really immature and not well put together (At least in my opinion), not to mention the fact it doesn’t seem very popular, and the games listed on their site are less than stellar (Good games, but don’t exactly show off the supposed features).

The other big one I’ve been looking at libgdx, which I’ve messed around with for a bit and… It’s awesome for 2d, but everything I’ve read seems to point towards the 3d being immature and unfinished.

So, I’ve come here to ask all of you: What 3d solutions have each of you used, and what have your experiences been?

LWJGL

hmm not called trollwarrior without reason eh :slight_smile:

Cas :slight_smile:

I wouldnt judge jMonkey by the games made with it, simply because there’s a ton of newbie/novice programmers out there. I mean hell, look at JGO’s WIP section. The first page is chalked full of extremely low quality games, but that doesn’t mean the libraries that created them are bad. A fair amount of them are quite decent, and there’s a handful of gems in their too. So I wouldn’t judge jMonkey too harshly.

Still having said that though, if I was going to make a 3D game personally I’d just straight LWJGL.

I have used both LWJGL and LibGDX. Both were similar experiences due to both havin bindings to underlying OpenGL, except LibGDX has more features like texture loading and so on.

I found it extremely difficult to do anything productive in 3D, due to problems like the gimbal lock. That problem lead to the realisation that math like complex numbers and quaternions were needed to do the things I wanted with 3D, thus making progress difficult. Generally, I am not very experienced in 3D math at all, so this transition was extremely hard for me.

Another thing to keep in mind is that you are probably going to learn OpenGL. Transitioning into OpenGL from the simplicity of Graphics#drawImage() is also not a very easy one to make. Consider viewports, frutrums, batching calls to the GPU, FBO’s, VBO’s, matrix transformations. Gah.

I ended up deciding that I was better off with 2D, until my education (I’m studying math and physics) would turn in the direction of 3D vectors and complex numbers. Luckily for me, this happens in September '14. I have tried using OpenGL multiple times though, and I feel that I got a bit farther each time. So as with any new hard skill, keep trying. :stuck_out_tongue:

I played around with some 3d stuff in libgdx a couple months ago:

If you want to make something serious than it’s definitely Unity, UDK4 or CryEngine. Having a mature graphical interface for designing your scenes, shaders, adding physics or 3D positional audio in a click is invaluable. Also those engines have absolutely gigantic user bases which can offer a lot of help (+ the engines themselves are heavily documented).

However, if you just want to make a small hobby project or a tech demo you can possibly get away with jMonkey as many projects are using it quite successfully. :slight_smile:

I have used JogAmp (JOGL, JOAL, JOCL, …), d3caster, Java3D, Xith3D, LibGDX, JMonkeyEngine 2 & 3, Ardor3D, … I compared JMonkeyEngine with Ardor3D here, we talked about tons of 3D engines here and you can find some tutorials about Java3D here. Each library has its pros and its cons, it’s very subjective. I don’t use proprietary engines, maybe Egonolsen could talk about jPCT. I currently use Ardor3D, I know that LibGDX and JMonkeyEngine are actively developed and maintained. Java3D is in maintenance mode but it won’t evolve. Xith3D is still maintained a bit. 3DzzD is interesting too.