The Forge

I've been wanting to make a Java-based implementation of Wings3D for quite some time now. I really like Wings a lot. It is extremely simple to use, but still pretty powerful. (Yeah, it doesn't have all of the features of 3DS Max or even Blender, but they're slowly heading in that direction.) Wings, though, was written in Erlang, an language that nobody knows. I am of the opinion that they would be able to get a lot more done if they would have done it in a language that more people either know, or are willing to learn. Erlang is way out there, and though it may be gaining in popularity, I think it would have been a much better decision to do it in Java, because they would have had more help. But their main developers knew Erlang, so that is what we're stuck with.

So anyway, I've finally gotten around to doing something with this idea. I've implemented the winged edge data structure that Wings is named for, which took some time, but is a pretty reasonable data structure. Rendering speed, though, is not very good. I'll probably need to turn the rendered data structure into vertex buffer objects, and update those whenever the model is modified.

Creating a primitive type is probably going to be quite a bit of work. I did a cube, which was probably the simplest, and it took quite a while to do. Perhaps this is one area that others can contribute to, once the project gets going. I'm thinking about making this open source as well.

Anyway, below is a screenshot of what it looks like right now.

screenshot1.png

The basic things that a 3D modeler needs before it is of any use at all, is this:

  • Ability to start from some sort of primitive, like a cube, or possibly just start adding points in.
  • Ability to select things of interest (vertices, lines, faces, meshes, etc.)
  • Ability to move points around, and preferably also lines and faces.
  • Ability to add in more stuff (like extrude)
  • Ability to delete stuff
  • Ability to edit material properties, even if it is just colors.
  • Ability to save and read to at least one file format. A native file format is OK, because at least you can reload something that you've been working on, but preferably, this would be something other modelers or programs could open up.

So once I've got those things implemented, I'll consider this version 1.0! Obviously, a lot more would be needed to be of any use, but that's the bare minimum.