I’m putting the last hand to a 3D Menu library featuring:
Dynamic 3D fonts, loadable on-the-fly from TTF files!
Labels, clickable Buttons, Sliders, Carousels (that's it for now!)
Panels, and transitions between them (immediate, sliding, rotating...)
Swing-like architecture
I intend to make it easy to use, in roughly the same way as Swing, but using JME Node transformations for simplicity.
I only post a screenshot for now, for I have still a bit of polish to do, but does any of you have special requests? Do you think this is useful*, and what would like to see next?
* I don't intend to re-do NiftyGUI, this lib won't feature XML loading for example, but the 3D Fonts smight come in handy. Plus, there might be some applications for a 3D holographic-style menu :)
Sounds like something similar that I’m working on to redo the menus and settings screens in Mythruna. I don’t have 3D fonts but the gui supports it. I wanted 3D and flexibility to do a menu like this:
Mine is made of a few standard app states and controls that are useful on their own and I may post them individually at some point before I package the full lib. Together I bundle them into some Node subclasses to make convenient Labels, Buttons, etc. (that are all just regular nodes and controls under the covers) with custom style support similar to CSS.
Hopefully I will get mine to the point of publishing soon, too. It will be one of two community SDK plugins I push out at some point. The other being an improved input management thing that wraps InputManager.
Mmm, support for TTF fonts is interesting as the limitations of bitmap fonts are a nagging worry (missing characters etc). How much slower than bitmap text is it though? I guess once you create the mesh in the first place not much?
Indeed, I tried to lazy-load the whole Glyph Meshe thing, so that each font can keep track of meshes already created; but it still takes time creating the string.
A proper Loader would be indeed nice, but I’m not sure I have the knowledge to make it?
And, perhaps more importantly, my lib…
…Uses Java3D. I load a TTF font, create a Font3D from it, then copy the mesh data back to a Mesh object. Works neatly, but I’m not sure that’s ok by JME licence? If they are compatible, I could just copy the relevant code though.
You can combine things into a GPL piece of software but then they basically become GPL (that’s what people mean when they say it’s viral). Licenses like the BSD license allow you to do this when including it in some other thing.
You cannot include GPL works in a less restrictive license, though. ie: you can’t go the other way. So JME licensed stuff cannot include GPL code unless it is a completely separate module… and then Richard Stallmen still disagrees with that interpretation since he believes even loading a jar file counts as linking.
@carpentier-ch said:
So, I guess I can only make the library as a BSD license then?
If I understand correctly: No, it means that you can not use (copy or modify) code from or link (Stallman considers using a JAR-file as linking) to Java3D since that is GPL. If you do you may only release your code as GPL (that's the viral part).
But I think that Java3D might have the GPL-linking exception in the license. I think that means that you could release your code using any license as long as it only relies on other people downloading Java3D seperatly and your code calls into that JAR-file.
Java3D is GPL 2 + GPL linking exception, as far as I understand (I’m not really at ease with that licensing thing) it allows to link to Java3D without altering my project license!
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version.
IANAL but I think that might actually do the trick. 1) You are free to link against Java3D without GPL going viral into your project. 2) You are allowed to copy & distribute the resulting executable. The only question I have is if this extends to copy & distribute the Java3D-jar. I think so but I have no special insight into this, I’m just a coder
Yeah, that would be the worry. A commercial developer using it would need to package up the Java3d library as part of the install. If that then starts infecting the whole project with GPL then that would be a problem.
I don’t know who’s officially in charge of the Java3D project any longer, but getting in touch with him would be a good place to start. Try open a discussion about a license change if you’d like. Alternatively you could ask for a separate licensing specifically for this project.