Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/papadanku/pythonicengine
My take on Coder Space's Python 3D Engine Series.
https://github.com/papadanku/pythonicengine
opengl python sphinx
Last synced: 5 days ago
JSON representation
My take on Coder Space's Python 3D Engine Series.
- Host: GitHub
- URL: https://github.com/papadanku/pythonicengine
- Owner: papadanku
- License: bsd-3-clause
- Created: 2023-03-10T05:12:01.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-02T13:06:22.000Z (12 days ago)
- Last Synced: 2024-11-02T14:17:58.116Z (12 days ago)
- Topics: opengl, python, sphinx
- Language: Python
- Homepage: https://papadanku.github.io/PythonicEngine/
- Size: 36.5 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 3D-Engine-Python
My take on Coder Space's Python 3D Engine Series.
## Differences
- Code is from myself following Coder Space's video tutorial
- Included documentation on how the program's modules work## Modules
Module | Description
-------|-------------
`camera.py` | Camera data
`light.py` | Sunlight data
`main.py` | Main application
`mesh.py` | Mesh material information
`model.py` | Models' rendering information
`scene_renderer.py` | Scene rendering information
`scene.py` | Accumulated scene objects
`shader_program.py` | Mesh shaders
`texture.py` | Raw texture data
`vao.py` | Vertex Array Objects
`vbo.py` | Vertex Buffer Objects## Rendering Process
Step | Code | Description | Generated/Processed Data
-----|------|-------------|-------------------------
0 | `def __init__()`| Create OpenGL information | OpenGL version • Window information
1 | `self.light = Light()` | Create sunlight data | Color • Orientation • Matrices
2 | `self.camera = Camera(self)` | Create camera data | Orientation • Matrices
3 | `self.mesh = Mesh(self)` | Create all mesh data | VBOs • Shaders • VAOs • Textures
4 | `self.scene = Scene(self)` | Accumulate all mesh instances in a scene | `uniform` data for each meshes' instance
5 | `self.scene_renderer = SceneRenderer(self)` | Render the accumulated mesh instances and post-processing## Notes
- Use literals to initialize data, such as `[]`
Initialization (`list()`) changes how data's stored.
- For each mesh, create *one* shared set of VBO, VAO, and shader programs
We change each mesh instance's geometric properties through `uniform` attributes.