Port of the Olc 3D Game engine by Javidx9 to a Python version, to learn more about 3d rendering. This version lacks the features of part 4 atm since I haven't gotten around to doing it.
It is able to render most obj files, with 5 included in the repo.
| File | Contents |
|---|---|
| empty.obj | A Completely empty obj used for testing in the past |
| axis.obj | Containing a 3d model of a axis marking the 3 axis. It is the default. |
| teapot.obj | The famous Utah Teapot model, which was the first Object to ever be modeled in 3d. |
| mountains.obj | A Mountain Range |
| VideoShip.obj | A Spaceship |
If you want to change the file rendered, the string in line 220 of main.py has to be set to the correct file name.
There is a bug where it has problems with clipping Triangles correctly, I have not been able to fix it so far. If you have an Idea, please dm me on Discord (Staubfinger#8070) or open a PR. If you find another bug, please also report/fix it that way.
I know that the code is not that clean, but I am cleaning up a bit atm.
It only has one requirement which is pynput for the controls.
The controls are a bit wonky atm, but I am currently thinking about how to do them best. Current Controls:
| Key | Control |
|---|---|
| w | move forward (relativ to camera) |
| s | move back (relativ to camera) |
| a | turn camera left |
| d | turn camera right |
| up | move up the y axis |
| down | move down the y axis |
| left | move along the absolute x axis (negative) |
| right | move along the absolute x axis (positive) |
If you want to/already have fixed a bug, implemented a feature or do some refactoring feel free to open a PR or Issue.
But Please install black and run format.sh before every commit, or atleast have the last commit of the PR be running it.