A 3D image viewer, with jMe?

Hi all,

I wish to build an image viewing application in which the images are scattered over a 2D plane, and the user hovers over them, clicking on one in order to view it full sizeview its details.

I want to do this thing in Java, and am looking for the best framework for it.

This app does not need to be a web-app, and it does need to handle large amount of images concurrently.

I ended up in the Java 2D3D game engine scene, thinking this would be a good way about it (want to stay away from FlashJavaFX).

My needs are quite modest, 2D will suffice.

I checked out Slick2D which looks appropriate, but has VERY little documentation.

I checked out PulpCore which looks cool as hell, but doesn't target desktophardware accelerated apps.

I checked out quite a few other things, and finally thought about using a 3D engine such as jMe.

My questions:

  1. Do you think jMe is a good choice for this kind of app, seeing that jMe is oriented towards 3D games, and I need a specialized image viewer? If not, any other suggestions?

  2. How hard will it be to implement the above with jMe? Feeling kinda outta scope here, and wish to know how far away am from base…

    Thanks :wink:


  • Can jME support having hundreds of images scattered over the plane?
  • In order to direct my learning curve towrads my target: Can you give a general outline of how such an app will be implemented via jME, i.e. will the images be textures over polygons is there a dedicated Image2D class for this or something similar… ?


I think that jME could be an interesting choice because it gives you functionality that you sometimes have to fake with 2D engines…  You can explore slight variations with a 3D engine that straight 2D doesn't allow!

Well, I would start using Quads with applied Textures.

Depends on whether you want to use jME2 or 3, there are some further tweeks, which can help you improve performance :wink:

A question would also be: Does the user have to see ALL (hundreds of) images? Or will he only see some of them?

(Because jME will only render as few as you can actually see)

But all in all, I think some hundreds of Quads should be perfectly fine. (Try to share the Quad Mesh though ;-])

The cool think of a 3D Engine is, of course, the 3D part :smiley:

So put some nice Particles and 3D Effects into it :smiley:

tim8dev makes wise suggestions  :wink:

tim8dev said:

But all in all, I think some hundreds of Quads should be perfectly fine. (Try to share the Quad Mesh though ;-])

I have a feeling that the last half of that may be a bit confusing to someone who hasn't done much work with 3D graphics.  Please don't be offended if you already know what I'm about to say!  What he means by 'sharing' the mesh is that the same mesh data is used to render the objects.  I, personally, wouldn't worry too much about doing this until you're up in the range of thousands of different objects in the scene.  Most integrated graphics cards today are more than able to handle hundreds of simple 3D objects floating (or sitting) around a scene.

Fair enough :slight_smile:

I'm starting with the basics.

Thank you both for your help :smiley:

I've stumbled upon something, and would like to make sure -

Cannot have non 2^n sized textures, can I ?

(for allnone graphics cards)

Is there a software solution for this?

(besides changing the actual sizes of the images, which isn't really possible, because the whole point is to view them as-is)

Thanks (!)

jme3 itself supports non n^2 textures but some graphics cards dont.

Is there a way to accomplish my goal (image viewer hovering over the plane of images), with jME ?

A part of that would be the ability to display .jpg images in their exact arbitrary sizes, with whatever video card or no video card… i.e. is there a workaroundreduction to 2Dspecial Image classsomething ?

… cause I wanna use jME, it looks highly capable and well documented, but I still kinda dunno if what I'm after is possible… thanks.

Cards made during [or after] 2005 will generally support non-power of two textures…  You could also change the images in java to add some blank space around the edges to bring it to a n^2 x n^2 size (while simply creating the jME quad to be the size of the image you want to show)