So, the code is public and its time to tell you about the project.
Its something pure educational. Mostly for my own education, but I think some of you may be interested in this and use it for their own experiments.
If you want to, feel free! Just fork it and play.
Nomen est omen. Simple3D is a very, very, very simple 3D engine.
Its goal is not performance, but clean, structured and portable code and my goal with this is just my own education.
With this project, I wanted to use my knowledge of computer-graphics theory to build a real thing. I decided I would like to go from a pretty low level.
This is the reason, the library can easily been ported to everything, that is abled to draw some sort of pixels. Nothing more, nothing less.
There is plenty of work in this and as this is a freetime-project, I’ll only work on this whenever there is time for it. Change frequency may vary between minutes and years, probably.
However to me this is an interesting project. I learnt alot already and I am sure there is much more to learn from it.
Currently the engine allows the following:
- Create a window for drawing
- Creating different entities (some of them aren’t up to date with the new version. These are S3DCube, S3DRect and S3DTetraeder. I’ll get on this soon)
- Primitives S3DPoint, S3DLine, S3DTriangle and S3DMesh
- S3DMesh allows you to load a complex entity, consisting of different colored triangles, from a file.
- Rotating, scaling and moving entities.
- Rendering your entities on screen, of course :D
I concentrated the platform-specific code (i.e. X11-related code) in as few places as possible, thus its not a hard job to port it to other systems.
However, as I am currently trying to get some features into it, there is really much room for optimization. And its lightyears away from a “state-of-the-art” engine, of course! So if you’re just looking around for a good 3D engine you could use one of the dozens of other engines for productive use. This thing really is for educational purpose ;)
But if you wonder, how 3D graphics can be done - Simple3D is the right thing for you, maybe. Its well documented (I’ll improve this further.) yet but you still need some theoretical knowledge to understand the code.
Anyway, I like the idea of sharing knowledge, so here you go.
Its licenced using the MIT licence, so you’re pretty free with it - but I’d welcome it, if you give me feedback on what you do with it, okay? Thanks.
Have fun with it :)
So long and thanks for all the fish!