A demo of screen-space picking, 3D-rendering and serialization as well as deserialization.
- Arrow keys and w, a, s, d, q, e controls zoom and rotation in object-space.
- mouse buttons click and drag as well as scrolling controls the same.
This was created as a test of my theories of screen-space picking and drawing to texture.
The solution was developed and tested with the following tech and their respective versions:
- C++ 11 - Programming language
- SDL 2 - Cross-platform multimedia library
- OpenGL 4.3 - Rendering library
- GLSL 4.3 - Shading language
- GLM - Math library
- Python 3.5.2 - Programming language
- Blender 2.82 - Mainly a 3D-suite
The application includes a simple exporter script for blender that export a given mesh to a file. The main application then reads this kind of file and creates a 3d object at origo.
[](./docs/f3d file format%20-%20v1.pdf)
Simple binary file format that contains mesh information.
- Optimize draw (click-drag).
- The current implementation is CPU-heavy and this could be partially implemented on the GPU via GLSL.
- Implement different draw modes.
- Older version used a "dotting"-approach to drawing, latest version draws a line in a very non-optimized manor.