Parallax and 3D are different, I know what you mean though. :>
The tricky parts to calculate are coming in diagrams soon. The next few diagrams will consider the problem of "how do we know if a vertex is "inside" a face?" -done
Then we'll consider the problem of "how do we tell if a vertex that was found to be inside a face, is in front of the face (and should be shown) or behind the face (and hidden)? -done
Then we'll introduce the concept of pseudo-vertices. -done
Then we'll consider the problem of calculating where pseudo-vertices should be created, and how to draw or not draw edges depending on the number and type of pseudo-vertices they contain.
Then we'll look at what we can do in the case where a face covers an edge, but doesn't cover either of the edge's connecting vertices.
Finally I'll make some diagrams with test configurations, EG a pyramid in front of a cube, and plot out the default behaviour, the expected behaviour, and how the systems we put in place in previous steps will produce the expected behaviour.
Then I'll make some function templates.
I'll work out which variables need to be sent and returned from the function templates.
Then I'll begin filling in the function templates with code.
I'll be testing as I go... if I have any problems whatsoever understanding what needs to be calculated I will stop and produce more diagrams to make it clearer to myself.
Then finally I hope to end up with a 3D engine. :>
Once that's done I can start with other cool projects such as formalising the way objects are expressed in the engine, implenting support for changing object sizes, face alpha (transparency), reflections, and of course actually building some objects!
An object editor is basically going to be required if we want to make anything more complex than primitives such as squares, triangles, cubes and pyramids.
Aino, I've no idea what the final requirements of an object template will be, but I'm strongly hoping that once I've fleshed it out a bit more, you would be the one to build the 3D object editor for it. :> It would need to allow the user to create and adjust vertex positions in 3D, rotate the object round so that you can look at it, the ability to declare edges and faces, etc. It would need to output a text or lua file which would contain the object function. It would also ideally need to be able to load an object from an existing template file, so that existing objects can be edited. And it also needs to be easy to use!
The editor would run using the same 3D engine that the objects would be displayed in, so I need to finish my engine before you'll be able to get properly involved in that project. Hopefully all this conceptual discussion is sufficiently stimulating to get you thinking about the problem, at least. :>