Saturday, June 27, 2009

Selection Box Complete

I've completed work on the selection box tool. You can now drag a box across the screen to select everything inside of it. For example, in the image below, with this tool you can easily select all of the edges in a cylinder along the sides by dragging a box that contains these edges.



The selection box tool works in all modes, including vertices, edges, faces, and objects.

Friday, June 26, 2009

Selection Box

Well, I've spent some time, and got the selection box for group selection to work. You still can't do group selection, but the box that you drag is being drawn.

Thursday, June 25, 2009

OBJ Importer Complete

The OBJ importer is now complete! I'm sure it's not bug free, but it is functional. I was surprised that the adjacency/winged-edge stuff just kind of fell together without much trouble. Then I worked on importing materials as well. Since The Forge does not currently support texturing, basically all texture information within the file is ignored.

Below is my knot that was in Wings3D, colored and everything.



I exported it as an OBJ file, and then imported it back into The Forge:



It actually doesn't look as nice in The Forge right now, because the normals aren't being calculated correctly, so there's no shading being done. But having this importer done is a huge step in the right direction.

A Start on the OBJ Importer

I'm really down to only three major things: some work on the deletion modifiers, box selection, and an OBJ importer. All of these are going to be challenging to pull off and will probably take some time. I've done some work on each of these, so in a sense, you could say that every significant component in The Forge has at least been started on.

Right now, I'm working on the OBJ importer, and making good progress. The geometry is read in and assembled, and you can see in the image below, that this seems to be working. The winged edge data structure isn't being assembled correctly yet, though. I'll need to do some work to determine which edges are adjacent to other edges, and to let each vertex know of an edge that they are adjacent to. Beyond that, I still need to import the material information as well, which will take up a bit more time.

Monday, June 22, 2009

Sphere Primitive

The sphere primitive is now essentially complete. It still has some problems with normals, but I suspect that is actually caused by the normal calculation, rather than the sphere primitive itself. All of the primitives have this problem. It is one of the first bugs that will need to be addressed.

Below is a screenshot of the sphere primitive. At the same time, I decided to add in a lot of polygons to see how much it could handle. It seemed to work just fine, though I have a decent graphics card, which might explain why. This sphere has over 2000 polygons, which I suppose isn't an extremely large amount, but it is enough that I feel safe claiming The Forge can handle small models just fine.

Undo/Redo

I've gotten the undo/redo system working now. I feel lucky, because it is one of those rare times where you type in some code, run it, and it works the first time. Of course, I haven't tested it thoroughly yet, that will come in time. But some basic tests show that is is working for the most part.

Sunday, June 21, 2009

Version 1.0 Plans

I just wanted to make a short post about what's left to do for version 1.0. I'm getting to the point where all major features have been implemented. There are only a few things left to do.

First, I want to implement an undo/redo system. This is important, because you occasionally make mistakes, and of course, you need the program to be forgiving, and allow you to go back.

Second, I want an importer that can read in OBJ files. The exporter for OBJ files is already complete. The importer will be a bit more complicated.

Third, I'm planning on implementing group selection, so that instead of selecting everything one item at a time, you can drag a box across the screen and select everything inside of it.

Fourth, I still need to do some work on the deletion modifiers. In particular, you can't delete faces at all, and the vertex and edge deletion modifiers are limited and buggy.

Fifth, I still need to finish my sphere primitive, which is only partly implemented.

Once these five steps are complete, we'll have a functional alpha version that has all major features implemented, though likely still quite buggy.

After version 1.0 is complete, I'm planning on developing a version 1.1, that has a few more primitive types (cone and torus) as well as a couple more modifiers (especially ones along normals, and possibly an extrude region) and a few more importers and exporters (.dae, .fbx, and .3ds, all of which can be done with the FBX SDK).