Porting a Java3D zooming-UI to JME?

i’m developing a new version of a 3D zooming UI system.  the older version was written with Java3D.  i recently discovered JME and am wondering how it may be an improvement instead of Java3D.





http://tinyurl.com/2oc5oa



i’m available to discuss this software if you are interested.  especially if you have JME experience.



XD

Eh? I don't understand any of this… I looked at the screenshots, it looks like a complete mess.

Could you please post a demo video?

http://tinyurl.com/3yqgfg (30sec animated gif repeating, 1.2mb)



in-complete mess  :smiley:

neat :slight_smile:

Ok, I see now… jME doesn't have much in the area of user interface programming, other than the ortho queue which you can't use since you need zooming. The user interface will have to be implemented as 2D sprites drawn in 3D space, and the zooming would be handled by camera movement in and out through some sort of interpolation or bezier curve.

after some experimenting, i think jME is the right 3d engine! :lol:



  • jME + JOGL works on all of my computers, unlike Java3D

  • jME seems to perform better than J3D

  • i'm finding jME's scenegraph API easier to develop with than J3D



i'm going to proceed with it.

(jme + lwjgl) :wink:



keep us posted!

toxcwav, there have been several intentions to write a gui system for jme. There is a swing desktop and I beleive BUI, the Banana User Interface is a pure jme solution and was taken furthest and may proove useful to you. Search for it on the forums.



What are your intentions, what controls?? ( buttons, labels, scroll panes, tables ).



Do ask away if you need some quick pointers to help.




theprism said:

toxcwav, there have been several intentions to write a gui system for jme. There is a swing desktop and I beleive BUI, the Banana User Interface is a pure jme solution and was taken furthest and may proove useful to you. Search for it on the forums.

What are your intentions, what controls?? ( buttons, labels, scroll panes, tables ).


thanks for asking this good question!

Swing is a pixel based UI, meaning its coordinates represent 2D pixel locations and lengths.  (also BUI seems similar to Swing from a brief exploration of its API.  correct me if otherwise).

an alternative to the pixel UI is the "zooming" or "scale free vector graphic" UI (http://www.advogato.org/article/788.html).  an example of a zooming UI (ZUI) is the Piccolo framework (java2d based - http://www.cs.umd.edu/hcil/piccolo/ , but they are no longer developing it).  in a ZUI, coordinates may be specified as relative to the locations of other components, and sizes specified as proportional to other components (but it is helpful to constrain the aspect ratio, especially for text).

i am not aware of any zooming UI frameworks that operate in three dimensions; only 2D is really necessary.  the advantages of using a 3D engine includes hardware acceleration, Z-ordering and layering, and the ability to import 3d models / icons and design new kinds of 3D widgets, layouts, and displays.  a scenegraph naturally represents the "fractal hierarchy" of embedded and relatively arranged visual features in a ZUI (which can become quite complex and deep).

i am also not aware of any real practical use for ZUIs -- currently, they seem to be experimental or research oriented.  one could find arguments why ZUIs may be ergonomic and efficient, but i also find myself driven from an artistic / sci-fi / gaming motivation.

some related projects:

  • Sun's Project LookingGlass (http://www.sun.com/software/looking_glass/).  it operates in 3D (Java3D) with some special 3D widgets. they are using a relatively "conventional" approach of basically emulating a 2D desktop environment and adding 3d effects and 3d widgets.  (another project, Sun's Java Desktop, is 2D and directly emulates the Windows UI).


  • Beryl / Compiz.  it is not true 3d since it basically textures application windows onto different 3d surfaces, and the applications or widgets are not quite aware of any 3d abilities of the Beryl system.

  • complete immersive first-person 3D (such as Sun's Project Wonderland https://lg3d-wonderland.dev.java.net/  or Second Life, etc).  One could design a ZUI system that can be placed anywhere inside a 3d multiverse (ex: on a 2d surface). 


  • Opencroquet (http://www.opencroquet.org) is a smalltalk based 3d multiverse, and the principles i'm discussing can also apply there.



designing a 3d UI is not the entire focus.  it is also to invent new ways to communicate and create multimedia.  this involves some semantic (rdf) and networking components that i have designed to interact with UIs in an abstract way (text, swing 2d, zui 3d, etc..).  it is similar to the 'naked objects' design pattern (http://en.wikipedia.org/wiki/Naked_objects http://www.nakedobjects.org ).  in general, everything visible on the screen (or audible by speaker, etc..) directly represents object instances that fall within the operator's changing "focus" (what the user wants to be aware of at any given time).  monolithic applications (such as a web browser or word processor) would be irrelevant, since the "computation space" *IS* the web itself.  does that make sense?  let me know.

if you have any questions, corrections or disagreements with what i wrote above, please reply.  i'm curious to know what you think!

how about turning it into something similar to microsofts Seadragon/Photosynth :slight_smile:

yes! Seadragon ( http://labs.live.com/Seadragon.aspx )  it seems related to photo-organizing. they mention:


"Its aim is nothing less than to change the way we use screens, from wall-sized displays to mobile devices, so that visual information can be smoothly browsed regardless of the amount of data involved or the bandwidth of the network."


i forget to mention before: the most capable ZUI i've seen is perceptive pixel multitouch ( http://www.perceptivepixel.com ).  i can't find any information about the software.  wondering how they developed it, and if they can adapt it to also work with keyboard+mouse PC's?  ;)